Wie man Drucktasten mit Raspberry Pi GPIO-Pins verwendet

Wenn Sie jemals eine LED mit einem Raspberry Pi verwendet haben, wissen Sie wahrscheinlich, wie GPIO-Ausgänge funktionieren. Code lässt Strom durch die General Purpose Input / Output (GPIO)-Pins fließen, passiert die LEDs und lässt sie leuchten. Aber haben Sie jemals versucht, das Gegenteil zu tun? Mit Drucktasten können Sie genau das Gegenteil erreichen. Dieses Tutorial zeigt Ihnen, wie Sie einen GPIO-Pin in einen Eingangspin umwandeln, der auf jeden Tastendruck hört, den Sie machen!
Inhaltsverzeichnis
- Wie Drucktasten funktionieren
- 4-Pin Drucktasten
- Verwendung von Drucktasten mit Raspberry Pi GPIO-Pins
- So verwenden Sie Drucktasten
- Hardware zu Drucktasten
- Importbefehle
- Einrichtungsbefehle
- Schleifenbefehle
- Häufig gestellte Fragen
Auch lesen: Wie man blinkende LEDs mit dem Raspberry Pi macht
Wie Drucktasten funktionieren
Eine Drucktaste ist eine Art Schalter. Sie hat zwei separate leitende Pins, die einen vollständigen Stromkreis verhindern, indem sie voneinander getrennt sind. Wenn Sie auf eine Drucktaste drücken, drücken Sie tatsächlich die beiden Pins zusammen und schließen den Stromkreis. Wenn Sie jedoch loslassen, gibt es einen federähnlichen Mechanismus, der die Pins wieder trennt.

Auch lesen: Wie man Ihren Raspberry Pi in eine Videokonferenzstation verwandelt
4-Pin Drucktasten
Die typische Drucktaste in Sensor-Kits hat vier Pins, wobei jeder Pin von den anderen getrennt ist. Eine bewegliche Metallplatte sitzt direkt unter dem Tastenbereich, die nach unten geht und alle anderen Pins verbindet, wenn die Drucktaste nach unten gedrückt wird.

Sie finden zwei Platten in einer 4-Pin Drucktaste. Jede ist mit zwei externen Pins verbunden. Beide Platten sind voneinander getrennt und können nur verbunden werden, indem man auf eine dritte Platte drückt – die Metallplatte unter der Taste.

Auf eine Weise sind immer zwei Pins in einer Drucktaste verbunden. Wenn Sie die 4-Pin Drucktaste drücken, verbinden Sie alle vier Pins miteinander.
Auch lesen: Wie man ein Arduino mit einem Raspberry Pi programmiert
Verwendung von Drucktasten mit Raspberry Pi GPIO-Pins
Diesmal lassen wir die Raspberry Pi GPIO-Pins einen Tastendruck von einer Drucktaste erkennen. Wenn Strom hindurchfließt, wird der Raspberry Pi eine Nachricht ausgeben, die Ihnen sagt, dass es funktioniert.
Dinge, die Sie benötigen
- Drucktaste (4-Pin)
- Widerstand (einer zwischen 100Ω und 1000Ω sollte funktionieren)
- Jumperdrähte
- Voltmeter (optional)
- Raspberry Pi
- Monitor und Tastatur (oder SSH)
Auch lesen: Wie man Windows 11 auf einem Raspberry Pi 4 installiert
So verwenden Sie Drucktasten
- Öffnen Sie Ihren bevorzugten Code-Editor und fügen Sie den folgenden Code ein:
import RPi.GPIO as GPIO
from time import sleep
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True:
if GPIO.input(7) == GPIO.HIGH:
print("Pin 7 ist HIGH!")
elif GPIO.input(7) == GPIO.LOW:
print("Pin 7 ist LOW...")
sleep(0.15)Speichern Sie als „rpi-pushbutton.py“ (oder einen beliebigen Namen, solange die Dateierweiterung gleich bleibt).
Bauen Sie den Schaltkreis. An einem Pin der Drucktaste verbinden Sie ihn mit Pin 7 und einem Widerstand parallel. Schließen Sie ein Jumperkabel an einen GND-Pin (Pins 6, 7, 14, 20, 25, 30, 34 oder 39) auf der anderen Seite dieses Widerstands an und schließen Sie dann ein weiteres Jumperkabel an einen 3.3V-Pin (Pins 1 oder 17) an einem separaten Drucktaste-Pin an.

Tipp: Um die richtige Pin-Nummer zu finden, halten Sie Ihren Raspberry Pi so, dass die GPIO-Pins in der oberen rechten Ecke sitzen. Der obere linke Pin ist Pin 1, und rechts davon ist Pin 2. Unter Pin 1 ist Pin 3, rechts ist Pin 4, und so weiter.

