banner

Nachricht

Jun 05, 2023

So verwenden Sie Drucktasten mit Raspberry Pi GPIO-Pins

Wenn Sie jemals eine LED mit einem Raspberry Pi verwendet haben, wissen Sie wahrscheinlich, wie GPIO-Ausgänge funktionieren. Der Code sorgt dafür, dass Strom durch GPIO-Pins (General Purpose Input/Output) fließt, durch die LEDs fließt und Dinge zum Leuchten bringt. Aber haben Sie jemals versucht, das Gegenteil zu tun? Mit Drucktasten können Sie genau das Gegenteil bewirken. Dieses Tutorial zeigt Ihnen, wie Sie einen GPIO-Pin in einen Eingabepin umwandeln und dabei jeden Tastendruck hören, den Sie machen!

Ein Druckknopf ist eine Art Schalter. Es verfügt über zwei separate leitende Stifte, die durch ihre Trennung voneinander einen vollständigen Stromkreis verhindern. Wenn Sie auf einen Druckknopf drücken, drücken Sie tatsächlich die beiden Stifte zusammen und schließen so den Stromkreis. Lässt man sie jedoch los, gibt es einen federartigen Mechanismus, der die Stifte wieder trennt.

Der typische Druckknopf in Sensorbausätzen verfügt über vier Stifte, wobei jeder Stift von den anderen getrennt ist. Direkt unter dem Tastenbereich befindet sich eine bewegliche Metallplatte, die nach unten geht und alle anderen Stifte verbindet, wenn der Druckknopf nach unten gedrückt wird.

In einem 4-poligen Druckknopf befinden sich zwei Platten. Jeder ist mit zwei externen Pins verbunden. Beide Platten sind voneinander getrennt und können nur durch Druck auf eine dritte Platte – die Metallplatte unterhalb des Knopfes – verbunden werden.

In gewisser Weise sind in einem Taster immer zwei Pins verbunden. Wenn Sie den 4-Pin-Taster drücken, verbinden Sie alle vier Pins miteinander.

Dieses Mal sorgen wir dafür, dass die GPIO-Pins des Raspberry Pi den Tastendruck eines Tasters erkennen. Wenn Strom durchfließt, gibt der Raspberry Pi eine Meldung aus, die Ihnen mitteilt, dass er funktioniert.

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 Pin oben links ist Pin 1 und rechts davon Pin 2. Unter Pin 1 befindet sich Pin 3, rechts davon Pin 4 und so weiter.

Wenn Sie die GND- und 3,3-V-Pins vertauschen, mit 3,3 V am Widerstand und GND auf der anderen Seite des Tasters, kehren Sie die Logik des Tasters um. Es wird ausgegeben, dass Pin 7 HIGH ist! die ganze Zeit und Pin 7 wird auf LOW, wenn Sie die Taste drücken.

Drucktasten verwenden zwei Arten von Widerständen: Pull-up und Pull-down. Der mit 3,3 V verbundene Widerstand ist ein Pull-Up-Widerstand. Es zieht die Spannung nach oben. Pull-Down-Widerstände hingegen senken die Spannung, indem sie mit einem GND-Pin verbunden werden.

Sie können immer noch einen Druckknopf ohne Widerstand verwenden, aber dadurch bleibt Ihr GPIO-Pin auf Float. Ein schwebender GPIO-Pin empfängt keine direkte elektrische Ladung und sucht daher nach Ladungen in seiner Umgebung. Befindet sich beispielsweise ein starkes elektromagnetisches Feld in der Nähe, wird stattdessen einfach dieses gemessen.

Deshalb brauchen Sie einen Bezugspunkt. Wenn Sie den GPIO-Pin standardmäßig an 0 V (GND) anschließen, misst er 0 V, solange die Taste nicht gedrückt ist. Wenn Sie dies jedoch nicht tun, kann der Wert des GPIO-Pins beliebig sein – sogar negative Volt!

Schwimmende Stifte können jedoch einige interessante Dinge bewirken. Wenn Sie einen Stift schweben lassen, kann er den Spannungsunterschied in der Luft erfassen und sogar den Effekt messen, wenn sich Ihr Finger in der Nähe des Stifts selbst bewegt. Es ist wie ein elektromagnetischer Anwesenheitssensor oder so.

Schade, dass man das nicht einfach auf dem Raspberry Pi machen kann. Damit dies nützlich ist, benötigen Sie analoge Pins, und der Raspberry Pi verfügt nicht über solche.

Wenn Sie das wissen, sollten Sie verstehen, dass Pin 7 erkennt, ob 3,3 V oder 0 V durch ihn fließen. Wenn es 3,3 V erkennt, meldet es sich selbst als HIGH. Wenn es jedoch 0 V erkennt, ist es LOW.

Teilen wir den Code in drei Teile: Importbefehle, Setup-Befehle und Schleifenbefehle.

Wir verwenden zwei Importbefehle:

import 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 als GPIO am Ende hinzufügen, sagen Sie Python, dass die Eingabe von GPIO der Eingabe von RPi.GPIO entspricht. Sie können es sogar durch andere Zeichenfolgen ersetzen, und der Code sollte weiterhin funktionieren, solange Sie ihn richtig formatieren.

Andererseits importiert from time import sleep nur einen Teil des Zeitmoduls von Python. Damit können Sie die Funktion „sleep()“ verwenden.

Wir arbeiten mit den drei Befehlen aus dem RPi.GPIO-Modul an den Setup-Befehlen, um einige Einstellungen zu korrigieren.

