Allgemeine I/O-Pins (GPIO) können einzeln gesteuert werden. Dies ist nützlich für die Steuerung von LEDs, Relays und anderen zustandsbehafteten Geräten. In diesem Thema verwenden Sie .NET und die GPIO-Pins Ihres Raspberry Pi, um eine LED zu aktivieren und wiederholt zu blinken.
- ARM-basierter (ARMv7 oder höher) Single-Board-Computer (SBC)
- 5-Millimeter-LED
- 330 Ω Widerstand
- Breadboard
- Jumper-Kabel
- Raspberry Pi GPIO Breakout Board (optional/empfohlen)
- .NET SDK 8 oder höher
Hinweis
Dieses Tutorial wurde unter der Annahme geschrieben, dass das Zielgerät ein Raspberry Pi ist. Dieses Tutorial kann jedoch für jeden Linux-basierten SBC verwendet werden, der .NET unterstützt, z. B. Orange Pi, ODROID und mehr.
Stellen Sie sicher, dass SSH auf Ihrem Gerät aktiviert ist. Für Raspberry Pi: Lesen Sie Einrichten eines SSH-Servers in der Dokumentation zu Raspberry Pi.
Verwenden Sie die Hardwarekomponenten, um den Schaltkreis wie im folgenden Diagramm dargestellt zu erstellen:
Die abbildung oben zeigt die folgenden Verbindungen:
- GPIO 18 bis LED-Anode (länger, positiver Lead)
- LED-Kathode (kürzere, negative Leitung) an 330-Ω-Widerstand (beide Enden)
- 330-Ω-Widerstand (anderes Ende) an Masse
Beachten Sie falls nötig das folgende Anschlussdiagramm:
Bild mit freundlicher Genehmigung der Raspberry Pi Foundation.
Tipp
Ein GPIO-Breakout-Board in Verbindung mit einer Steckplatine wird empfohlen, um die Verbindungen zum GPIO-Header zu optimieren.
Führen Sie in Ihrer bevorzugten Entwicklungsumgebung die folgenden Schritte aus:
Erstellen Sie eine neue .NET-Konsolen-App, indem Sie entweder die .NET-CLI oder Visual Studio verwenden. Nennen Sie es BlinkTutorial.
dotnet new console -o BlinkTutorial
cd BlinkTutorial
Fügen Sie das System.Device.Gpio-Paket zum Projekt hinzu. Verwenden Sie entweder .NET CLI aus dem Projektverzeichnis oder Visual Studio.
dotnet add package System.Device.Gpio --version 3.2.0-*
Ersetzen Sie den Inhalt von Program.cs durch den folgenden Code:
using System;
using System.Device.Gpio;
using System.Threading;
Console.WriteLine("Blinking LED. Press Ctrl+C to end.");
int pin = 18;
using var controller = new GpioController();
controller.OpenPin(pin, PinMode.Output);
bool ledOn = true;
while (true)
{
controller.Write(pin, ((ledOn) ? PinValue.High : PinValue.Low));
Thread.Sleep(1000);
ledOn = !ledOn;
}
Im vorhergehenden Code:
- Eine using-Deklaration erstellt eine Instanz von
GpioController
. Mit der using
-Deklaration wird sichergestellt, dass das Objekt verworfen wird und die Hardwareressourcen richtig freigegeben werden.
- GPIO-Pin 18 wird für die Ausgabe geöffnet
- Eine
while
-Schleife wird ohne zeitliche Begrenzung ausgeführt. Jede Iteration:
- Schreibt einen Wert in GPIO-Pin 18. Wenn
ledOn
den Wert „true“ hat, wird PinValue.High
geschrieben (ein). Andernfalls wird PinValue.Low
geschrieben.
- Wartet 1000 ms lang ab.
- Umschalten des Werts von
ledOn
.
Erstellen Sie die App. Führen Sie dotnet build
aus, wenn Sie die .NET-CLI verwenden. Drücken Sie STRG+UMSCHALT+B, um die App in Visual Studio zu erstellen.
Stellen Sie die App auf dem SBC als eigenständige App bereit. Anweisungen hierzu finden Sie unter Bereitstellen von .NET-Apps auf einem Raspberry Pi-Gerät. Erteilen Sie dabei mithilfe von die chmod +x
-Berechtigung für ausführbare Dateien.
Führen Sie die App auf dem Raspberry Pi aus, indem Sie zum Bereitstellungsverzeichnis wechseln und die ausführbare Datei ausführen.
./BlinkTutorial
Die LED blinkt im Sekundentakt aus und ein.
Beenden Sie das Programm, indem Sie STRG+C drücken.
Glückwunsch! Sie haben GPIO verwendet, um eine LED zu blinken.
Herunterladen des Quellcodes
Der Quellcode für dieses Tutorial ist auf GitHub verfügbar.