Hallo,
ich glaube ich kann tatsächlich zum erstenmal jemandem helfen![]()
Also ich habe das selbe Projekt wie du nur mit 4 Tastern. Mein Code funktioniert auch wunderbar. Dies ist er:
Code:$regfile = "m8def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Portd.5 = Output Config Pind.4 = Input Config Pinb.0 = Input Config Pind.7 = Input Config Pinc.3 = Input Taste1 Alias Pind.7 Taste2 Alias Pinb.0 Taste3 Alias Pind.4 Taste4 Alias Pinc.3 Portd.7 = 1 Portb.0 = 1 Portc.3 = 1 Portd.4 = 1 Dim Code(4) As Byte Do If Taste1 = 0 Then 'wenn kein Widerstand vorhandem, d.h. strom fliesst Portd.5 = 1 Code(1) = Code(2) Code(2) = Code(3) Code(3) = Code(4) Code(4) = 1 While Taste1 = 0 Wend Elseif Taste2 = 0 Then Portd.5 = 1 Code(1) = Code(2) Code(2) = Code(3) Code(3) = Code(4) Code(4) = 2 While Taste2 = 0 Wend Elseif Taste3 = 0 Then Portd.5 = 1 Code(1) = Code(2) Code(2) = Code(3) Code(3) = Code(4) Code(4) = 3 While Taste3 = 0 Wend Elseif Taste4 = 0 Then Portd.5 = 1 Code(1) = Code(2) Code(2) = Code(3) Code(3) = Code(4) Code(4) = 4 While Taste4 = 0 Wend Else Portd.5 = 0 'kein strom auf pin End If If Code(1) = 1 Then If Code(2) = 2 Then If Code(3) = 3 Then If Code(4) = 4 Then Portd.5 = 1 End If End If End If End If Loop
Der Code überwacht 4 Pins ob sie verbunden werden (Taster gedrückt) und schreibt die Nummer des Pins in eine Variable.
Diese wird immer weiter nach vorn verschoben, so dass wenn das Array die richtige konstelation aufweist darauf reagiert wird (in diesem fall das bewegen eines Servos, was ich aber noch ändere).
Wichtig hierbei ist nach jedem erkannten Tastendruck die Schleife die solange wartet wie die Taste gedrückt ist. Damit wird verhindert das die Zahl mehrmals in das Array geschrieben wird wenn die Taste nur einmal gedrückt wird.
Ich hoffe ich konnte helfen.
Es grüßt,
Basteltisch







Zitieren

Lesezeichen