SG90-Servo


Maria Fahl

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()

Python Source Code[edit]

# 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[edit]

# 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)

Angle control[edit]

# 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)
🖨 🚪