Blinka en LED
GpIO-stift (General-purpose I/O) kan kontrolleras individuellt. Detta är användbart för att styra lysdioder, reläer och andra tillståndskänsliga enheter. I det här avsnittet använder du .NET och Raspberry Pi:s GPIO-stift för att driva en LED och blinka upprepade gånger.
Krav
- ARM-baserad (ARMv7 eller senare) enkelkortsdator (SBC)
- 5 mm LED
- 330 Ω motstånd
- Skärbräda
- Bygeltrådar
- Raspberry Pi GPIO breakout board (valfritt/rekommenderat)
- .NET SDK 7 eller senare
Anteckning
Den här självstudien skrivs förutsatt att målenheten är Raspberry Pi. Den här självstudien kan dock användas för alla Linux-baserade SBC som stöder .NET, till exempel Orange Pi, ODROID med mera.
Kontrollera att SSH är aktiverat på enheten. För Raspberry Pi , se Konfigurera en SSH-server i Raspberry Pi-dokumentationen.
Förbereda maskinvaran
Använd maskinvarukomponenterna för att skapa kretsen enligt följande diagram:
Bilden ovan visar följande anslutningar:
- GPIO 18 till LED-anod (längre, positivt bly)
- LED-katod (kortare, negativ bly) till 330 Ω resistor (endera änden)
- 330 Ω motstånd (andra änden) till marken
Se följande pinout-diagram efter behov:
Bild med tillstånd Raspberry Pi Foundation.
Tips
En GPIO-utbrytningstavla tillsammans med en brödbräda rekommenderas för att effektivisera anslutningarna till GPIO-huvudet.
Skapa appen
Slutför följande steg i önskad utvecklingsmiljö:
Skapa en ny .NET-konsolapp med antingen .NET CLI eller Visual Studio. Ge den namnet BlinkTutorial.
dotnet new console -o BlinkTutorial cd BlinkTutorial
Lägg till paketet System.Device.Gpio i projektet. Använd antingen .NET CLI från projektkatalogen eller Visual Studio.
dotnet add package System.Device.Gpio --version 2.2.0-*
Ersätt innehållet i Program.cs med följande kod:
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; }
I koden ovan:
- En användningsdeklaration skapar en instans av
GpioController
. Deklarationenusing
säkerställer att objektet tas bort och att maskinvaruresurser släpps korrekt. - GPIO-stift 18 öppnas för utdata
- En
while
loop körs på obestämd tid. Varje iteration:- Skriver ett värde till GPIO-stift 18. Om
ledOn
är sant skrivsPinValue.High
(på). Annars skriverPinValue.Low
den . - Rymmer 1 000 ms.
- Växlar värdet
ledOn
för .
- Skriver ett värde till GPIO-stift 18. Om
- En användningsdeklaration skapar en instans av
Skapa appen. Om du använder .NET CLI kör du
dotnet build
. Om du vill skapa i Visual Studio trycker du på Ctrl+Skift+B.Distribuera appen till SBC som en fristående app. Anvisningar finns i Distribuera .NET-appar till Raspberry Pi. Se till att ge den körbara körningsbehörigheten med hjälp av
chmod +x
.Kör appen på Raspberry Pi genom att växla till distributionskatalogen och köra den körbara filen.
./BlinkTutorial
Lysdioderna blinkar av och på varje sekund.
Avsluta programmet genom att trycka på Ctrl+C.
Grattis! Du har använt GPIO för att blinka en LED.
Hämta källkoden
Källan för den här självstudien är tillgänglig på GitHub.