Grundlagen · 3 Min. Lesezeit

Taster am Arduino anschließen: Pull-up, Pull-down und Entprellen

Wie schließt man einen Taster an den Arduino an? Aufbau des 4-beinigen Tasters, Pull-up- und Pull-down-Widerstand, INPUT_PULLUP, Entprellen und ein Beispiel zum Umschalten einer LED.

Ein Taster ist das einfachste Bauteil, um die Berührung des Nutzers in ein Arduino-Projekt zu bringen. Gedrückt verbindet er zwei Kontakte, losgelassen trennt er sie. So einfach er wirkt: Falsch angeschlossen liefert er zufällige Werte oder zählt einen Druck mehrfach. Hier zeigen wir, wie man einen Taster richtig anschließt und liest.

Taster
4-beiniger Mikrotaster. Die Beinchen sind innen paarweise verbunden.

Aufbau eines 4-beinigen Tasters

Der 6×6-mm-Mikrotaster, den du auf dem Steckbrett am häufigsten nutzt, hat 4 Beinchen, aber nur 2 Anschlusspunkte: Gegenüberliegende Paare sind innen schon verbunden. Beim Drücken werden die beiden Paare verbunden. Setzt du den Taster über den Mittelkanal des Steckbretts, landet jedes Paar in eigenen Reihen und die richtige Ausrichtung ergibt sich leicht.

Bei Unsicherheit stell das Multimeter auf Durchgangsprüfung: Beinchen, die ohne Drücken piepen, sind ein bereits verbundenes Paar. Beinchen, die erst beim Drücken piepen, schaltet der Taster.

Warum braucht man einen Pull-up- oder Pull-down-Widerstand?

Ist der Taster nicht gedrückt, hängt der Eingangspin des Arduino in der Luft; man spricht von einem offenen (floating) Eingang. So ein Pin fängt elektrisches Rauschen auf und liest zufällig HIGH oder LOW. Die Lösung: den Pin über einen Widerstand auf einen festen Pegel ziehen:

MethodeAnschlussNicht gedrücktGedrückt
Pull-down10 kΩ Pin → GND, Taster Pin → 5VLOWHIGH
Pull-up (extern)10 kΩ Pin → 5V, Taster Pin → GNDHIGHLOW
INPUT_PULLUP (intern)Taster Pin → GND, kein Widerstand nötigHIGHLOW

Am praktischsten ist pinMode(pin, INPUT_PULLUP): Der interne Widerstand des Arduino von etwa 20–50 kΩ wird aktiviert, und du schließt den Taster nur zwischen Pin und GND an. Einziger Unterschied: Die Logik kehrt sich um, ein Druck liest LOW.

Entprellen: Warum zählt ein Druck mehrfach?

In dem Moment, in dem sich die Metallkontakte berühren, schwingen sie einige Millisekunden lang, und der Stromkreis öffnet und schließt sich mehrfach. Weil der Arduino so schnell liest, kann er einen Druck als 3–5 Drücke sehen. Das nennt man Kontaktprellen. In Software löst man das, indem man nach der letzten Änderung etwa 50 ms lang neue Änderungen ignoriert.

const int BUTTON_PIN = 2;   // buton pin ile GND arasında / button between pin and GND
const int LED_PIN = 13;     // karttaki LED / onboard LED

bool ledOn = false;
int lastReading = HIGH;
int stableState = HIGH;
unsigned long lastChange = 0;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP); // dahili pull-up / internal pull-up
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  int reading = digitalRead(BUTTON_PIN);
  if (reading != lastReading) lastChange = millis();   // değişti / changed
  if (millis() - lastChange > 50 && reading != stableState) {
    stableState = reading;                              // 50 ms kararlı / stable for 50 ms
    if (stableState == LOW) {                           // basıldı / pressed
      ledOn = !ledOn;                                   // LED'i değiştir / toggle LED
      digitalWrite(LED_PIN, ledOn ? HIGH : LOW);
    }
  }
  lastReading = reading;
}

Dieser Code schaltet die LED pro Druck einmal um; Gedrückthalten schaltet nicht ständig weiter. Da er millis() statt delay() nutzt, wartet die Schleife nie und kann nebenbei andere Aufgaben erledigen.

Typische Fehler

  • Taster falsch herum einsetzen: Nutzt du ein bereits verbundenes Paar, gilt der Taster als dauerhaft gedrückt. Dreh ihn um 90°.
  • Keinen Widerstand verwenden: Ohne Pull-up oder Pull-down ändert sich der Messwert zufällig.
  • Bei INPUT_PULLUP die falsche Logik erwarten: Ein Druck liest LOW, nicht HIGH; schreib die Bedingungen entsprechend.
  • Lange delay() zum Entprellen: Das Programm kann in dieser Zeit nichts tun; Timing mit millis() ist besser.
  • Pins 34–39 beim ESP32 verwenden: Sie haben keinen internen Pull-up; füge einen externen Widerstand hinzu oder nimm einen anderen Pin.

