Raspberry Pico und Tasterabfrage mit PlatformIO (Visual Studio Code)

  • Hoi Kay

    Interessanter beitrag!

    Mich bewegt etwas das du im Taster-Debounce.png darstellst.


    Die gelbe notiz sagt: Anschluss mit internem Pullup.


    Ich sehe aber die leitungen über die taster nach der roten linie gehen. Also pluspotential.

    Denke ich etwas falsch?

    Gruss nische


    * letzte Worte des Fallschirmspringers : " scheiss Motten" ! *



  • Ich hatte vor kurzem ja mal einen Beispielcode für eine Taster Abfrage mit Hilfe der PIO Funktionalität beim RP2040 (Raspberry Pico) gepostet. Es hat zwar irgendwie funktioniert, jedoch leider nicht richtig. Darum habe ich das Posting auch wieder gelöscht. Weil ich keine befriedigende Lösung fand, habe ich eine Klasse geschrieben, die das auf herkömmlichen Weg löst.


    Mit Hilfe der Klasse (RPicoButton) können bist zu 16 Pins simultan abgefragt werden. Es können also bis zu 16 Taster verwaltet werden. Es wird ermittelt, welche Taster gedrückt wurden (auch gleichzeitig) und wie lange das geschehen ist. Somit hat man im Prinzip maximal 65535 Kombinationsmöglichkeiten (wenn man genug Finger hat, um alle Taster gleichzeitig zu drücken). Nimmt man noch die Drückdauer hinzu, werden es im Prinzip unendlich viele.


    Ich habe ein Beispielprogramm (Taster.zip) für vier Taster angehangen. Das ergibt 15 Kombinationsmöglichkeiten die ausgewertet werden können.


    Die Ausgabe des Beispielprogrammes sieht so aus:


    PIO-Taster-Debounce-Konsole.png


    ausprobiert wurde das mit folgendem Aufbau:


    Taster-Debounce.png


    Beim Erzeugen des Objektes kann die Debounce-Zeit in Millisekunden angegeben werden. Außerdem ein Flag über das mitgeteilt wird, ob die Taster mit einer Pullup (true) oder Pulldown Logik (false) angeschlossen sind. Beim Aufruf der Initialisierungs-Methode sind als Parameter der Startpin, die gewünschte Pinanzahl und ein Flag für die Beschaltung (sollen interne Widerstände verwendet werden (true) oder sind externe vorhanden (false)) anzugeben.


    Die Initialisierung der Pins kann nur laufend am Stück durchgeführt werden. Es können also keine Lücken in der Pingruppe sein. Dazu müsste dann ein weiteres Objekt angelegt werden. Es sind "nur" die GPIOs von 0-22 verwendbar. Die maximale Anzahl Pins, die zur Abfrage verwendet werden können, hängt auch davon ab, welchen "Startpin" man wählt. Gibt man z.B. den Startpin 20 an. so können nur noch maximal drei Taster abgefragt werden (GPIO20, GPIO21, GPIO22).


    Beim Initialisieren des Objektes wird darauf geachtet, dass die Grenze von GPIO22 nicht überschritten wird und die angegebene Pin-Anzahl wird automatisch angepasst, sollte sie zu groß sein.


    Das grundsätzliche Prinzip der Nutzung sieht so aus:


    Für mich ist dieses Miniprojekt eine Übung um sich an die Möglichkeiten des Controllers + SDK heranzutasten.


    Auch wenn hier im Forum zur Zeit absolut tote Hose ist, habe ich die Hoffnung ja noch nicht ganz aufgegeben, dass hier möglicherweise doch mal wieder ein Austausch stattfindet. Ich kann mir nicht recht vorstellen, dass der Raspberry Pico von den Usern hier im Forum so komplett ignoriert wird. Das Teil ist richtig gut.


    Die Klasse mit einem Beispielprogramm gibt es auf Github


    Bis denne.