Ich will das der 2.Servo (den ich gerade mit raspberry pi programmiere in Python) auch bewegt. Kann mir jemand helfen?
Verfasst: Montag 8. November 2021, 21:27
Das ist der Code
import RPi.GPIO as GPIO
import time
import getpass
OFFSE_DUTY = 0.5 #define pulse offset of servo
SERVO_MIN_DUTY = 2.5+OFFSE_DUTY #define pulse duty cycle for minimum angle of servo
SERVO_MAX_DUTY = 12.5+OFFSE_DUTY #define pulse duty cycle for maximum angle of servo
servoPin = 12
servoPin1 = 40
def map( value, fromLow, fromHigh, toLow, toHigh): # map a value from one range to another range
return (toHigh-toLow)*(value-fromLow) / (fromHigh-fromLow) + toLow
def setup():
global p
GPIO.setmode(GPIO.BOARD) # use PHYSICAL GPIO Numbering
GPIO.setup(servoPin, GPIO.OUT)
GPIO.output(servoPin, GPIO.LOW)
p = GPIO.PWM(servoPin, 50)# set Frequece to 50Hz
p.start(0) # Set initial Duty Cycle to 0
def setup1():
global p1
GPIO.setmode(GPIO.BOARD)
GPIO.setup(servoPin1, GPIO.OUT)
GPIO.output(servoPin1, GPIO.LOW)
p1 = GPIO.PWM(servoPin1, 50)
p1.start(0)
def servoWrite(angle): # make the servo rotate to specific angle, 0-180
if(angle < 0):
angle = 0
elif(angle > 180):
angle = 180
p.ChangeDutyCycle(map(angle, 0, 180, SERVO_MIN_DUTY,SERVO_MAX_DUTY)) # map the angle to duty cycle and output it
def servoWrite1(angle): # make the servo rotate to specific angle, 0-180
if(angle < 0):
angle = 0
elif(angle > 180):
angle = 180
p1.ChangeDutyCycle(map(angle, 0, 180, SERVO_MIN_DUTY,SERVO_MAX_DUTY)) # map the angle to duty cycle and output it
def loop():
passwort = getpass.getpass("Passwort: ")
if (passwort == "123456"):
a = input("Möchten sie den Tresor öffnen oder schließen : ")
if (a == "öffnen") or (a == "Öffnen"):
for dc in range(0, 100, 1): # make servo rotate from 0 to 180 deg
servoWrite(dc) # Write dc value to servo
time.sleep(0.01)
time.sleep(0.45)
for dc in range(180, 0, 1):
servoWrite1(dc)
time.sleep(0.01)
time.sleep(5)
loop()
if (a == "schließen") or (a == "Schließen"):
for dc in range(100, 10, -1): # make servo rotate from 180 to 0 deg
servoWrite(dc)
time.sleep(0.01)
time.sleep(0.45)
for dc in range(0, 180, 1):
servoWrite1(dc)
time.sleep(0.01)
time.sleep(5)
loop()
else:
loop()
def destroy():
p.stop()
GPIO.cleanup()
if __name__ == '__main__': # Program entrance
print ('Program is starting...')
setup()
setup1()
try:
loop()
except KeyboardInterrupt: # Press ctrl-c to end the program.
destroy()
import RPi.GPIO as GPIO
import time
import getpass
OFFSE_DUTY = 0.5 #define pulse offset of servo
SERVO_MIN_DUTY = 2.5+OFFSE_DUTY #define pulse duty cycle for minimum angle of servo
SERVO_MAX_DUTY = 12.5+OFFSE_DUTY #define pulse duty cycle for maximum angle of servo
servoPin = 12
servoPin1 = 40
def map( value, fromLow, fromHigh, toLow, toHigh): # map a value from one range to another range
return (toHigh-toLow)*(value-fromLow) / (fromHigh-fromLow) + toLow
def setup():
global p
GPIO.setmode(GPIO.BOARD) # use PHYSICAL GPIO Numbering
GPIO.setup(servoPin, GPIO.OUT)
GPIO.output(servoPin, GPIO.LOW)
p = GPIO.PWM(servoPin, 50)# set Frequece to 50Hz
p.start(0) # Set initial Duty Cycle to 0
def setup1():
global p1
GPIO.setmode(GPIO.BOARD)
GPIO.setup(servoPin1, GPIO.OUT)
GPIO.output(servoPin1, GPIO.LOW)
p1 = GPIO.PWM(servoPin1, 50)
p1.start(0)
def servoWrite(angle): # make the servo rotate to specific angle, 0-180
if(angle < 0):
angle = 0
elif(angle > 180):
angle = 180
p.ChangeDutyCycle(map(angle, 0, 180, SERVO_MIN_DUTY,SERVO_MAX_DUTY)) # map the angle to duty cycle and output it
def servoWrite1(angle): # make the servo rotate to specific angle, 0-180
if(angle < 0):
angle = 0
elif(angle > 180):
angle = 180
p1.ChangeDutyCycle(map(angle, 0, 180, SERVO_MIN_DUTY,SERVO_MAX_DUTY)) # map the angle to duty cycle and output it
def loop():
passwort = getpass.getpass("Passwort: ")
if (passwort == "123456"):
a = input("Möchten sie den Tresor öffnen oder schließen : ")
if (a == "öffnen") or (a == "Öffnen"):
for dc in range(0, 100, 1): # make servo rotate from 0 to 180 deg
servoWrite(dc) # Write dc value to servo
time.sleep(0.01)
time.sleep(0.45)
for dc in range(180, 0, 1):
servoWrite1(dc)
time.sleep(0.01)
time.sleep(5)
loop()
if (a == "schließen") or (a == "Schließen"):
for dc in range(100, 10, -1): # make servo rotate from 180 to 0 deg
servoWrite(dc)
time.sleep(0.01)
time.sleep(0.45)
for dc in range(0, 180, 1):
servoWrite1(dc)
time.sleep(0.01)
time.sleep(5)
loop()
else:
loop()
def destroy():
p.stop()
GPIO.cleanup()
if __name__ == '__main__': # Program entrance
print ('Program is starting...')
setup()
setup1()
try:
loop()
except KeyboardInterrupt: # Press ctrl-c to end the program.
destroy()