Ich habe einen Kanal-Schalter eines alten CB-Gerätes mit 12 Positionen.
Dieser Schalter hat 5 Kontakte, Binärwerte von 4 bis 17 (befinden sich 2 "hopser" drin).
Nun möchte ich daraus ein Up bzw Down Signal auslesen, also hoch für rechts- und runter für links-drehung.
Ich lese also nun den Port aus, an welchem sich der Schalter befindet, und vergleiche die neue Schalterstellung mit der alten.
Je nach dem ob diese Variable nun größer oder kleiner ist, springe zum jeweiligen Unterprogramm.
Wenn ich aber nun auf Stellung 17 bin, kommt die 4, die ja kleiner ist, die Drehrichtung aber höher ist.
Nun habe ich diesen Code:
Pina.5 ist ein Kontakt, der auf Low geht, sobald der Kanalschalter eingerastet ist.
Irgentwie macht das Programm nur Murks, findet ihr den Fehler?
Dieser Schalter hat 5 Kontakte, Binärwerte von 4 bis 17 (befinden sich 2 "hopser" drin).
Nun möchte ich daraus ein Up bzw Down Signal auslesen, also hoch für rechts- und runter für links-drehung.
Ich lese also nun den Port aus, an welchem sich der Schalter befindet, und vergleiche die neue Schalterstellung mit der alten.
Je nach dem ob diese Variable nun größer oder kleiner ist, springe zum jeweiligen Unterprogramm.
Wenn ich aber nun auf Stellung 17 bin, kommt die 4, die ja kleiner ist, die Drehrichtung aber höher ist.
Nun habe ich diesen Code:
Code:
Bitwait Pina.5 , Reset
Waitms 20
Schalter_a = Pina
Schalter_a = Schalter_a And &B00011111 'nur die ersten 5 pins
If Schalter_a = 4 And Schalter_b = 17 Then Gosub Rauf
If Schalter_a = 17 And Schalter_b = 4 Then Gosub Runter
If Schalter_a > Schalter_b Then Gosub Rauf
If Schalter_a < Schalter_b Then Gosub Runter
Schalter_b = Schalter_a
Return
Irgentwie macht das Programm nur Murks, findet ihr den Fehler?