M5Dial BTN: Unterschied zwischen den Versionen
Peter (Diskussion | Beiträge) |
Peter (Diskussion | Beiträge) |
||
Zeile 43: | Zeile 43: | ||
: ist dann True, wenn die Taste bei der vorherigen Abfrage ebenfalls gedrückt war. | : ist dann True, wenn die Taste bei der vorherigen Abfrage ebenfalls gedrückt war. | ||
; was pressed | ; was pressed | ||
: | : wird True, wenn die Taste bei der Abfrage neu gedrückt wurde. Erscheint nur einmal. | ||
; was released | ; was released | ||
: | : wird True, wenn die Taste gedrückt war und bei dieser Abfrage losgelassen war. Erscheint aber nur einmal. | ||
; was hold | ; was hold | ||
: ist dann True, wenn sie bei der vorherigen Abfrage zum Ersten mal gedrückt war. Erscheint also nur einmal. | : 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. | |||
Zeile 57: | Zeile 58: | ||
-------------------- | -------------------- | ||
</pre> | </pre> | ||
==== Folgendes zeigt die Reaktion auf:==== | ==== Folgendes zeigt die Reaktion auf:==== | ||
; bei der Abfrage gedrückt | ; bei der Abfrage gedrückt |
Version vom 1. Mai 2024, 18:17 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
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.
Ohne Betätigung wird nur is released zurückgegeben:
is released --------------------
Folgendes zeigt die Reaktion auf:
- bei der Abfrage gedrückt
- is pressed
- vor der nächsten Abfrage wieder losgelassen
- is released
- bei der Abfrage gedrückt
- is pressed
- bei der nächsten Abfrage noch immer gedrückt
- is holding
- vor der übernächsten Abfrage wieder losgelassen
- is released
Damit sind diese drei Werte logisch erklärt.
M5Dial_BtnA_002
Da diese drei Werte am Anfang der Abfrage standen habe ich sie entfernt. Mal sehen, ob dann andere Ergebnisse zum Vorschein kommen.
- Bei grün gedrückt und erst bei rot wieder losgelassen
- was pressed
- bei rot gedrückt und bei Grün losgelassen
- was clicked
- bei grün gedrückt und beim nächsten grün losgelassen
- was pressed und nach dem nächsten auslesen (Wechsel von grün auf rot) was released
- bei rot gedrückt und beim nächsten rot wieder losgelassen
- was hold
Y
__________XXXXXXXXXXXXXXX__________
was pressed
Y Y
_________XXXXXXXXXXXXXX________
was clicked
Y Y
_________XXXXXXXXXXXXXXX___________________
was pressed was released Y Y
_____________________XXXXXXXXXXXXXXXXXXXXXXXXXXX______________
was hold
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)