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

xxxxxxxxxx
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
xxxxxxxxxx
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 :
xxxxxxxxxx
[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
xxxxxxxxxx
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 ……