Empezaremos a trastear con el GPIO de la RPi , para ello montaremos este sencillo esquema en una placa de prototipado

Debido a la cantidad de componentes a ubicar en un espacio tan reducido de 3cms x 7cms habrá que planificar muy bien la distribución de todos los elementos , estas placas de prototipado se pueden encontrar aquí.





Crearemos un nuevo proyecto en C# para netcore 3.1 y pegaremos este codigo
using System;
using System.Device.Gpio;
using System.Threading;
namespace Test_Leds
{
    class Program
    {
        static void Main(string[] args)
        {
            //Codigo Raspberry pi 
            //Definicion de I/O
            int Led_Rojo = 26;
            int Led_Verde = 6;
            int Led_Amarillo = 5;
            GpioController controller = new GpioController();
            //Modo de trabajo I/O
            controller.OpenPin(Led_Verde, PinMode.Output);
            controller.OpenPin(Led_Amarillo, PinMode.Output);
            controller.OpenPin(Led_Rojo, PinMode.Output);
            while (true)
            {
                for (int nContador = 0; nContador < 3; nContador++)
                {
                    Thread.Sleep(250);
                    controller.Write(Led_Verde, PinValue.Low);
                    controller.Write(Led_Amarillo, PinValue.Low);
                    controller.Write(Led_Rojo, PinValue.Low);
                    switch (nContador)
                    {
                        case 0:
                            controller.Write(Led_Verde, PinValue.High);
                            break;
                        case 1:
                            controller.Write(Led_Amarillo, PinValue.High);
                            break;
                        case 2:
                            controller.Write(Led_Rojo, PinValue.High);
                            break;
                    }
                    Thread.Sleep(250);
                    Console.Write(".");
                }
            }
        }
    }
}
Una vez compilado mediante pscp subiremos la carpeta a nuestra RPi

pscp -r -P 22 -pw TU_CONTRASEÑA .\bin\Debug\netcoreapp3.1\*.* antonio@192.168.1.113:/home/antonio/net/test_leds
Y lo ejecutaremos desde la RPI con
dotnet /home/antonio/net/test_leds/test_leds.dll
Este es el resultado , los leds cambian secuencialmente cada 250 ms

BONUS: Arranque automático de la aplicación
Crearemos el fichero test-leds.service y contendrá lo siguiente :
[Unit] Description=Test Leds After=network.target [Service] Type=forking WorkingDirectory=/home/antonio/net/test_leds ExecStart=/root/dotnet/dotnet /home/antonio/net/test_leds/test_leds.dll StandardOutput=inherit StandardError=inherit Restart=always RemainAfterExit=yes User=root [Install] WantedBy=multi-user.target
Ejecutaremos estos comandos
sudo cp test-leds.service /etc/systemd/system/test-leds.service systemctl daemon-reload sudo systemctl enable test-leds.service sudo systemctl start test-leds.service sudo systemctl status test-leds.service
Y este seria el resultado

Con esto y un bizcocho ……