Een ledlamp laten knipperen

I/O-pinnen voor algemeen gebruik (GPIO) kunnen afzonderlijk worden bediend. Dit is handig voor het aansturen van LED's, relais en andere stateful apparaten. In dit onderwerp gebruikt u .NET en de GPIO-pinnen van uw Raspberry Pi om een LED aan te zetten en herhaaldelijk te knipperen.

Vereisten

  • Op ARM gebaseerde computer met één bord (ARMv7 of hoger) (SBC)
  • 5 mm LED
  • 330 Ω weerstand
  • Breadboard
  • Jumperdraden
  • Raspberry Pi GPIO breakout board (optioneel/aanbevolen)
  • .NET SDK 7 of hoger

Notitie

Deze zelfstudie is geschreven ervan uitgaande dat het doelapparaat 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. Voor Raspberry Pi raadpleegt u Een SSH-server instellen in de documentatie van Raspberry Pi.

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 (langer, positief lood)
  • LED-kathode (korter, negatief lood) tot 330 Ω weerstand (beide uiteinden)
  • 330 Ω weerstand (ander uiteinde) op 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.

Tip

Een GPIO-breakoutboard 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 pakket System.Device.Gpio toe aan het project. Gebruik .NET CLI vanuit de projectmap of Visual Studio.

    dotnet add package System.Device.Gpio --version 2.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:

    • Met een using-declaratie wordt een exemplaar van GpioControllergemaakt. De using declaratie zorgt ervoor dat het object wordt verwijderd en hardwareresources correct worden vrijgegeven.
    • GPIO pin 18 is geopend voor uitvoer
    • Een while lus wordt voor onbepaalde tijd uitgevoerd. Elke iteratie:
      1. Schrijft een waarde naar GPIO-pin 18. Als ledOn waar is, wordt er geschreven PinValue.High (aan). Anders wordt geschreven PinValue.Low.
      2. Slaapt 1000 ms.
      3. Hiermee schakelt u de waarde van ledOn.
  4. de app bouwen. Als u de .NET CLI gebruikt, voert u uit dotnet build. Druk op Ctrl+Shift+B om Visual Studio te bouwen.

  5. Implementeer de app in de SBC als een zelfstandige app. Zie .NET-apps implementeren in Raspberry Pi voor instructies. Zorg ervoor dat u de uitvoerbare uitvoerbare uitvoermachtiging 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 uit en aan.

  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