- Schalten Sie Ihren Raspberry Pi ein und öffnen Sie das Terminal. Verwenden Sie
cd, um in das Verzeichnis des Python-Skripts zu wechseln, und geben Sie dannpython3 rpi-pushbutton.pyein. Wenn Sie einen anderen Dateinamen verwendet haben, verwenden Sie diesen anstelle von „rpi-pushbutton.“

- Sie sollten alle 0,15 Sekunden eine neue Textzeile sehen, die
Pin 7 ist LOW...im Terminal anzeigt. Wenn Sie die Taste drücken, wird die neue ZeilePin 7 ist HIGH!sein.
Wenn Sie die GND- und 3.3V-Pins umschalten, wobei 3.3V am Widerstand und GND auf der anderen Seite der Drucktaste ist, kehren Sie die Logik der Drucktaste um. Es wird ständig Pin 7 ist HIGH! ausgeben und wird Pin 7 ist LOW, wenn Sie die Taste drücken.

Auch lesen: Die besten Raspberry Pi Alternativen von 2024, die Sie jetzt überprüfen sollten
Hardware zu Drucktasten
Drucktasten verwenden zwei Arten von Widerständen: Pull-Up und Pull-Down. Derjenige mit 3.3V, der mit dem Widerstand verbunden ist, ist ein Pull-Up-Widerstand. Er zieht die Spannung nach oben. Pull-Down-Widerstände ziehen die Spannung nach unten, indem sie mit einem GND-Pin verbunden sind.
Sie können eine Drucktaste auch ohne Widerstand verwenden, aber das lässt Ihren GPIO-Pin im Float-Zustand. Ein schwebender GPIO-Pin erhält keinen direkten elektrischen Strom, sodass er nach Ladungen in seiner Umgebung sucht. Wenn sich beispielsweise ein starkes elektromagnetisches Feld in der Nähe befindet, wird es stattdessen das messen.

