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