← Alle Bauteile

Taster (Push Button)

Sensor

Der einfachste Sensor: ein Knopf. Wenn man drueckt, wird der Stromkreis geschlossen. Beim Breadboard aufpassen: die 4 Beine sind paarweise verbunden — der Taster muss QUER ueber den Mittelsteg gesteckt werden.

Tipps: Immer mit Pull-Up oder Pull-Down Widerstand verwenden, sonst 'schwebt' der Pin und liefert zufaellige Werte. Am einfachsten: INPUT_PULLUP im Code verwenden, dann braucht man keinen extra Widerstand.
Frag den Lernhelfer

Technische Daten

KategorieEingabe
SchnittstelleDigital
PinbelegungPin A1, Pin A2, Pin B1, Pin B2 (4 Beine, je 2 verbunden)
Anzahl Pins4
MessgroesseTastendruck (an/aus)
MessbereichGedrueckt / Nicht gedrueckt
GenauigkeitDigital (1 oder 0)
Betriebsspannung3.3V – 5.0V

Anschluss

Arduino Uno R3

Pins: D4=Pin A, GND=Pin B (mit INPUT_PULLUP)

Hinweise: Mit INPUT_PULLUP: Pin liest HIGH wenn offen, LOW wenn gedrueckt. Kein extra Widerstand noetig.

Codebeispiele

Taster mit Entprellung (Debouncing) Anfaenger

Ein Taster prellt: beim Druecken schliesst und oeffnet der Kontakt mehrfach in Millisekunden. Ohne Entprellung zaehlt der Arduino einen Tastendruck mehrfach. Wir loesen das mit einer kurzen Wartezeit.

Benoetigte Bibliotheken: Keine (nur Arduino-Standardfunktionen)

// ============================================
// Taster: Druecke zaehlen mit Entprellung
// ============================================
// Anschluss: Pin A an D4, Pin B an GND
// Wir nutzen INPUT_PULLUP — kein extra Widerstand noetig!

#define TASTER_PIN 4   // Taster an Pin D4
#define LED_PIN 13     // Onboard-LED

int zaehler = 0;                   // Zaehlt die Druecke
int letzterZustand = HIGH;         // Letzter gelesener Zustand
unsigned long letzteAenderung = 0; // Zeitpunkt der letzten Aenderung
const int ENTPRELL_ZEIT = 50;      // 50 Millisekunden Entprellzeit

void setup() {
  Serial.begin(9600);
  pinMode(TASTER_PIN, INPUT_PULLUP);  // Interner Pull-Up: HIGH wenn offen
  pinMode(LED_PIN, OUTPUT);
  Serial.println("Taster bereit! Druecke zaehlen...");
}

void loop() {
  int zustand = digitalRead(TASTER_PIN);

  // Pruefen ob sich der Zustand geaendert hat
  if (zustand != letzterZustand) {
    letzteAenderung = millis();  // Zeitpunkt merken
  }

  // Wenn die Aenderung laenger als die Entprellzeit her ist:
  // dann ist es ein echtes Druecken (kein Prellen)
  if ((millis() - letzteAenderung) > ENTPRELL_ZEIT) {
    // LOW = gedrueckt (wegen INPUT_PULLUP)
    if (zustand == LOW && letzterZustand == HIGH) {
      zaehler++;
      Serial.print("Tastendruck #");
      Serial.println(zaehler);

      // LED umschalten (toggle) bei jedem Druck
      digitalWrite(LED_PIN, !digitalRead(LED_PIN));
    }
  }

  letzterZustand = zustand;
}

Projekte mit diesem Bauteil

Alarmanlage mit Bewegungsmelder Anfaenger (Scharf/Unscharf-Schalter)
Ampelschaltung Anfaenger (Fussgaenger-Taster)
Temperatur-Alarm mit LCD Mittel (Grenzwert hoch/runter)

Probleme mit Taster (Push Button)?

KI-Lernhelfer fragen