Seite 1 von 1

Anzeige von verschiedenen Objekten

Verfasst: Freitag 16. November 2018, 20:14
von Kiwi_gamer01
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]

Re: Anzeige von verschiedenen Objekten

Verfasst: Freitag 16. November 2018, 20:25
von __blackjack__
@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.

Re: Anzeige von verschiedenen Objekten

Verfasst: Freitag 16. November 2018, 20:31
von Sirius3
`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,