M5Dial Touch: Unterschied zwischen den Versionen

Aus Micropython Referenz
Zur Navigation springen Zur Suche springen
Zeile 64: Zeile 64:
#    dann wurde ein Element gefunden!
#    dann wurde ein Element gefunden!
</pre>
</pre>
Das muss aber noch getestet werden!

Version vom 27. April 2024, 16:53 Uhr

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!



So funktioniert es:

So nicht:


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!

Das muss aber noch getestet werden!