Hallo!
Voller freude über meinen RP5 wollte ich gleich mal einige Ideen für den Fahrenden stromfresser realisieren. Leider scheitere ich schon bei meiner 1. Idee, mittels Doppel-Berührung auf den Touchsensor eine Reaktion hervorzurufen.
Eine Variable, die ich zur Verwaltung von Doppel-Berührungen brauche und die im Code immer zwischen 0 und 1 geswitcht wird, nimmt interessanter Weise Werte wie 40, etc. an.
Wie ist das möglich?
Hier der Code - TOUCH_EVAL ist die problematische Variable
Code:
'--------------------------------------------
' Vars
'--------------------------------------------
define TEMP_TOUCH byte
define TOUCH1 byte ' 1. Druck
define TOUCH2 byte ' 2. Druck
define TOUCH_EVAL byte ' Soll Druck evaluiert werden (Verhindern von mehrfachzählen des Gleichen)
define TOUCH_COUNTER word ' Abbruch von Auswertung nach längerer Inaktivität
define MAKE_EXIT byte ' Soll am Ende des Durchlaufes abgebrochen werden?
define MAKE_RUNNINGLEDS byte ' Lauflicht machen
'--------------------------------------------
' Parametric Vars
'--------------------------------------------
define LEDVALUE byte
'--------------------------------------------
' Init
'--------------------------------------------
TOUCH1 = 0
TOUCH2 = 0
TOUCH_EVAL = 1
MAKE_EXIT = 0
MAKE_RUNNINGLEDS = 0
'--------------------------------------------
' Human Interface
'--------------------------------------------
#hi
TEMP_TOUCH = TOUCH ' buffering
IF TEMP_TOUCH < 10 THEN TEMP_TOUCH = 0 ' tolerance
TOUCH_COUNTER = TOUCH_COUNTER + 1
IF TOUCH_COUNTER > 99 THEN goto SET_TOUCH_COMMAND
IF TEMP_TOUCH = 0 THEN TOUCH_EVAL = 1
IF TEMP_TOUCH > 0 AND TOUCH1 = 0 AND TOUCH_EVAL > 0 THEN goto SET_TOUCH1
IF TEMP_TOUCH > 0 AND TOUCH1 > 0 AND TOUCH2 = 0 AND TOUCH_EVAL > 0 THEN goto SET_TOUCH2
GOTO END_TOUCH_DEFS
#SET_TOUCH1
TOUCH1 = 1
TOUCH_EVAL = 0
TOUCH_COUNTER = 0
GOTO END_TOUCH_DEFS
#SET_TOUCH2
TOUCH2 = 1
TOUCH_EVAL = 0
TOUCH_COUNTER = 0
GOTO END_TOUCH_DEFS
#SET_TOUCH_COMMAND
IF TOUCH1 = 1 AND TOUCH2 = 1 THEN MAKE_EXIT = 1
IF TOUCH1 = 1 AND TOUCH2 = 0 THEN MAKE_RUNNINGLEDS = 1
TOUCH_COUNTER = 0 : TOUCH1 = 0 : TOUCH2 = 0 ' reset vars
goto ei
#END_TOUCH_DEFS
LEDVALUE = TOUCH1 + TOUCH2 * 2
if TOUCH >= 200 THEN MAKE_EXIT = 1
print touch, touch_eval, touch1, touch2, touch_counter, temp_touch
'--------------------------------------------
' Environment Interface
'--------------------------------------------
#ei
'--------------------------------------------
' Reaction
'--------------------------------------------
#re
IF MAKE_EXIT = 1 THEN GOTO EXIT
IF MAKE_RUNNINGLEDS = 1 THEN GOSUB RUNNINGLEDS
MAKE_RUNNINGLEDS = 0 : MAKE_EXIT = 0 ' reset reactions
'--------------------------------------------
' Output
'--------------------------------------------
#out
pause 5
GOSUB SETLEDS
' RETURN TO BEGINNING
GOTO hi
'--------------------------------------------
' EXIT
'--------------------------------------------
#EXIT
GOSUB LEDSOFF
beep 600,5,0
print "ENDE"
END
Wie schon erwähnt - ich switch TOUCH_EVAL zwischen 0 und 1 und trotzdem kommen auch andere Werte vor, die mir natürlich alles zusammen haun.
Ich wär euch sehr dankbar für Tips. Ich habs nach etnlichen Stunden Fehlersuchen aufgegeben.
Ciao
Lesezeichen