Hallo 128er,
die Logik deines ersten Codes ist so:
If Bedingung1 then
...
Elseif Bedingung2 then
...
Elseif Bedingung3 then
...
Elseif Bedingung4 then
...
Elseif Bedingung5 then
...
Elseif Bedingung6 then
...
Elseif Bedingung7 then
...
End If
Das zweite sieht so aus:
If Bedingung1 thenif Bedingung2 then
If Bedingung3 then
If Bedingung 4 then
Else
...
End If
Else
...
End If
Else
...
End If
Else
...
End If
Du erkennst sicherlich den Unterschied. Im zweiten Fall kommt er nur weiter zur nächsten Stelle, wenn die Bedingung stimmt.
Beides scheint für deine Überprüfung nicht ganz geeignet zu sein.
Wenn du willst, dass der Taster zwischendurch auch wieder losgelassen wird, bevor es mit der Erkennung der nächsten Stelle weitergeht, dann kannst du das über ein Bitwait erreichen. Da der Taster in Ruhestellung eine 1 gibt, wäre das dann
Biwait Taster, Set
Dann bleibt die Ausführung solange stehen, bis der Taster losgelassen wird. Danach käme dann ein kurzes Wait, um ein Prellen zu übergehen und dann die nächste Abfrage. Oder du benutzt gleich den Debounce Befehl.
Mit Bitwait sähe das dann so aus:
Code:
Bitwait Taster, Set 'Taster losgelassen
Waitms 20 'Prellen abwarten
Bitwait Taster, Reset 'Taster gedrückt
Stelle1 = PinA
Waitms 20
Bitwait Taster, Set 'Taster losgelassen
Waitms 20
Bitwait Taster, Reset 'Taster gedrückt
Stelle2 = PinA
Waitms 20
Bitwait Taster, Set 'Taster losgelassen
Waitms 20
Bitwait Taster, Reset 'Taster gedrückt
Stelle3 = PinA
Waitms 20
Bitwait Taster, Set 'Taster losgelassen
Waitms 20
Bitwait Taster, Reset 'Taster gedrückt
Stelle4 = PinA
Hältst du den Taster gedrückt passiert gar nichts. Drückst du den Taster immer wieder, wird jeweils immer wieder der Wert am Codierschalter übernommen, auch wenn der sich nicht geändert hat.
Nach 4-maligem Drücken werden die 4 Stellen mit der Vorgabe verglichen. Wenn falsch, geht es wieder von vorne los.
Vielleicht hilft dir das ja weiter.
Lesezeichen