Leggere in inglese

Condividi tramite


Far lampeggiare un LED

I/O (GPIO) per utilizzo generico possono essere controllati singolarmente. Ciò è utile per controllare i LED, gli inoltro 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 a scheda singola (SBC) basato su ARM (ARMv7 o versione successiva)
  • LED di 5 mm
  • 330 Ω resistore
  • Breadboard
  • Cavi ponticello
  • Scheda di interruzione Raspberry Pi GPIO (facoltativa/consigliata)
  • .NET SDK 7 o versione successiva

Nota

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

Assicurarsi 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 a led anode (lead più lungo, positivo)
  • Cathode LED (lead più breve, negativo) a 330 Ω resistore (entrambe le estremità)
  • 330 Ω resistore (altra estremità) a terra

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

Diagramma che mostra il pinout dell'intestazione Raspberry Pi GPIO. Immagine di Raspberry Pi Foundation.
Immagine di Raspberry Pi Foundation.

Suggerimento

È consigliabile semplificare le connessioni all'intestazione GPIO con una scheda di interruzione GPIO.

Creare l'app

Completare i passaggi seguenti nell'ambiente di sviluppo preferito:

  1. Creare una nuova app console .NET usando l'interfaccia della riga di comando .NET o Visual Studio. Denominarlo BlinkTutorial.

    CLI .NET
    dotnet new console -o BlinkTutorial
    cd BlinkTutorial
    
  2. Aggiungere il pacchetto System.Device.Gpio al progetto. Usare l'interfaccia della riga di comando .NET dalla directory del progetto o da Visual Studio.

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

    C#
    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 dichiarazione using crea un'istanza di GpioController. La using dichiarazione garantisce che l'oggetto venga eliminato e le risorse hardware vengano rilasciate correttamente.
    • Il pin GPIO 18 viene aperto per l'output
    • Un while ciclo viene eseguito in modo indefinito. Ogni iterazione:
      1. Scrive un valore in GPIO pin 18. Se ledOn è true, scrive PinValue.High (on). In caso contrario, scrive PinValue.Low.
      2. Dorme 1000 ms.
      3. Attiva l'interruttore del valore di ledOn.
  4. Compilare l'app. Se si usa l'interfaccia della riga di comando .NET, eseguire dotnet build. Per compilare in Visual Studio, premere CTRL+MAIUSC+B.

  5. Distribuire l'app in 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.

    Bash
    ./BlinkTutorial
    

    Il LED lampeggia fuori e su ogni secondo.

  7. Terminare il programma premendo CTRL+C.

Congratulazioni! È stato usato GPIO per lampeggiare un LED.

Ottenere il codice sorgente

L'origine per questa esercitazione è disponibile in GitHub.

Passaggi successivi