SG90-Servo

From BITPlan Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

see also https://tutorials-raspberrypi.de/raspberry-pi-servo-motor-steuerung/ 20190612 084823.jpg

Python Source Code

# Servo control
# see https://tutorials-raspberrypi.de/raspberry-pi-servo-motor-steuerung/ 
import RPi.GPIO as GPIO
import time

# set the GPIO pin to be used
servoPIN = 23 

# set the mode
GPIO.setmode(GPIO.BCM)
GPIO.setup(servoPIN, GPIO.OUT)

p = GPIO.PWM(servoPIN, 50) # set pulse width modulation (PWM to 50Hz)
# start the pulswidth with a 2.5 cycle
p.start(2.5) # Initialisierung
try:
  while True:
    p.ChangeDutyCycle(5)
    time.sleep(0.5)
    p.ChangeDutyCycle(7.5)
    time.sleep(0.5)
    p.ChangeDutyCycle(10)
    time.sleep(0.5)
    p.ChangeDutyCycle(12.5)
    time.sleep(0.5)
    p.ChangeDutyCycle(10)
    time.sleep(0.5)
    p.ChangeDutyCycle(7.5)
    time.sleep(0.5)
    p.ChangeDutyCycle(5)
    time.sleep(0.5)
    p.ChangeDutyCycle(2.5)
    time.sleep(0.5)
except KeyboardInterrupt:
  p.stop()
  GPIO.cleanup()

Angle control

# set servo position by angle (degree)
# calculate duty cycle from angle
def setservo(angle):
  if angle < 0:
    angle = 0
  if angle > 180:
    angle = 180
  pwm = angle/18 + 2.5
  servo.ChangeDutyCycle(pwm)