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:

Um diagrama a afinar a mostrar um circuito com um LED e uma resistência

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:

Um diagrama a mostrar o pinout do cabeçalho GPIO Raspberry Pi. Imagem cortesia Raspberry Pi Foundation.
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:

  1. 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
    
  2. 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-*
    
  3. 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. A using 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:
      1. Escreve um valor para GPIO pin 18. Se ledOn for verdade, escreve PinValue.High (ativado). Caso contrário, escreve PinValue.Low.
      2. Dorme 1000 ms.
      3. Ativa/desativa o valor de ledOn.
  4. Crie a aplicação. Se estiver a utilizar a CLI de .NET, execute dotnet build. Para criar no Visual Studio, prima Ctrl+Shift+B.

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

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

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

Passos seguintes