So steuern GPIO Pins auf Ihre Raspberry Pi

Um die Raspberry Pi Verstärkung Zugriff auf die GPIO-Pins zu haben, müssen Sie ein Python-Modul installieren, das zwischen der Sprache und die Stifte als Schnittstelle fungiert. Dies ermöglicht es, ein Programm zu lesen, was in den Signalen auf den Leitungen GPIO geschieht.

Ein paar verschiedene Möglichkeiten gibt, aber vielleicht am einfachsten zu installieren ist RPi.GPIO. Vielleicht ist der einfachste Weg, zu installieren, ist es von einem Terminalfenster mit dem Befehl

 sudo apt-get install python3-rpi.gpio

Wenn Sie eine frühere Version dieses Moduls haben, müssen Sie zuerst die alte deinstallieren, indem Sie die Dateien manuell zu löschen. Finden Sie sie mit diesem Befehl in einem Befehlszeilenfenster

find / usr | grep Python | grep -i gpio

und löschen Sie die, die Sie finden.

Jedes Python-Programm, das die GPIO-Pins zugreifen muss, müssen folgende Operationen durchführen:

  1. Importieren Sie das Modul an die Pins zu sprechen.

  2. Richten Sie, wie Sie auf die Stifte beziehen möchten.

  3. Initialisieren Sie die GPIO-Pins Sie verwenden möchten.

  4. Lesen oder zu den Stiften schreiben.

Dies setzt einfach alle GPIO-Pins Eingänge zu sein und sie dann ständig liest wieder in den Raspberry Pi. Es druckt den neuen Zustand, wenn einer der Eingänge ändern.

#! / Usr / bin / env python # GPIO Eingangszustand Monitor auf dem Raspberry Pi # GPIO Zustand - zeigen den Zustand der alle GPIO-Eingänge auf P1 # nicht GPIO-Pins als ximport RPi.GPIO als GPIOprint gezeigt "Anzeige der Eingangs GPIO-Pin Zustände "print" Ctrl C "boardRevision = GPIO.RPI_REVISION # definieren Sie die Stifte zu stoppen boardRevision == 1 bis useif: Pinout = [-1, -1,0, -1,1, -1,4,14, -1 , 15,17,18,21, -1,22,23, -1,24,10, -1,9,25,11,8, -1,7], wenn boardRevision == 2: Pinout = [-1 , -1,2, -1,3, -1,4,14, -1,15,17,18,27, -1,22,23, -1,24,10, -1,9,25, 11,8, -1,7] GPIO.setmode (GPIO.BCM) # verwenden echte GPIO numberinginputState = [5 für Temp in range (0,26)] # leere Liste für die Eingabe levelsfor Stift in Reichweite (0,26): # alle Pins auf inputsif Pinout [pin] = -1: GPIO.setup (Pinout [pin], GPIO.IN, pull_up_down = GPIO.PUD_UP) # ersetzen Zeile oberhalb der Zeile unter der Wirkung von Floating-Eingänge zu sehen # GPIO.setup (Pinout [pin], GPIO.IN, pull_up_down = GPIO.PUD_OFF), während True: # tun foreverneedUpdate = Falsefor in Reichweite prüfen (0,26): # Blick an jedem Eingang in turnif Pinout [Test] = - 1: wenn GPIO.input (Pinout [Test]): latestState = 1else: latestState = 0if (latestState = eingabe [Test]!): needUpdate = Trueprint "GPIO", Pinout [Test] "geändert auf logisch", latestStateinputState [Test] = latestStateif needUpdate: # Anzeige alle Stift statesprint "Aktueller Zustand" für Zeile in Bereich (1, -1, -1): für die Show in Bereich (Zeile, 26,2): wenn eingabe [show] = 5 : print "x", print "" #end der Hauptschleife: eingabe [Show], sonst drucken

Werfen Sie einen Blick auf den Code und sehen, was geschieht. Nach dem Import der RPi.GPIO Modul, findet der Code die Platinenrevision und initialisiert eine Liste auf, was die Platinenrevision ist. Die Liste hat einen Wert von -1 in den Stiftpositionen, an denen kein GPIO-Pin ist (das heißt, wo es einen Strom oder Erdungsstift ist).

Ansonsten hat sie die GPIO-Nummer in der entsprechenden Stiftposition in der Liste. Dann erstellt der Code eine Liste, die die Eingabewerte für jeden Stift hält.

Dieser Code wird ausgefüllt mit einem beliebigen Wert von 5, wohl wissend, dass jede reale Eingangswert nur eine Null oder Eins sein wird. Als nächstes werden alle Stifte aktiviert gesetzt Eingänge mit den internen Pull-up-Widerstände zu sein. Das beendet den Setup-Teil des Programms.

Der Rest des Codes ist eine Schleife, die für immer läuft. Er prüft jede Eingabe mit auf die Suche Pinout Liste und ruft die GPIOinput (pin) den Wert jedes Eingangs zurückzukehren. Dies wird mit dem Wert aus dem letzten Zeitpunkt verglichen. Wenn es anders ist, druckt er den aktuellen Zustand dieser Eingabe aus zusammen mit all den Werten der Eingangs in der gleichen Reihenfolge wie die P1-Anschluss des Pins angeordnet.

Um das Programm auszuführen, ein Terminal-Fenster öffnen, navigieren Sie zu dem Verzeichnis, das Programm enthält, und geben Sie

sudo python GPIOstate.py

Sie müssen die sudo Präfix, da das Betriebssystem beschränkt den Zugriff auf die GPIO-Pins und Sie benötigen Root-Privilegien der Lage sein, sie zu nutzen.

Um dies zu überprüfen, schließen Sie einfach ein Ende eines Drahtes zu einer der Masseverbindungen und gehen um, die wiederum das andere Ende des Drahtes an jedem Eingang zu verbinden. Alle Eingänge zeigen zunächst wie auf dem Bildschirm logischen Einsen und logischen Nullen ändern, wenn Sie den Eingang erden.

Achten Sie darauf, dieses Erdungskabel an einem der Stromausgänge zu verbinden: Dies wird kurz aus Ihrer Raspberry Pi Macht. Um dies zu verhindern, setzen Sie ein kleines Stück Knetmasse (Play-Doh, Knetmasse oder blau Tack) in den Schraubverschlüssen der Stromanschlüsse.

Menü