Blikání diodou LED

Kolíky GPIO (General-Purpose I/O) lze ovládat jednotlivě. To je užitečné pro ovládání LED diod, relé a dalších stavových zařízení. V tomto tématu použijete .NET a piny GPIO raspberry Pi k napájení LED a budete ji opakovaně blikat.

Požadavky

  • Jedno deskový počítač (SBC) založený na ARM (ARMv7 nebo vyšší)
  • 5 mm LED
  • 330 Ω rezistor
  • Prkénko
  • Propojovací dráty
  • Breakout deska Raspberry Pi GPIO (volitelné/doporučené)
  • .NET SDK 7 nebo novější

Poznámka

Tento kurz je napsán za předpokladu, že cílovým zařízením je Raspberry Pi. Tento kurz ale můžete použít pro jakýkoli linuxový SBC, který podporuje .NET, například Orange Pi, ODROID a další.

Ujistěte se, že je na vašem zařízení povolený protokol SSH. Informace o Raspberry Pi najdete v tématu Nastavení serveru SSH v dokumentaci k Raspberry Pi.

Příprava hardwaru

Pomocí hardwarových komponent sestavte okruh, jak je znázorněno v následujícím diagramu:

Fritzing diagram znázorňující obvod s LED a odporem

Na obrázku výše jsou znázorněna následující připojení:

  • GPIO 18 na LED anoda (delší, kladné vedení)
  • LED katoda (kratší, záporné olovo) až 330 Ω rezistoru (na obou končích)
  • 330 Ω rezistoru (jiný konec) k zemi

Podle potřeby si projděte následující diagram připnutí:

Diagram znázorňující pinout hlavičky GpIO Raspberry Pi Obrázek se svolením Nadace Raspberry Pi.
Obrázek se svolením Nadace Raspberry Pi.

Tip

Pro zjednodušení připojení k hlavičce GPIO se doporučuje skupinová deska GPIO ve spojení s popisem cesty.

Vytvoření aplikace

V upřednostňovaném vývojovém prostředí proveďte následující kroky:

  1. Vytvořte novou konzolovou aplikaci .NET pomocí rozhraní příkazového řádku .NET nebo sady Visual Studio. Pojmenujte ho BlinkTutorial.

    dotnet new console -o BlinkTutorial
    cd BlinkTutorial
    
  2. Přidejte do projektu balíček System.Device.Gpio . Použijte rozhraní příkazového řádku .NET z adresáře projektu nebo sady Visual Studio.

    dotnet add package System.Device.Gpio --version 2.2.0-*
    
  3. Obsah souboru Program.cs nahraďte tímto kódem:

    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;
    }
    

    V předchozím kódu:

    • Deklarace using vytvoří instanci objektu GpioController. Deklarace using zajistí odstranění objektu a správné uvolnění hardwarových prostředků.
    • GpIO pin 18 je otevřen pro výstup
    • Smyčka while běží neomezeně dlouho. Každá iterace:
      1. Zapíše hodnotu do gpio pin 18. Pokud ledOn je pravda, zapíše PinValue.High se (on). V opačném případě zapíše PinValue.Low.
      2. Spí 1000 ms.
      3. Přepíná hodnotu .ledOn
  4. Sestavení aplikace Pokud používáte rozhraní příkazového řádku .NET, spusťte příkaz dotnet build. Pokud chcete sestavit v sadě Visual Studio, stiskněte klávesu Ctrl+Shift+B.

  5. Nasaďte aplikaci do SBC jako samostatnou aplikaci. Pokyny najdete v tématu Nasazení aplikací .NET do Raspberry Pi. Ujistěte se, že jste spustitelnému souboru dali oprávnění ke spuštění pomocí příkazu chmod +x.

  6. Spusťte aplikaci na Raspberry Pi přepnutím do adresáře nasazení a spuštěním spustitelného souboru.

    ./BlinkTutorial
    

    Kontrolka LED bliká a každou sekundu bliká.

  7. Ukončete program stisknutím ctrl+C.

Gratulujeme! Pomocí GPIO jste blikali kontrolou LED.

Získání zdrojového kódu

Zdroj pro tento kurz je k dispozici na GitHubu.

Další kroky