hello_mbot_button
                Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| hello_mbot_button [2025/02/03 11:41] – angelegt torsten.roehl | hello_mbot_button [2025/02/18 11:44] (aktuell) – [Bessere isButtonPressed() Variante] torsten.roehl | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Hello mBot Button ====== | ====== Hello mBot Button ====== | ||
| + | //Das Programm liest den Zustand eines Buttons am mBot aus. Wenn der Button gedrückt wird (analoges Signal unterhalb eines Schwellenwerts von 500), gibt es " | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Quellcode (engl. Sourcecode) ==== | ||
| + | |||
| + | <Code c linenums:1 | Listing 1: | ||
| + | #include < | ||
| + | |||
| + | int PIN_BUTTON = 7; // must be fixed! | ||
| + | int threshold | ||
| + | |||
| + | void setup() { | ||
| + |  | ||
| + | Serial.begin(9600); | ||
| + | pinMode(PIN_BUTTON, | ||
| + |  | ||
| + | } | ||
| + | void loop() { | ||
| + | if ( isButtonPressed() ){ | ||
| + | Serial.println(" | ||
| + | } | ||
| + | delay(50); | ||
| + | } | ||
| + | |||
| + | bool isButtonPressed(){ | ||
| + | if (analogRead(PIN_BUTTON) < threshold) | ||
| + | return true; | ||
| + | return false; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Diese Variante von '' | ||
| + | |||
| + | ==== Bessere isButtonPressed() Variante ==== | ||
| + | |||
| + | < | ||
| + | Die Funktion erkennt, ob der Taster **neu gedrückt** wurde und __verhindert mehrfaches Zählen__, solange der Knopf gehalten wird. | ||
| + | </ | ||
| + | |||
| + | |||
| + | <Code c linenums:1 | Listing 1: | ||
| + | bool isButtonPressed() { | ||
| + | static bool buttonPressed = false; | ||
| + | int value = analogRead(PIN_BUTTON); | ||
| + | |||
| + | if (value < threshold) { | ||
| + | if (!buttonPressed) { | ||
| + | buttonPressed = true; | ||
| + | return true; | ||
| + | } | ||
| + | } else { | ||
| + | buttonPressed = false; // Button wurde losgelassen | ||
| + | } | ||
| + | return false; | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Erklärungen zum Quellcode === | ||
| + | * **Liest den Tasterwert aus** ('' | ||
| + | * Falls der Wert **unter dem Schwellenwert** liegt (Knopf gedrückt): | ||
| + | * Prüft, ob der Knopf zuvor nicht gedrückt war ('' | ||
| + | * **Setzt '' | ||
| + | * Falls der Knopf **losgelassen** wird ('' | ||
| + | * <color # | ||
| + | |||
| + | <WRAP center round important 96%> | ||
| + | **Vorteile** | ||
| + | |||
| + | * ✅ **Verhindert mehrfaches Hochzählen** bei langem Tastendruck | ||
| + | * ✅ **Sorgt für saubere Zustandserkennung** | ||
| + | * ✅ **Erlaubt erst neuen Tastendruck**, | ||
| + | |||
| + | </ | ||
hello_mbot_button.1738582868.txt.gz · Zuletzt geändert:  von torsten.roehl
                
                