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 en deze herhaaldelijk te laten knipperen.

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 10 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 ondersteuning biedt voor .NET, 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 draad)
  • LED-kathode (kortere, negatieve aansluiting) naar 330 Ω weerstand (aan een van beide uiteinden)
  • 330 Ω weerstand (andere uiteinde) aan de grond

Raadpleeg indien nodig het volgende pinnendiagram:

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 package add System.Device.Gpio --version 4.0.1
    
  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 draait voor onbepaalde tijd door. Elke iteratie:
      1. Hiermee schrijft u een waarde naar GPIO pin 18. Als ledOn waar is, schrijft PinValue.High (aan). Anders wordt er geschreven PinValue.Low.
      2. Wacht 1000 milliseconden.
      3. Hiermee wordt de waarde van ledOn omgeschakeld.
  4. Maak de app. Als u de .NET CLI gebruikt, voert u dotnet build uit. Als u in Visual Studio wilt bouwen, drukt u op Ctrl+Shift+B.

  5. Implementeer de app als een zelfstandige app in de SBC. Zie Deploy-.NET-apps voor Raspberry Pi voor instructies. Zorg ervoor dat u het uitvoerbare bestand uitvoerende rechten 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