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:

Un diagrama de Fritzing en el que se muestra un circuito con un LED y una resistencia

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:

Diagrama en el que se muestran los pines del encabezado GPIO de Raspberry Pi. Imagen de Raspberry Pi Foundation.
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:

  1. 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
    
  2. 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-*
    
  3. 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ón using 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:
      1. Se escribe un valor en el pin GPIO 18. Si ledOn es true, se escribe PinValue.High (encender). De lo contrario, se escribe PinValue.Low.
      2. Se suspende durante 1000 ms.
      3. Se alterna el valor de ledOn.
  4. 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.

  5. 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.

  6. 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.

  7. 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.

Pasos siguientes