Taster (Push Button)
SensorDer 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.
Technische Daten
| Kategorie | Eingabe |
|---|---|
| Schnittstelle | Digital |
| Pinbelegung | Pin A1, Pin A2, Pin B1, Pin B2 (4 Beine, je 2 verbunden) |
| Anzahl Pins | 4 |
| Messgroesse | Tastendruck (an/aus) |
| Messbereich | Gedrueckt / Nicht gedrueckt |
| Genauigkeit | Digital (1 oder 0) |
| Betriebsspannung | 3.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
Probleme mit Taster (Push Button)?
KI-Lernhelfer fragen