Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Button Klasse
Nachfolgend eine Klasse (oder Struktur) für einen einfachen Button (Taster):
mbedESP32_blueLeds-Button-Class.ino
#define LED1 19 // GPIO19 #define CENTER 25 // GPIO25 class Button { // oder struct public: const uint8_t PIN; uint32_t numberKeyPresses; bool pressed; }; Button button1 = {CENTER, 0, false}; void IRAM_ATTR isr() { digitalWrite(LED1, !digitalRead(LED1)); button1.numberKeyPresses += 1; button1.pressed = true; } void setup() { Serial.begin(115200); pinMode(LED1, OUTPUT); pinMode(button1.PIN, INPUT_PULLDOWN); attachInterrupt(button1.PIN, isr, FALLING); } void loop() { if (button1.pressed) { Serial.printf("Button 1 has been pressed %u times\n", button1.numberKeyPresses); button1.pressed = false; } }
- In Zeile 4 wird eine Struktur oder Klasse (class) mit dem Namen Button erstellt.
- Zeile 6-8: hat die Klasse drei Mitglieder: PIN-Nummer, Anzahl der Tastendrücke und gedrückter Zustand. Struc bzw. Class ist die Sammlung von Variablen unterschiedlichen Typs (aber logisch miteinander verbunden) - in Klassen auch Methoden (Funktionen) unter einem gemeinsamen Namen.
- In Zeile 11 wird eine Instanz button1 der Klasse Button mit der Initialisierung Pin=CENTER, Anzahl=0 und Zustand=false erzeugt
- Ab Zeile 13 ist wieder die ISR mit dem Attribut IRAM_ATTR
- Zeile 20 wird die Ausgabe auf die Serielle Schnittstelle mit 115200 Baud festgelegt.
- In Zeile 21 und 22 in der setup () -Funktion wird die pinMode () -Funktion verwendet, um den button1-Pin als INPUT und den LED1-Pin als OUTPUT zu initialisieren.
- In Zeile 23 wird die ISR handleExIntCenter an den GPIO-Pin CENTER mit dem Modus der steigenden Flanke gebunden.
- In Zeile 27 in der loop-Funktion wird immer überprüft ob der button1 (CENTER) gedrückt wurde. Wenn ja wird die Anzahl auf die serielle Schnittstelle ausgegeben und die boolsche Variable pressed wieder zurück gesetzt.