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!
Mit der Einschränkung umgehen
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.
Als Eingabe bekommt sie eine Liste, die für jedes abzufragende Touch-Element die folgende Datenstruktur enthält:
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!
Das muss aber noch getestet werden!