Das RPi.GPIO-Modul zeigt normalerweise eine Meldung an, die Sie vor der Verwendung der GPIO-Pins warnt, sobald Sie das Python-Skript starten. GPIO.setwarnings(False) verhindert, dass das passiert.

GPIO.setmode(GPIO.BOARD) ist ein weiterer Befehl aus dem RPi.GPIO-Modul. Es teilt Python mit, dass Sie die Pinbelegung „BOARD“ verwenden. Es gibt zwei Arten der Pinbelegung in RPi.GPIO: BOARD und BCM. Mit BOARD können Sie Pins anhand der Pin-Nummern auswählen. Mit BCM (kurz für „Broadcom“) können Sie Pins mit ihrem individuellen Broadcom SOC-Kanal auswählen. BOARD ist viel einfacher zu verwenden, da es immer dasselbe ist, egal welche Art von Raspberry Pi-Board Sie verwenden. Die BCM-Pinbelegung kann je nach verwendetem Modell variieren.

Schließlich können Sie mit GPIO.setup(7, GPIO.IN) Pin 7 als Eingangspin festlegen. Es verwendet die Funktion .setup() und liest 7 als den Pin, den Sie auswählen möchten. GPIO.IN bedeutet, dass Sie versuchen, dies als Eingabe-Pin festzulegen.

Eingebettete Systeme verwenden normalerweise nur ein paar Codezeilen und wiederholen diese in einer Endlosschleife. Verschiedene Programmiersprachen verwenden dazu unterschiedliche Methoden. Aber das Konzept ist dasselbe: Sie verwenden eine Art Schleife. Für Python ist das while True:.

while True: ermöglicht Ihnen eine unbegrenzte Schleife des Codes. Alles, was Sie hineinlegen, läuft ewig, solange Strom auf der Platine vorhanden ist.

if GPIO.input(7) == GPIO.HIGH: ist eine if-Anweisung. Es besagt, dass, wenn Pin 7, der ein Eingangspin ist, als HIGH angezeigt wird, alles darin ausgeführt werden sollte.

print("Pin 7 ist HIGH!") befindet sich in einer if-Anweisung. Alles, was es tut, ist auszudrucken. Pin 7 ist HIGH! auf der Konsole. Sie können dies durch eine beliebige Zeichenfolge, Zahl oder Variable ersetzen, die diese enthält.

Als nächstes kommt elif GPIO.input(7) == GPIO.LOW:. Es ist im Grunde das Gleiche wie if GPIO.input(7) == GPIO.HIGH: mit Ausnahme des ersten Teils: Es wird elif anstelle von if verwendet. Der Code elif steht für Else If. Darin heißt es, dass Python diese else-if-Anweisung ausführen sollte, wenn der gesamte darüber liegende Code „false“ zurückgibt.

Schließlich pausiert „sleep(0.15)“ den Code für 0,15 Sekunden. Warum den Code überhaupt pausieren? Es handelt sich hauptsächlich um Leistungsprobleme. Der Raspberry Pi sendet den Ausgabecode so schnell, dass Ihre GUI etwas verzögert wird. Noch ausgeprägter ist es, wenn Sie Ihren Raspberry Pi über SSH nutzen. Es wird eine spürbare Verzögerung geben, die mit der Zeit nur noch schlimmer wird. Durch Anhalten des Codes wird dieser verlangsamt, um Leistungsprobleme zu vermeiden.

Ein Hot-Swap bzw. Austausch der Pins des Raspberry Pi im eingeschalteten Zustand ist im Allgemeinen eine schlechte Idee. Es ist immer sicherer, es vor dem Umschalten von der Stromversorgung zu trennen.

Vom Nutzen her sind sie im Grunde gleich. Da Sie jedoch vier Pins haben, können Sie den 4-Pin-Taster in einer Reihenschaltung mit einem anderen Taster verbinden.

Der Raspberry Pi hat zwar 40 Pins, aber nur 27 davon sind GPIO. Sie können GPIO-Pins nur in Eingangs- und Ausgangspins programmieren. Bei den meisten IDEs können Sie einen Nicht-GPIO-Pin nicht in einen Eingangspin umprogrammieren.

Alle Fotos und Screenshots von Terenz Jomar Dela Cruz

Terenz ist ein Hobby-Roboter, der versucht, den großartigsten Roboter zu bauen, den die Welt je gesehen hat. Das hätte er schon tun können, wenn er nicht so sehr damit beschäftigt gewesen wäre, als zweites Hobby LEDs durchzubrennen.

Unsere neuesten Tutorials werden direkt in Ihren Posteingang geliefert

So erstellen, anpassen und bearbeiten Sie Listen in Google Docs

So fügen Sie ein Wasserzeichen in Microsoft Excel hinzu

So verwenden Sie die bedingte Formatierung in Microsoft Outlook

So speichern Sie eine Route auf Google Maps

6 Möglichkeiten, den Zustand der Festplatte in Windows zu überprüfen

5 Möglichkeiten, einen WhatsApp-Profillink zu erstellen und zu teilen

Facebook-Bilder werden nicht geladen? Hier sind die Korrekturen

So beheben Sie, dass Kontaktnamen in iOS nicht angezeigt und als Nummern angezeigt werden

Affiliate-Offenlegung:Make Tech Easier erhält möglicherweise eine Provision für Produkte, die über unsere Links gekauft werden, was die Arbeit unterstützt, die wir für unsere Leser leisten.

Tipp: Affiliate-Offenlegung:
AKTIE