Ich will zwei Motoren per Python ansteuern. Ich habe sie verkabelt und mit dem folgenden Programm
-
kann ich sie mit OpenRoberta programmieren/fahren lassen.
Jetzt will ich das gleiche in Python machen.
Meine Beobachtungen sind dabei:
Der folgende Code lässt Motor B voll drehen:
>>> pin28.write_digital(1)
>>> pin29.write_digital(0)
>>> pin30.write_digital(1)
dieser Code lässt Motor B langsam drehen – und gleichzeitig beginnt der Lautsprecher nervig zu knacken:
>>> pin28.write_digital(1)
>>> pin29.write_digital(0)
>>> pin30.write_analog(200)
dieser Code lässt Motor A langsam drehen – auch hier wieder mit Knacken:
>>> pin28.write_digital(1)
>>> pin30.write_digital(0)
>>> pin29.write_analog(300)
Wenn ich beide Motoren gleichzeitig laufen lassen iwll, dann kann ich aber nicht einfach folgendes machen
>>> pin28.write_digital(1)
>>> pin29.write_analog(200)
>>> pin30.write_analog(200)
dann dreht sich kein Motor und es knackt leise.
(Ich nehme an, weil die beiden Pins genau identische PWM Signale abgeben (also was Timing und Amplitude angeht) und so beide Motoren bremsen, wenn beide pins auf HIGH sind.)
So weit ich verstehe, muss ich, um beide Motoren gleichzeitig zum Drehen zu bringen, diese abwechselnd schalten.
Das wird auch hier diskutiert.
Was man ad hoc machen kann, ist so ewtas:
>>> while True:
... pin29.write_digital(1)
... pin30.write_digital(0)
... pin29.write_digital(0)
... pin30.write_digital(1)
Damit drehen sich beide Motoren und man bekommt ein Fiepen.
Meine Fragen:
- Geht das noch besser in Python?
(Also so, dass ich nicht im Main-Loop die ganze Zeit Motorsignale toggeln muss.) - Kann ich die Geräusche abstellen?