Wie du Taster und Widerstand richtig auf das Steckbrett setzt, zeigt Was ist ein Steckbrett?; zu Pull-up-Werten siehe Was ist ein Widerstand?.

Häufige Fragen

Welchen Widerstand braucht ein Taster?

10 kΩ ist Standard für Pull-up oder Pull-down. Mit INPUT_PULLUP brauchst du gar keinen externen Widerstand.

Warum liest der Taster beim Drücken LOW?

Mit INPUT_PULLUP oder externem Pull-up ist der Pin normalerweise HIGH; der Taster verbindet ihn mit GND, daher LOW beim Drücken. Das ist so gewollt.

Wie lang sollte die Entprellzeit sein?

20–50 ms reichen für die meisten Taster. Alte oder billige Taster brauchen eventuell 80–100 ms.

Wie lese ich mehrere Taster?

Schließe jeden Taster an einen eigenen Pin an und setze alle auf INPUT_PULLUP. Für viele Taster nimmt man eine Tastenmatrix (Keypad) oder liest sie über einen Analogpin mit unterschiedlichen Widerständen.

Alle Projekte ansehen
Led Burning mit Druckknopf (Push)
#9Anfänger

Led Burning mit Druckknopf (Push)

Sofortiges (Druck-)Steuerprojekt, bei dem die LED aufleuchtet, wenn die Taste gedrückt wird, und erlischt, wenn sie losgelassen wird. Lehrt die Verwendung von Tastenlesung und bedingtem Ausdruck mit d

4.9(110)
176
Led Burning mit Taste (Ein Aus)
#10Anfänger

Led Burning mit Taste (Ein Aus)

Ein Toggle-Projekt, das den Zustand der LED (ein/aus) bei jedem Tastendruck ändert. Lehrt Zustandsvariable und Entprellungslogik.

4.8(100)
157
Einfaches Klavier mit Summer und Taste
#26Fortgeschritten
Premium

Einfaches Klavier mit Summer und Taste

Mit 8 Tasten und Summer, einfaches Klavierprojekt, das Noten von C bis hoch C spielen kann. Es lehrt, wie man ein Musikinstrument simuliert, indem man jeder Taste verschiedene Frequenzen zuweist.

4.9(66)
87
7-Segment-Anzeige und Zähler mit Taste
#43Fortgeschritten
Premium

7-Segment-Anzeige und Zähler mit Taste

Zählerprojekt, das die Zahl auf der 7-Segment-Anzeige mit 3 Tasten erhöht, verringert und zurücksetzt. Lehrt Grenzwertkontrolle und benutzerinteraktive Zählerlogik.

4.6(35)
46
ESP32 LED-Steuerung mit Drucktaste (Push)
#104Anfänger

ESP32 LED-Steuerung mit Drucktaste (Push)

Die LED leuchtet auf, wenn die Taste gedrückt wird und geht aus, wenn sie losgelassen wird. Zeigt, wie der digitale Eingangspin des ESP32 und der interne Pull-up-Widerstand verwendet werden. Dank des INPUT_PULLUP-Modus ist kein externer Widerstand erforderlich.

4.6(36)
55
ESP32 LED Steuerung mit Taster (Toggle)
#105Anfänger

ESP32 LED Steuerung mit Taster (Toggle)

Jedes Mal, wenn die Taste gedrückt wird, ändert sich der Zustand der LED: ist sie an, schaltet sie aus, ist sie aus, schaltet sie ein. Klassisches Toggle-Muster. Mit der Entprellung wird das mechanische Geräusch des Tasters beseitigt, um ein einmaliges Umschalten mit einem einzigen Druck zu gewährleisten.

4.6(39)
56
Raspberry Pi Pico Taster Toggle LED (GP14 + GP2)
#156Anfänger
Premium

Raspberry Pi Pico Taster Toggle LED (GP14 + GP2)

Taster + LED — nächste Stufe! 🔁 Anders als #155, du musst den Taster nicht halten. Drücken und loslassen → LED an. Nochmal drücken → LED aus (toggle). Gleiche Schaltung wie #155, aber großer Codeunterschied. Lerne Edge Detection, State Tracking und Debounce.

0.0(0)
Raspberry Pi Pico Taster Debounce: IRQ vs Software Polling (GP5 + GP4)
#159Mittel
Premium

Raspberry Pi Pico Taster Debounce: IRQ vs Software Polling (GP5 + GP4)

Einmal Taster gedrückt, Code zählt 3-4? Das ist Contact Bounce! 🔁 Vergleiche 2 Zählmethoden in Serial: RAW Polling (fängt Bounce, zählt falsch) vs IRQ + Software Debounce (genau). Lerne Contact Bounce Physik, Software Debounce, Pin.irq() Interrupt, IRQ_FALLING Trigger, ISR Handler, global Variablen ISR-Sicherheit.

0.0(0)

Lerne, warum ein Taster allein unzuverlässig gelesen wird, was ein Pull-up-Widerstand macht, wie INPUT_PULLUP funktioniert und wie Entprellen Tastendrücke richtig zählt.