M5Dial BTN: Unterschied zwischen den Versionen

Aus Micropython Referenz
Zur Navigation springen Zur Suche springen
Zeile 33: Zeile 33:
<br>
<br>
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.
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.
<br>
; 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
:
; was released
:
; was hold
: ist dann True, wenn sie bei der vorherigen Abfrage zum Ersten mal gedrückt war. Erscheint also nur einmal.
<br>
<br>
Ohne Betätigung wird nur '''is released''' zurückgegeben:
Ohne Betätigung wird nur '''is released''' zurückgegeben:

Version vom 1. Mai 2024, 18:00 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.

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
was released
was hold
ist dann True, wenn sie bei der vorherigen Abfrage zum Ersten mal gedrückt war. Erscheint also nur einmal.



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.
M5Dial BtnA Test 002.png

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)

Navigation

Zurück zu M5Dial
Zurück zur M5Micropython Startseite