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:

Ett Fritzing-diagram som visar en krets med en LED och ett motstånd

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:

Ett diagram som visar pinouten för Raspberry Pi GPIO-huvudet. Bild med tillstånd Raspberry Pi Foundation.
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ö:

  1. Skapa en ny .NET-konsolapp med antingen .NET CLI eller Visual Studio. Ge den namnet BlinkTutorial.

    dotnet new console -o BlinkTutorial
    cd BlinkTutorial
    
  2. 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-*
    
  3. 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. Deklarationen using 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:
      1. Skriver ett värde till GPIO-stift 18. Om ledOn är sant skrivs PinValue.High (på). Annars skriver PinValue.Lowden .
      2. Rymmer 1 000 ms.
      3. Växlar värdet ledOnför .
  4. 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.

  5. 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.

  6. 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.

  7. 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.

Nästa steg