Condividi tramite


Far lampeggiare un LED

I pin di I/O per utilizzo generico (GPIO) possono essere controllati singolarmente. Ciò è utile per controllare LED, relè e altri dispositivi con stato. In questo argomento si useranno .NET e i pin GPIO di Raspberry Pi per accendere un LED e lampeggiarlo ripetutamente.

Prerequisiti

  • Computer basato su ARM (ARMv7 o versione successiva) a scheda singola (SBC)
  • LED da 5 mm
  • 330 Ω resistore
  • Basetta sperimentale
  • Cavetti di collegamento
  • Scheda di interfaccia Raspberry Pi GPIO (facoltativa/consigliata)
  • .NET SDK 8 o versione successiva

Annotazioni

Questa esercitazione viene scritta presupponendo che il dispositivo di destinazione sia Raspberry Pi. Tuttavia, questa esercitazione può essere usata per qualsiasi SBC basato su Linux che supporta .NET, ad esempio Orange Pi, ODROID e altro ancora.

Verificare che SSH sia abilitato nel dispositivo. Per Raspberry Pi, vedere Configurazione di un server SSH nella documentazione di Raspberry Pi.

Preparare l'hardware

Usare i componenti hardware per compilare il circuito come illustrato nel diagramma seguente:

Diagramma di Fritzing che mostra un circuito con un LED e un resistore

L'immagine precedente illustra le connessioni seguenti:

  • GPIO 18 al catodo LED (cavo più lungo, positivo)
  • Catodo LED (polo più corto, negativo) a un resistore da 330 Ω (uno dei due capi)
  • Resistore da 330 Ω (altro lato) al suolo

Fare riferimento al diagramma di pinout seguente in base alle esigenze:

Un diagramma che mostra il pinout del connettore GPIO del Raspberry Pi. Immagine per gentile concessione di Raspberry Pi Foundation.
Immagine per gentile concessione Raspberry Pi Foundation.

Suggerimento

Per semplificare le connessioni all'intestazione GPIO, è consigliabile usare una scheda breakout GPIO insieme a una breadboard.

Creare l'app

Completare i passaggi seguenti nell'ambiente di sviluppo preferito:

  1. Creare una nuova app console .NET utilizzando il CLI di .NET o Visual Studio. Denominarlo BlinkTutorial.

    dotnet new console -o BlinkTutorial
    cd BlinkTutorial
    
  2. Aggiungere il pacchetto System.Device.Gpio al progetto. Usare .NET CLI dalla directory del progetto o Visual Studio.

    dotnet add package System.Device.Gpio --version 3.2.0-*
    
  3. Sostituire il contenuto di Program.cs con il codice seguente:

    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;
    }
    

    Nel codice precedente:

    • Una istruzione using crea un'istanza di GpioController. La using dichiarazione garantisce che l'oggetto venga eliminato e che le risorse hardware vengano rilasciate correttamente.
    • Il pin GPIO 18 viene aperto per l'output
    • Un while ciclo viene eseguito per un periodo illimitato. Ogni iterazione:
      1. Scrive un valore nel pin GPIO 18. Se ledOn è vero, scrive PinValue.High (acceso). In caso contrario, scrive PinValue.Low.
      2. Si sospende per 1000 ms.
      3. Attiva/disattiva il valore di ledOn.
  4. Compilazione dell'app. Se si usa l'interfaccia della riga di comando di .NET, eseguire dotnet build. Per compilare in Visual Studio, premere CTRL+MAIUSC+B.

  5. Distribuire l'app nel SBC come app autonoma. Per istruzioni, vedere Distribuire app .NET in Raspberry Pi. Assicurarsi di concedere all'eseguibile l'autorizzazione di esecuzione usando chmod +x.

  6. Eseguire l'app in Raspberry Pi passando alla directory di distribuzione ed eseguendo il file eseguibile.

    ./BlinkTutorial
    

    Il LED lampeggia e si accende ogni secondo.

  7. Terminare il programma premendo CTRL+C.

Congratulazioni! Hai usato GPIO per far lampeggiare un LED.

Ottenere il codice sorgente

La sorgente per questa esercitazione è disponibile su GitHub.

Passaggi successivi