ich Entschuldige mich im Voraus Für Rechtschreibfehler (Tut mir leid)
Info1: Mein Project ist im grunde ziemlich "simpel". mit python Servomotoren (6 stück) steuern um eine schöne kleine bewegung mit einem Roboterarm zu machen
Info2: ich habe bilder mit einem/ von einem Oscilloscope [weiß nicht wie ich sie hier teilen kann durch das Linux System und weil ich auf einem Raspberry pi arbeite (Bilder sind auf dem Raspberry Pi und auf meinm Handy)]
Info3: die bilder sind ziemlich größ 700x1000 pixel
Folgendes Problem stellt sich mir in den weg: wenn ich das Programm (siehe weiter unten) Starte (zum testen weiß nämlich nicht ob es Funktionirt so wie ich es braue) Läuft es eigentlich ganz gut also der duty cycle kommt usw wenn ich dan das program mit "KeyboardInterrupt" (strg c) Stoppe kappt der Raspberry pi die verbindung nicht sonndern sendet weiter signale/impulse
Falls mir jemand erklären kann wie ich die bilder hier her bekomme wäre ich sehr dankbar und es erklärt sich bbesser mit den bildern
Code: Alles auswählen
import RPi.GPIO as GPIO
import time
servoPIN1 = 26
servoPIN2 = 16
servoPIN3 = 27
servoPIN4 = 17
servoPIN5 = 24
servoPIN6 = 23
GPIO.setmode(GPIO.BCM)
GPIO.setup(servoPIN1, GPIO.OUT)
GPIO.setup(servoPIN2, GPIO.OUT)
GPIO.setup(servoPIN3, GPIO.OUT)
GPIO.setup(servoPIN4, GPIO.OUT)
GPIO.setup(servoPIN5, GPIO.OUT)
GPIO.setup(servoPIN6, GPIO.OUT)
a = GPIO.PWM(servoPIN1, 50) # GPIO 17 als PWM mit 50Hz
a.start(7.5) # Initialisierung
b = GPIO.PWM(servoPIN2, 50) # GPIO 17 als PWM mit 50Hz
b.start(7.5) # Initialisierung
c = GPIO.PWM(servoPIN3, 50) # GPIO 17 als PWM mit 50Hz
c.start(7.5) # Initialisierung
D = GPIO.PWM(servoPIN4, 50) # GPIO 17 als PWM mit 50Hz
D.start(7.5) # Initialisierung
e = GPIO.PWM(servoPIN5, 50) # GPIO 17 als PWM mit 50Hz
e.start(7.5) # Initialisierung
f = GPIO.PWM(servoPIN6, 50) # GPIO 17 als PWM mit 50Hz
f.start(7.5) # Initialisierung
def berechne_duty_cycle(winkel):
return (winkel / 180) * (180 - 90) + 2.5 # berechnet den duty cycle
try:
while True:
servo_positions = [
[90, 90, 90, 90, 90, 90],
# Die winkel zu denen sich dier servos bewegen solle
#[45, 60, 90, 81,"skip","skip"],
#[60, 81, 45, 90,"skip","skip"],
#[81, 45, 60, 90,"skip","skip"]
]
for position in servo_positions:
for winkel in position:
duty_cycle = berechne_duty_cycle(winkel)
if winkel != "skip":
duty_cycle = berechne_duty_cycle(winkel)
a.ChangeDutyCycle(duty_cycle)
time.sleep(0.1)
b.ChangeDutyCycle(duty_cycle)
time.sleep(0.1)
c.ChangeDutyCycle(duty_cycle)
time.sleep(0.1)
D.ChangeDutyCycle(duty_cycle)
time.sleep(0.1)
e.ChangeDutyCycle(duty_cycle)
time.sleep(0.1)
f.ChangeDutyCycle(duty_cycle)
time.sleep(0.1)
time.sleep(1) # Warte 1 Sekunde am Ende jeder Iteration
except KeyboardInterrupt:
a.stop()
b.stop()
c.stop()
D.stop()
e.stop()
f.stop()
GPIO.cleanup()
L.G.