M5Dial Touch
Die Verwendung des Touchscreens hält noch einige Hürden bereit.
Das Grundprinzip ist mit M5.Touch.getCount() abzufragen, ob der Touchscreen berührt wird. Nicht berührt wird 0, bei Berührung 1 zurückgegeben.
Das funktioniert aber nicht als Argument für if und while!
Ideen für eine Touch-Service-Routine
Ich möchte eine Funktion schreiben, die aktiverte Touch-Elemente findet.
Sie soll eine ID des aktivierten Elementes und die Dauer der Berührung zurückgeben oder eine Funktion ausführen und ggf. deren Rückgabe zurückgeben.
Datenstruktur für jedes Touch-Element
Die unten dargestellte Datenstruktur soll für jedes aktuell zu überwachende Touch-Element erstellt und in einer Liste zusammengefasst werden. Diese Liste wird an die Funktion übergeben.
# so:
touch_data = {'x1':0, 'y1':0,
'x2':100, 'y2':50,
'id':42,
'func':None}
# oder so:
touch_data_1 = {'startpoint':(0, 0),
'endpoint':(100, 50),
'id':42,
'func':None}
- x1, y1, startpoint
- die Koordinaten oben links des Touch-Elementes
- x2, y2, endpoint
- die Koordinaten unten rechts des Touch-Elementes
- id
- individuelle Kennung des Touch-Elementes
- func
- Name einer Funktion die ausgeführt werden soll, wenn das Touch-Element aktiviert wird.
Identifikation eines Touch-Elementes
Dieser Codeschnippsel kann als Orientierung dienen:
>>> def detect(x):
if 0<x<42:
print('innerhalb')
else:
print('ausserhalb')
>>> x = 25
>>> detect(x)
innerhalb
>>> detect(125)
ausserhalb
Mit folgender Abfrage kann ein Touch-Element identifiziert werden:
if x1<x<x2 and y1<y<y2: # dann wurde ein Element gefunden!


