Benutzer-Werkzeuge

Webseiten-Werkzeuge


hello_mbot_button

Dies ist eine alte Version des Dokuments!


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 „Button Pressed“ über die serielle Schnittstelle aus. Die Abfrage erfolgt alle 50 ms in einer Schleife.

Quellcode (engl. Sourcecode)

Listing 1:MinimalesProgramm.ino

#include <MeMCore.h>

int PIN_BUTTON = 7;   // must be fixed!
int threshold  = 500; // Analoger Schwellenwert!

void setup() {
  
  Serial.begin(9600);
  pinMode(PIN_BUTTON, INPUT); //Define button pin as input
  
}
void loop() {
  if ( isButtonPressed() ){
    Serial.println("Button Pressed");
  }  
  delay(50);
}

bool isButtonPressed(){
  if (analogRead(PIN_BUTTON) < threshold)
    return true;    
  return false;
}

Bessere isButtonPressed() Variante

Die Funktion erkennt, ob der Taster neu gedrückt wurde und verhindert mehrfaches Zählen, solange der Knopf gehalten wird.

Listing 1:MinimalesProgramm.ino

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;

}

Funktionsweise

  • Liest den Tasterwert aus (`analogRead(PIN_BUTTON)`)
  • Falls der Wert unter dem Schwellenwert liegt (Knopf gedrückt):
    • Prüft, ob der Knopf zuvor nicht gedrückt war (`!buttonPressed`)
    • Setzt `buttonPressed = true` und gibt einmal `true` zurück
  • Falls der Knopf losgelassen wird (`value >= threshold`), wird `buttonPressed = false` gesetzt.

Vorteile

  • Verhindert mehrfaches Hochzählen bei langem Tastendruck
  • Sorgt für saubere Zustandserkennung
  • Erlaubt erst neuen Tastendruck, wenn der Knopf losgelassen wurde
hello_mbot_button.1739878039.txt.gz · Zuletzt geändert: 2025/02/18 11:27 von torsten.roehl