Raspberry Pi Pico: Taster entprellen

Wenn Du einen Taster betätigst, dann führt das in der Regel zur Mehrfachausführung der damit verbundenen Funktion. Doch warum ist das so? Funktioniert das Programm nicht richtig? Nein. Das Problem sind die Taster. Die neigen zum Prellen.

In einem Versuch wollen wir hier aufzeigen, wie das Prellen eines Tasters sichtbar wird und wie man einen Taster wirkungsvoll entprellen kann.

Was ist Prellen und warum tun Taster das?

Mit Prellen ist gemeint, dass ein Taster bei Betätigung nicht zwangsläufig einen dauerhaften Kontakt herstellt, sondern durch den mechanischen Aufschlag zurückfedert und teilweise mehrfach und in kurzer Folge schließt und wieder öffnet, bevor er tatsächlich schließt. Das heißt, das Drücken eines Tasters kann zu einer mehrmaligen Kontaktauslösung führen. Je nach Taster tritt das Problem mehr oder weniger stark auf.

In der Praxis muss man sich zwangsläufig mit dem Prellen von Tastern beschäftigen und eine Lösung parat haben. Das ist hardwarenahes Programmieren live und in Farbe.

  • Lösungen zum Taster entprellen

Aufbau und Bauteile

Raspberry Pi Pico: Taster gegen VCC schalten

Der Taster wird auf dem Steckbrett auf der einen Seite mit +3,3V (VCC) und auf der anderen Seite mit dem GPIO verbunden.

Programmcode ohne Funktion zum Entprellen des Tasters

Das folgende Programm schaltet die LED immer dann ein und wieder aus, wenn der Taster gedrückt wird. Das Programm wird nicht automatisch beendet.

# Bibliotheken laden
from machine import Pin

# Initialisierung von GPIO25 als Ausgang
led_onboard = Pin(25, Pin.OUT)

# Initialisierung von GPIO14 als Eingang mit internem PULLDOWN-Widerstand
btn = Pin(14, Pin.IN, Pin.PULL_DOWN)

# Funktion zur Taster-Auswertung
while True:
    if btn.value() == 1:
        led_onboard.on()
    else:
        led_onboard.off()

Wenn man den Taster mehrmals betätigt, wird man feststellen, dass die LED manchmal oder jedes mal mehrfach an- und ausgeht. Würde sich eine Funktion dahinter befinden, würde diese mehrfach ausgeführt werden. Das ist in der Regel nicht gewollt.

Programmcode zum Taster entprellen

Das folgende Programm schaltet die LED immer dann ein und wieder aus, wenn der Taster gedrückt wird. Das Programm wird nicht automatisch beendet.

# Bibliotheken laden
from machine import Pin, Timer

# Initialisierung von GPIO25 als Ausgang
led_onboard = Pin(25, Pin.OUT, value=0)

# Initialisierung von GPIO14 als Eingang mit internem PULLDOWN-Widerstand
btn = Pin(14, Pin.IN, Pin.PULL_DOWN)

# Timer erstellen
timer = Timer()

# Taster-Funktion
def on_pressed(timer):
    led_onboard.toggle()
    print('pressed')

# Entprell-Funktion
def debounce(pin):
    # Timer setzen (200 ms)
    timer.init(mode=Timer.ONE_SHOT, period=200, callback=on_pressed)

# Taster-Auslösung
btn.irq(handler=debounce, trigger=Pin.IRQ_RISING)

Das besondere an diesem Programm ist, dass der Taster-Druck einen Interrupt auslöst und dadurch eine bestimmte Funktion im Programm ausführt. Diese Funktion setzt erst einen Timer mit einer Verzögerung von 200 ms und führt dann die Funktion einmalig aus, die die LED ansteuert.

Diese Konstruktion im Programmcode führt dazu, dass wenn der Taster innerhalb der 200 ms prellt, also zwischen High und Low hin- und herschwingt, die Funktion nicht erneut ausgeführt wird.

Wichtiger Hinweis

Schaut man sich verschiedene andere Lösung zum Entprellen an, dann sind die meisten sehr viel umfangreicher. Das liegt am vergleichsweise großen Funktionsumfang, um maximale Flexibilität zu ermöglichen. Die hier dargestellt Lösung ist vergleichsweise einfach und nicht in jedem Fall die beste Lösung.

Experimente mit Taster

Weitere verwandte Themen:

Teilen:

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Mehr Informationen Am Online-Workshop teilnehmen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!