M5Dial BTN: Unterschied zwischen den Versionen

Aus Micropython Referenz
Zur Navigation springen Zur Suche springen
Zeile 104: Zeile 104:
M5.begin()
M5.begin()
BtnA.setCallback(type=BtnA.CB_TYPE.WAS_CLICKED, cb=btnA_wasClicked_event)
BtnA.setCallback(type=BtnA.CB_TYPE.WAS_CLICKED, cb=btnA_wasClicked_event)
</pre>
=== Ergebnisse===
Drücken - Halten - Loslassen:
<pre>
pressed
hold
released
</pre>
Kurz Klicken:
<pre>
pressed
clicked
released
</pre>
Doppelklick:
<pre>
pressed
clicked
released
pressed
clicked
released
double clicked
</pre>
</pre>



Version vom 1. Mai 2024, 18:41 Uhr

Beschreibung

Der M5Dial besitzt einen Taster (Btn). Dieser befindet sich unter dem orangenen Ring unten, unter der M5 Gravur.
Dieser Button kann gepollt werden oder einen Interrupt auslösen.
Es können 9 verschiedene Betätigungen unterschieden werden.

Einrichtung

Er muss nicht initialisiert werden.
Wenn er einen Interrupt auslösen soll, so muss ihm aber eine ISR zugewiesen werden.

Btn abfragen (polling)

M5.update()
  x = BtnA.isHolding()
  x = BtnA.isPressed()
  x = BtnA.isReleased()
  x = BtnA.wasClicked()
  x = BtnA.wasDoubleClicked()
  x = BtnA.wasHold()
  x = BtnA.wasPressed()
  x = BtnA.wasReleased()
  x = BtnA.wasSingleClicked()

Ermitteln der Funktionen

Was bedeuten die verschiedenen Werte? Dazu habe ich einige Tests mit Blockly unternommen.

BtnA_Test_001

M5Dial BtnA Test 001.png
Dieses Programm gibt einen Vorlauf mit grünem Display. Dann wechselt die Farbe auf Rot und die verschiedenen Button Zustände werden abgefragt. Wird True zurückgegeben so wird dieser Zustand in der Konsole ausgegeben.

Auswertung

is released
ist immer True, wenn die Taste beim Abfragen nicht gedrückt ist.
is pressed
ist dann True, wenn die Taste beim Abfragen gedrückt ist.
is holding
ist dann True, wenn die Taste bei der vorherigen Abfrage ebenfalls gedrückt war.
was pressed
wird True, wenn die Taste bei der Abfrage neu gedrückt wurde. Erscheint nur einmal.
was released
wird True, wenn die Taste gedrückt war und bei dieser Abfrage losgelassen war. Erscheint aber nur einmal.
was hold
ist dann True, wenn sie bei der vorherigen Abfrage zum Ersten mal gedrückt war. Erscheint also nur einmal.
was clicked
wird True wenn die Taste bei einer Abfrage gedrückt und bei der nächsten wieder losgelassen war.
was single clicked
habe ich nichts zu ermitteln können.
was double clicked
habe ich nichts zu ermitteln können.

Hier die Ausgabe des Programms wenn die Taste über mehrere Abfragen gedrückt gehalten wird:

--------------------
is released
--------------------
was pressed
is pressed
--------------------
was hold
is holding
is pressed
--------------------
is holding
is pressed
--------------------
is holding
is pressed
--------------------
is holding
is pressed
--------------------
was released
is released
--------------------
is released
--------------------

Wie man hier sieht treten mehrere Werte gleichzeitig auf.

Btn als Interrupt

Es gibt folgende Interrupt Trigger (BtnA.CB_TYPE.):

  • WAS_CLICKED
  • WAS_DOUBLECLICKED
  • WAS_HOLD
  • WAS_PRESSED
  • WAS_RELEASED
def btnA_wasClicked_event(state):
  global x
  pass
M5.begin()
BtnA.setCallback(type=BtnA.CB_TYPE.WAS_CLICKED, cb=btnA_wasClicked_event)


Ergebnisse

Drücken - Halten - Loslassen:

pressed
hold
released

Kurz Klicken:

pressed
clicked
released

Doppelklick:

pressed
clicked
released

pressed
clicked
released

double clicked

Navigation

Zurück zu M5Dial
Zurück zur M5Micropython Startseite