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:
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í:
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:
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
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-*
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
. Deklaraceusing
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:- Zapíše hodnotu do gpio pin 18. Pokud
ledOn
je pravda, zapíšePinValue.High
se (on). V opačném případě zapíšePinValue.Low
. - Spí 1000 ms.
- Přepíná hodnotu .
ledOn
- Zapíše hodnotu do gpio pin 18. Pokud
-
Deklarace using vytvoří instanci objektu
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.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
.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á.
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.