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:
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:
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:
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
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-*
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
GpioController
gemaakt. Deusing
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:- Schrijft een waarde naar GPIO-pin 18. Als
ledOn
waar is, wordt er geschrevenPinValue.High
(aan). Anders wordt geschrevenPinValue.Low
. - Slaapt 1000 ms.
- Hiermee schakelt u de waarde van
ledOn
.
- Schrijft een waarde naar GPIO-pin 18. Als
- Met een using-declaratie wordt een exemplaar van
de app bouwen. Als u de .NET CLI gebruikt, voert u uit
dotnet build
. Druk op Ctrl+Shift+B om Visual Studio te bouwen.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
.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.
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.