Far lampeggiare un LED
I/O (GPIO) per utilizzo generico possono essere controllati singolarmente. Ciò è utile per controllare i LED, gli inoltro e altri dispositivi con stato. In questo argomento si useranno .NET e i pin GPIO di Raspberry Pi per accendere un LED e lampeggiarlo ripetutamente.
Prerequisiti
- Computer a scheda singola (SBC) basato su ARM (ARMv7 o versione successiva)
- LED di 5 mm
- 330 Ω resistore
- Breadboard
- Cavi ponticello
- Scheda di interruzione Raspberry Pi GPIO (facoltativa/consigliata)
- .NET SDK 7 o versione successiva
Nota
Questa esercitazione viene scritta presupponendo che il dispositivo di destinazione sia Raspberry Pi. Questa esercitazione può tuttavia essere usata per qualsiasi SBC basato su Linux che supporta .NET, ad esempio Orange Pi, ODROID e altro ancora.
Assicurarsi che SSH sia abilitato nel dispositivo. Per Raspberry Pi, vedere Configurazione di un server SSH nella documentazione di Raspberry Pi.
Preparare l'hardware
Usare i componenti hardware per compilare il circuito come illustrato nel diagramma seguente:
L'immagine precedente illustra le connessioni seguenti:
- GPIO 18 a led anode (lead più lungo, positivo)
- Cathode LED (lead più breve, negativo) a 330 Ω resistore (entrambe le estremità)
- 330 Ω resistore (altra estremità) a terra
Fare riferimento al diagramma di pinout seguente in base alle esigenze:
Immagine di Raspberry Pi Foundation.
Suggerimento
È consigliabile semplificare le connessioni all'intestazione GPIO con una scheda di interruzione GPIO.
Creare l'app
Completare i passaggi seguenti nell'ambiente di sviluppo preferito:
Creare una nuova app console .NET usando l'interfaccia della riga di comando .NET o Visual Studio. Denominarlo BlinkTutorial.
dotnet new console -o BlinkTutorial cd BlinkTutorial
Aggiungere il pacchetto System.Device.Gpio al progetto. Usare l'interfaccia della riga di comando .NET dalla directory del progetto o da Visual Studio.
dotnet add package System.Device.Gpio --version 2.2.0-*
Sostituire il contenuto di Program.cs con il codice seguente:
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; }
Nel codice precedente:
- Una dichiarazione using crea un'istanza di
GpioController
. Lausing
dichiarazione garantisce che l'oggetto venga eliminato e le risorse hardware vengano rilasciate correttamente. - Il pin GPIO 18 viene aperto per l'output
- Un
while
ciclo viene eseguito in modo indefinito. Ogni iterazione:- Scrive un valore in GPIO pin 18. Se
ledOn
è true, scrivePinValue.High
(on). In caso contrario, scrivePinValue.Low
. - Dorme 1000 ms.
- Attiva l'interruttore del valore di
ledOn
.
- Scrive un valore in GPIO pin 18. Se
- Una dichiarazione using crea un'istanza di
Compilare l'app. Se si usa l'interfaccia della riga di comando .NET, eseguire
dotnet build
. Per compilare in Visual Studio, premere CTRL+MAIUSC+B.Distribuire l'app in SBC come app autonoma. Per istruzioni, vedere Distribuire app .NET in Raspberry Pi. Assicurarsi di concedere all'eseguibile l'autorizzazione di esecuzione usando
chmod +x
.Eseguire l'app in Raspberry Pi passando alla directory di distribuzione ed eseguendo il file eseguibile.
./BlinkTutorial
Il LED lampeggia fuori e su ogni secondo.
Terminare il programma premendo CTRL+C.
Congratulazioni! È stato usato GPIO per lampeggiare un LED.
Ottenere il codice sorgente
L'origine per questa esercitazione è disponibile in GitHub.