Anzeige von verschiedenen Objekten

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Kiwi_gamer01
User
Beiträge: 17
Registriert: Freitag 2. November 2018, 21:55

Ich habe hier ein while schleife die mir elaubt meinen Servo pertastatur zusteuern

Code: Alles auswählen

while 1:
    key = (inkey())
    if key in ['1']:
        print ('1 auf 0°')
        pwm.set_pwm(0, 0, servo_min)
    if key in ['4']:
        print ('1 auf 90°')
        pwm.set_pwm(0, 0, servo_mid)
    if key in ['7']:
        print ('1 auf 180°')
        pwm.set_pwm(0, 0, servo_max)
    if key in ['2']:
        print ('2 auf 0°')
        pwm.set_pwm(1, 0, servo_min)
    if key in ['5']:
        print ('2 auf 90°')
        pwm.set_pwm(1, 0, servo_mid)
    if key in ['8']:
        print ('2 auf 180°')
        pwm.set_pwm(1, 0, servo_max)


In der Bash siet das so aus

Code: Alles auswählen

1 auf 0°
1 auf 90°
1 auf 0°
1 auf 90°
1 auf 180°
2 auf 0°
2 auf 90°
2 auf 180°
2 auf 0°
2 auf 90°
2 auf 180°
2 auf 0°
1 auf 0°
2 auf 0°
1 auf 0°
1 auf 180°
2 auf 180°
Ich würde es aber gerne so aussehen lassen

Code: Alles auswählen

(1 auf 0°  / 2 auf 0°  )
(1 auf 0°  / 2 auf 180°)
(1 auf 90° / 2 auf 180°)
und sobal ich eine Taste drücke soll sich dies aktualisiren und den momentanigen stand anzeigen

Danke im Vorraus[/b]
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Kiwi_gamer01: Das heisst Du musst Dir den momentanen Zustand merken.

Statt ``while 1:`` solltest Du ``while True:`` schreiben, das ist deutlicher. Und was soll der umständliche ``in``-Test mit lauter L isten die jeweils nur *ein* Element enthalten? Da wäre ein ``==`` mit dem einen Element der normale Weg.

Da die Bedingungen einander ausschliessen wären ``elif``\s angebrachter.

Oder man lässt das ganze Konstrukt weg und verwendet ein Wörterbuch das Tastenwerte auf die Werte abbildet durch die sich der ansonsten immer gleiche Code in den ``if``-Zweigen unterscheidet.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

`while 1` sollte `while True` sein. Wenn man mit `in` eine einelementige Liste testen, kann man gleich == benutzen. Wenn Du den Zustand ausgeben willst, mußt Du den Zustand speichern. Also ein Tastendruck ändert nur den Zustand (z.B. state[1] = 90), dann kannst Du den Zustand bei Änderung komplett anzeigen,
Antworten