Delen via


Een ledlamp laten knipperen

GPIO-pinnen (General-Purpose I/O) kunnen afzonderlijk worden beheerd. Dit is handig voor het beheren van LED's, relais en andere statusgevoelige apparaten. In dit onderwerp gebruikt u .NET en de GPIO-pinnen van uw Raspberry Pi om een LED van stroom te voorzien zodat deze herhaaldelijk knippert.

Vereiste voorwaarden

  • OP ARM gebaseerde (ARMv7 of hoger) single-board computer (SBC)
  • 5 mm LED
  • 330 Ω weerstand
  • Proefplank
  • Verbindingsdraden
  • Raspberry Pi GPIO breakout board (optioneel/aanbevolen)
  • .NET SDK 8 of hoger

Opmerking

Deze handleiding is geschreven, ervan uitgaande dat het doelapparaat een Raspberry Pi is. Deze zelfstudie kan echter worden gebruikt voor elke linux-SBC die .NET ondersteunt, zoals Orange Pi, ODROID en meer.

Zorg ervoor dat SSH is ingeschakeld op uw apparaat. Raadpleeg voor Raspberry Pi het instellen van een SSH-server in de Raspberry Pi-documentatie.

De hardware voorbereiden

Gebruik de hardwareonderdelen om het circuit te bouwen zoals wordt weergegeven in het volgende diagram:

Een Fritzing-diagram met een circuit met een LED en een weerstand

In de bovenstaande afbeelding ziet u de volgende verbindingen:

  • GPIO 18 naar LED anode (langere, positieve lead)
  • LED-kathode (korter, negatief lood) tot 330 Ω weerstand (beide uiteinden)
  • 330 Ω weerstand (andere uiteinde) aan de grond

Raadpleeg indien nodig het volgende pin-outdiagram:

Een diagram met de pinout van de Raspberry Pi GPIO-header. Afbeelding met dank aan Raspberry Pi Foundation.
Afbeelding met dank aan Raspberry Pi Foundation.

Hint

Een GPIO-breakoutbord in combinatie met een breadboard wordt aanbevolen om verbindingen met de GPIO-header te stroomlijnen.

De app maken

Voer de volgende stappen uit in de ontwikkelomgeving van uw voorkeur:

  1. Maak een nieuwe .NET-console-app met behulp van de .NET CLI of Visual Studio. Noem het BlinkTutorial.

    dotnet new console -o BlinkTutorial
    cd BlinkTutorial
    
  2. Voeg het system.Device.Gpio-pakket toe aan het project. Gebruik .NET CLI uit de projectmap of Visual Studio.

    dotnet add package System.Device.Gpio --version 3.2.0-*
    
  3. Vervang de inhoud van Program.cs door de volgende 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;
    }
    

    In de voorgaande code:

    • Een using-declaratie maakt een exemplaar van GpioController. De using declaratie zorgt ervoor dat het object wordt verwijderd en hardwarebronnen correct worden vrijgegeven.
    • GPIO pin 18 is geopend voor uitvoer
    • Een while lus wordt oneindig uitgevoerd. Elke iteratie:
      1. Hiermee schrijft u een waarde naar GPIO pin 18. Als ledOn waar is, zet hij PinValue.High aan. Anders wordt er geschreven PinValue.Low.
      2. Wacht 1000 milliseconden.
      3. Wisselt de waarde van ledOn.
  4. Bouw de app. Als u de .NET CLI gebruikt, voert u het volgende uit dotnet build. Druk op Ctrl+Shift+B om te bouwen in Visual Studio.

  5. Implementeer de app als een zelfstandige app in de SBC. Zie .NET-apps implementeren in Raspberry Pi voor instructies. Zorg ervoor dat u de uitvoerbare uitvoerbaar bestand uitvoeringsrechten geeft met behulp van chmod +x.

  6. Voer de app uit op de Raspberry Pi door over te schakelen naar de implementatiemap en het uitvoerbare bestand uit te voeren.

    ./BlinkTutorial
    

    De LED knippert elke seconde aan en uit.

  7. Beëindig het programma door op Ctrl+C te drukken.

Gefeliciteerd! U hebt GPIO gebruikt om een LED te knipperen.

De broncode ophalen

De bron voor deze zelfstudie is beschikbaar op GitHub.

Volgende stappen