Raspberry Pi Pico als intelligenter Taster

Ein einfacher Taster kann im Prinzip nur 2 Dinge. Öffnen und schließen. Damit kann etwas beim Drücken einschalten und beim Loslassen ausschalten. Mit einer entsprechenden Logik, entweder als Schaltung oder Software, kann man das Drücken und das Loslassen separat auswerten und mit Funktionen belegen.
Zum Beispiel Einschalten beim Drücken und Ausschalten beim nochmaligen Drücken.

Interessant wird es, wenn man das Drücken eines Tasters mit einem Zeitfaktor erweitert. Das heißt zum Beispiel, einen kurzen und einen langen Druck auf den Taster zu unterscheiden. Die nächste Stufe ist, das doppelte Drücken in kurzer Zeit zu erkennen.

Der Taster kennt dann drei verschiedene Trigger, denen man jeweils einzelne Schaltvorgänge bzw. Funktionen zuordnen kann:

  1. einmal, kurz gedrückt
  2. einmal, lang gedrückt
  3. zweimal, kurz gedrückt

Diese Lösung eignet sich für einen intelligenten Taster, der nicht nur den gedrückten Zustand erkennt, sondern auch, ob einfach, doppelt oder lang gedrückt wurde.

MicroPython-Bibliotheken installieren

Damit der folgende Programmcode funktioniert muss eine externe Bibliothek installiert werden. Dazu sind folgende Schritte notwendig.

  1. Lade folgende ZIP-Datei herunter: https://github.com/peterhinch/micropython-async/archive/refs/heads/master.zip
  2. Entpacke die ZIP-Datei.
  3. Kopiere das Verzeichnis „primitives“ im Verzeichnis „v3“ auf den Raspberry Pi Pico.

Danach kann der folgende Programmcode ausgeführt werden.

Programmcode

Die folgende Lösung arbeitet mit „asyncio“. Das bedeutet, dass wenn diese Lösung ein Teil eines anderen Programmcodes werden soll, dann muss dieser auch nach den Prinzipien von „asyncio“ arbeiten.

import asyncio
from machine import Pin
from primitives import Pushbutton

btn = Pushbutton(Pin(15, Pin.IN, Pin.PULL_UP), suppress=True)

async def main():
    short_press  = btn.release_func(print, ("SHORT",))
    double_press = btn.double_func(print, ("DOUBLE",))
    long_press   = btn.long_func(print, ("LONG",))
    while True:
        await asyncio.sleep(1)

asyncio.run(main())

Funktionen testen

Der Programmcode reagiert auf die Betätigung des Tasters und gibt auf der Kommandozeile aus, wie die Betätigung interpretiert wird. Es empfiehlt sich die folgenden Schritt nacheinander auszuprobieren.

  1. Den Taster einmal kurz drücken. Ausgabe: SHORT
  2. Den Taster einmal lang drücken. Ausgabe: LONG
  3. Den Taster zweimal kurz drücken. Ausgabe: DOUBLE

Weitere verwandte Themen:

Elektronik-Sets für das Hardware-nahe Programmieren

Elektronik-Sets für das Hardware-nahe Programmieren

Programmieren mit dem Raspberry Pi Pico
Online-Meeting

Programmieren mit dem Raspberry Pi Pico

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

Frag Elektronik-Kompendium.de