Hacer parpadear un LED
Los pines de E/S de uso general (GPIO) se pueden controlar individualmente. Esto resulta útil para controlar LED, relés y otros dispositivos con estado. En este tema, usará .NET y los pines de GPIO de Raspberry Pi para alimentar un LED y hacer que parpadee repetidamente.
Prerrequisitos
- Equipo de placa única (SBC) basado en ARM (ARMv7 o superior)
- LED de 5 mm
- Resistencia de 330 Ω
- Placa de pruebas
- Cables de puente
- Placa adaptadora GPIO de Raspberry Pi (opcional/recomendada)
- SDK de .NET 7 o versiones posteriores
Nota
En este tutorial, se presupone que el dispositivo de destino es Raspberry Pi. Sin embargo, se puede usar con cualquier equipo SBC basado en Linux que admita .NET, como Orange Pi, ODROID, etc.
Asegúrese de que SSH está habilitado en el dispositivo. Para Raspberry Pi, consulte Configuración de un servidor SSH en la documentación de Raspberry Pi.
Preparación del hardware
Use los componentes de hardware para crear el circuito como se muestra en el diagrama siguiente:
En la imagen anterior se muestran las siguientes conexiones:
- GPIO 18 a ánodo LED (cable positivo más largo)
- Del cátodo LED (cable negativo más corto) a la resistencia de 330 Ω (cualquiera de los extremos)
- Resistencia de 330 Ω (el otro extremo) a la toma de tierra
Consulte el siguiente diagrama de pines según sea necesario:
Imagen de Raspberry Pi Foundation.
Sugerencia
Se recomienda una placa de pruebas de GPIO junto con una placa para optimizar las conexiones con el encabezado de GPIO.
Creación de la aplicación
Complete los pasos siguientes en el entorno de desarrollo que prefiera:
Cree una aplicación de consola de .NET mediante la CLI de .NET o Visual Studio. Asígnele el nombre BlinkTutorial.
dotnet new console -o BlinkTutorial cd BlinkTutorial
Agregue el paquete System.Device.Gpio al proyecto. Use la CLI de .NET desde el directorio del proyecto o Visual Studio.
dotnet add package System.Device.Gpio --version 2.2.0-*
Reemplace el contenido de Program.cs por el código siguiente:
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; }
En el código anterior:
- Una declaración using crea una instancia de
GpioController
. La declaraciónusing
garantiza que el objeto se deseche y que los recursos de hardware se liberen correctamente. - Se abre el pin GPIO 18 para la salida
- Se ejecuta un bucle
while
indefinidamente. En cada iteración:- Se escribe un valor en el pin GPIO 18. Si
ledOn
es true, se escribePinValue.High
(encender). De lo contrario, se escribePinValue.Low
. - Se suspende durante 1000 ms.
- Se alterna el valor de
ledOn
.
- Se escribe un valor en el pin GPIO 18. Si
- Una declaración using crea una instancia de
Compile la aplicación. Si usa la CLI de .NET, ejecute
dotnet build
. Para realizar la compilación en Visual Studio, presione Ctrl+Mayús+B.Implemente la aplicación en el equipo de placa única como una aplicación independiente. Para obtener instrucciones, vea Implementación de aplicaciones .NET en Raspberry Pi. Asegúrese de conceder el permiso execute ejecutable mediante
chmod +x
.Para ejecutar la aplicación en Raspberry Pi, cambie al directorio de implementación y ejecute el archivo ejecutable.
./BlinkTutorial
El LED se enciende y se apaga cada segundo.
Presione Ctrl+C para finalizar el programa.
Felicidades. Ha usado GPIO para hacer parpadear un LED.
Obtención del código fuente
El código fuente de este tutorial está disponible en GitHub.