Piscar um LED
Os pinos de E/S para fins gerais (GPIO) podem ser controlados individualmente. Isto é útil para controlar LEDs, reencaminhamentos e outros dispositivos com monitorização de estado. Neste tópico, irá utilizar o .NET e os pinos GPIO do Raspberry Pi para ligar um LED e pisá-lo repetidamente.
Pré-requisitos
- Computador de quadro único (SBC) baseado em ARM (ARMv7 ou superior)
- LED de 5 mm
- 330 Ω resistência
- Breadboard
- Fios jumper
- Placa simultânea raspberry Pi GPIO (opcional/recomendada)
- SDK .NET 7 ou posterior
Nota
Este tutorial é escrito partindo do princípio de que o dispositivo de destino é Raspberry Pi. No entanto, este tutorial pode ser utilizado para qualquer SBC baseado em Linux que suporte .NET, como Orange Pi, ODROID e muito mais.
Certifique-se de que o SSH está ativado no seu dispositivo. Para Raspberry Pi, consulte Configurar um Servidor SSH na documentação do Raspberry Pi.
Preparar o hardware
Utilize os componentes de hardware para criar o circuito, conforme descrito no diagrama seguinte:
A imagem acima ilustra as seguintes ligações:
- GPIO 18 para o anodo LED (maior, oportunidade potencial positiva)
- Cátodo LED (chumbo negativo mais curto) a 330 Ω resistência (ambas as extremidades)
- 330 Ω resistência (outra extremidade) ao chão
Veja o seguinte diagrama de pinout, conforme necessário:
Imagem cortesia Raspberry Pi Foundation.
Dica
Recomenda-se uma placa simultânea GPIO em conjunto com uma placa de pão para simplificar as ligações ao cabeçalho GPIO.
Criar a aplicação
Conclua os seguintes passos no seu ambiente de desenvolvimento preferencial:
Crie uma nova Aplicação de Consola .NET com a CLI do .NET ou o Visual Studio. Dê-lhe o nome BlinkTutorial.
dotnet new console -o BlinkTutorial cd BlinkTutorial
Adicione o pacote System.Device.Gpio ao projeto. Utilize a CLI de .NET a partir do diretório do projeto ou do Visual Studio.
dotnet add package System.Device.Gpio --version 2.2.0-*
Substitua o conteúdo do ficheiro Program.cs pelo seguinte código:
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; }
No código anterior:
- Uma declaração de utilização cria uma instância de
GpioController
. Ausing
declaração garante que o objeto é eliminado e que os recursos de hardware são libertados corretamente. - O pin 18 do GPIO está aberto para saída
- Um
while
ciclo é executado indefinidamente. Cada iteração:- Escreve um valor para GPIO pin 18. Se
ledOn
for verdade, escrevePinValue.High
(ativado). Caso contrário, escrevePinValue.Low
. - Dorme 1000 ms.
- Ativa/desativa o valor de
ledOn
.
- Escreve um valor para GPIO pin 18. Se
- Uma declaração de utilização cria uma instância de
Crie a aplicação. Se estiver a utilizar a CLI de .NET, execute
dotnet build
. Para criar no Visual Studio, prima Ctrl+Shift+B.Implemente a aplicação no SBC como uma aplicação autónoma. Para obter instruções, veja Implementar aplicações .NET no Raspberry Pi. Confirme que concede permissão de execução executável com
chmod +x
.Execute a aplicação no Raspberry Pi ao mudar para o diretório de implementação e executar o executável.
./BlinkTutorial
O LED pisca e pisca a cada segundo.
Termine o programa premindo Ctrl+C.
Parabéns! Utilizou o GPIO para piscar um LED.
Obter o código-fonte
A origem deste tutorial está disponível no GitHub.