Deshalb benötigen Sie einen Referenzpunkt. Wenn Sie den GPIO-Pin standardmäßig auf 0V (GND) anschließen, misst er 0V, während die Taste nicht gedrückt ist. Wenn Sie das nicht tun, kann der Wert des GPIO-Pins überall liegen – sogar negative Volt!
Schwebende Pins können jedoch einige interessante Dinge tun. Wenn Sie einen Pin schwebend lassen, kann er den Spannungsunterschied in der Luft erkennen und sogar den Effekt messen, wenn Ihr Finger sich in der Nähe des Pins bewegt. Es ist wie ein elektromagnetischer Präsenzsensor oder so ähnlich.
Es ist schade, dass Sie das nicht einfach auf dem Raspberry Pi machen können. Damit das nützlich ist, benötigen Sie analoge Pins, und der Raspberry Pi hat keine.
Code für Drucktasten
In Anbetracht dessen sollten Sie verstehen, dass Pin 7 erkennt, ob 3.3V oder 0V hindurchfließt. Wenn er 3.3V erkennt, meldet er sich als HIGH. Wenn er 0V erkennt, ist er LOW.
Lassen Sie uns den Code in drei Teile unterteilen: Importbefehle, Einrichtungsbefehle und Schleifenbefehle.
Importbefehle
Wir verwenden zwei Importbefehle:
import RPi.GPIO as GPIO
from time import sleepimport RPi.GPIO as GPIO importiert das RPi.GPIO-Modul, mit dem Sie Dinge mit den GPIO-Pins Ihres Raspberry Pi tun können. Indem Sie as GPIO am Ende hinzufügen, sagen Sie Python, dass das Tippen von GPIO dem Tippen von RPi.GPIO entspricht. Sie können es sogar durch andere Zeichenfolgen ersetzen, und der Code sollte weiterhin funktionieren, solange Sie es richtig formatieren.
Andererseits importiert from time import sleep nur einen Teil des Zeitmoduls von Python. Es ermöglicht Ihnen, die Funktion sleep() zu verwenden.
Einrichtungsbefehle
Wir arbeiten mit den drei Befehlen aus dem RPi.GPIO-Modul in den Einrichtungsbefehlen, um einige Einstellungen festzulegen.
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)Das RPi.GPIO-Modul zeigt normalerweise eine Nachricht an, die Sie warnt, dass Sie die GPIO-Pins verwenden, sobald Sie das Python-Skript starten. GPIO.setwarnings(False) verhindert, dass dies geschieht.
GPIO.setmode(GPIO.BOARD) ist ein weiterer Befehl aus dem RPi.GPIO-Modul. Es sagt Python, dass Sie das „BOARD“-Pinout verwenden. Es gibt zwei Arten von Pinouts in RPi.GPIO: BOARD und BCM. BOARD ermöglicht es Ihnen, Pins anhand der Pin-Nummern auszuwählen. BCM (kurz für „Broadcom“) ermöglicht es Ihnen, Pins mit ihren individuellen Broadcom SOC-Kanälen auszuwählen. BOARD ist viel einfacher zu verwenden, da es immer dasselbe ist, egal welche Art von Raspberry Pi-Board Sie verwenden. Das BCM-Pinout kann je nach verwendetem Modell variieren.
Schließlich ermöglicht GPIO.setup(7, GPIO.IN), Pin 7 als Eingangspin festzulegen. Es verwendet die Funktion .setup() und liest 7 als den Pin, den Sie auswählen möchten. GPIO.IN bedeutet, dass Sie versuchen, ihn als Eingangspin festzulegen.
Auch lesen: Anfängerleitfaden für Arduino
Schleifenbefehle
Eingebettete Systeme verwenden normalerweise nur einige Codezeilen und wiederholen diese endlos. Verschiedene Programmiersprachen verwenden unterschiedliche Möglichkeiten, dies zu tun. Aber das Konzept ist dasselbe: Sie verwenden eine Art Schleife. Für Python ist das while True:.
while True:
if GPIO.input(7) == GPIO.HIGH:
print("Pin 7 ist HIGH!")
elif GPIO.input(7) == GPIO.LOW:
print("Pin 7 ist LOW...")
sleep(0.15)while True: lässt Sie den Code endlos wiederholen. Alles, was Sie darin platzieren, wird für immer ausgeführt, solange Strom auf dem Board vorhanden ist.
if GPIO.input(7) == GPIO.HIGH: ist eine if-Anweisung. Sie sagt, dass, wenn Pin 7, der ein Eingangspin ist, als HIGH gelesen wird, dann alles innerhalb davon ausgeführt werden sollte.
print("Pin 7 ist HIGH!") befindet sich innerhalb einer if-Anweisung. Alles, was es tut, ist, Pin 7 ist HIGH! auf der Konsole auszugeben. Sie können das durch jede Zeichenfolge, Zahl oder Variable ersetzen, die diese enthält.
Als nächstes kommt elif GPIO.input(7) == GPIO.LOW:. Es ist im Grunde dasselbe wie if GPIO.input(7) == GPIO.HIGH:, nur dass es am Anfang elif anstelle von if verwendet. Der Code elif steht für Else If. Was es sagt, ist, dass, wenn der gesamte andere Code darüber falsch zurückgibt, Python diese Else-If-Anweisung ausführen sollte.
Schließlich pausiert sleep(0.15) den Code für 0,15 Sekunden. Warum den Code überhaupt pausieren? Es geht hauptsächlich um Leistungsprobleme. Der Raspberry Pi wird den Ausgabecode so schnell senden, dass es Ihre GUI ein wenig verzögern wird. Es ist noch ausgeprägter, wenn Sie Ihren Raspberry Pi über SSH verwenden. Es wird eine spürbare Verzögerung geben, die sich im Laufe der Zeit nur verschlimmern wird. Das Pausieren des Codes verlangsamt ihn, um Leistungsprobleme zu vermeiden.
Auch lesen: Wie man Arduino über Visual Studio Code mit PlatformIO programmiert
Häufig gestellte Fragen
Ist es sicher, Pins am Raspberry Pi im laufenden Betrieb zu wechseln?
Hot-Swapping, oder das Ersetzen der Pins des Raspberry Pi, während er eingeschaltet ist, ist im Allgemeinen eine schlechte Idee. Es ist immer sicherer, ihn von der Stromversorgung zu entfernen, bevor Sie wechseln.
Was macht 4-Pin Drucktasten besser als 3-Pin Drucktasten?
Nutzungsbedingt sind sie im Grunde gleich. Aber vier Pins ermöglichen es Ihnen, die 4-Pin Drucktaste in einer Serienschaltung mit einer anderen Drucktaste zu verdrahten.
Kann ich jeden Pin am Raspberry Pi als Eingangspin verwenden?
Der Raspberry Pi hat möglicherweise 40 Pins, aber nur 27 von ihnen sind GPIO. Sie können nur GPIO-Pins in Eingangs- und Ausgangspins programmieren. Die meisten IDEs erlauben es Ihnen nicht, einen Nicht-GPIO-Pin in einen Eingangspin umzuprogrammieren.
Alle Fotos und Screenshots von Terenz Jomar Dela Cruz