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

Der Elektronik-Kompendium Club ist ein Online-Treffpunkt für Hobby-Elektroniker und Maker.

Wir wollen:

  • Anregungen und Lösungen von echten Menschen bekommen
  • Menschen zusammenbringen und gemeinsam wachsen
  • Erfahrungen machen und teilen

Jetzt mehr erfahren und Mitglied werden

Elektronik-Kompendium Club Meeting

Elektronik-Sets für das Hardware-nahe Programmieren

Frag Elektronik-Kompendium.de