Nota

Ciao, benvenuto nella Community di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e omaggi: Partecipa a omaggi e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

1.1.1 LED Lampeggiante

Introduzione

In questo progetto, impareremo come creare un LED lampeggiante tramite la programmazione. Attraverso le tue impostazioni, il tuo LED potrà produrre una serie di fenomeni interessanti. Andiamo, inizia subito!

Componenti necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/blinking_led_list.png

È sicuramente conveniente acquistare un intero kit, ecco il link:

Nome

COMPONENTI IN QUESTO KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

Schema di collegamento

In questo esperimento, collega una resistenza da 220Ω all’anodo (il pin lungo del LED), poi collega la resistenza a 3.3V, e collega il catodo (il pin corto) del LED a GPIO17 del Raspberry Pi. Quindi, per accendere il LED, dobbiamo impostare il livello basso (0V) su GPIO17. Questo fenomeno può essere ottenuto tramite la programmazione.

Nota

Pin11 si riferisce all’11° pin del Raspberry Pi da sinistra a destra, e i numeri di pin corrispondenti wiringPi e BCM sono mostrati nella tabella seguente.

Nel contenuto relativo al linguaggio C, facciamo corrispondere GPIO0 a 0 in wiringPi. Nel contenuto relativo al linguaggio Python, BCM 17 è 17 nella colonna BCM della tabella seguente. Allo stesso tempo, essi corrispondono all’11° pin sul Raspberry Pi, Pin 11.

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

../_images/image48.png

Procedure sperimentali

Passo 1: Costruisci il circuito.

../_images/image49.png

Passo 2: Vai alla cartella del codice.

  1. Se utilizzi uno schermo, ti consigliamo di seguire i seguenti passaggi.

Vai su ~/ e trova la cartella raphael-kit.

Trova C nella cartella, fai clic destro su di essa e seleziona Apri nel Terminale.

../_images/image50.png

Apparirà una finestra come mostrato di seguito. Ora sei nel percorso del codice 1.1.1_BlinkingLed.c .

../_images/image51.png

Nei progetti successivi, useremo il comando per entrare nel file di codice invece di fare clic destro. Ma puoi scegliere il metodo che preferisci.

  1. Se accedi al Raspberry Pi da remoto, usa cd per cambiare directory:

cd ~/raphael-kit/c/1.1.1/

Nota

Cambia directory nel percorso del codice di questo esperimento tramite cd.

In entrambi i modi, ora ti trovi nella cartella C. Le procedure successive si basano su questi due metodi e sono le stesse. Andiamo avanti.

Passo 3: Compila il codice

gcc 1.1.1_BlinkingLed.c -o BlinkingLed -lwiringPi

Nota

gcc è la Collezione di Compilatori GNU. Qui, funziona come compilatore del file C 1.1.1_BlinkingLed.c e produce un file eseguibile.

Nel comando, -o indica l’output (il carattere subito dopo -o è il nome del file generato dopo la compilazione, e qui verrà creato un eseguibile chiamato BlinkingLed) e -lwiringPi serve a caricare la libreria wiringPi (l è l’abbreviazione di library).

Passo 4: Esegui il file eseguibile prodotto nel passaggio precedente.

sudo ./BlinkingLed

Nota

Se non funziona dopo l’esecuzione o viene visualizzato un errore come: "wiringPi.h: No such file or directory", consulta Installazione e verifica di WiringPi.

Per controllare il GPIO, è necessario eseguire il programma utilizzando il comando sudo (superuser do). Il comando ./ indica la directory corrente. L’intero comando serve a eseguire BlinkingLed nella directory corrente.

Dopo l’esecuzione del codice, vedrai il LED lampeggiare.

Se desideri modificare il file di codice 1.1.1_BlinkingLed.c, interrompi il codice e digita il seguente comando per aprirlo:

nano 1.1.1_BlinkingLed.c

Premi Ctrl+X per uscire. Se hai modificato il codice, apparirà un prompt che chiederà se salvare o meno le modifiche. Digita Y (salva) o N (non salvare). Quindi premi Invio per uscire. Ripeti Passo 3 e Passo 4 per vedere l’effetto dopo la modifica.

../_images/image53.png

Codice

Il codice del programma è mostrato di seguito:

#include <wiringPi.h>
#include <stdio.h>
#define LedPin      0
int main(void)
{
   // Quando l'inizializzazione di wiring fallisce, stampa un messaggio a schermo
   if(wiringPiSetup() == -1){
      printf("setup wiringPi failed !");
      return 1;
   }
   pinMode(LedPin, OUTPUT);// Imposta LedPin come uscita per scriverci il valore.
   while(1){
      // Accensione LED
      digitalWrite(LedPin, LOW);
      printf("...LED on\n");
      delay(500);
      // Spegnimento LED
      digitalWrite(LedPin, HIGH);
      printf("LED off...\n");
      delay(500);
   }
   return 0;
}

Spiegazione del Codice

#include <wiringPi.h>

La libreria di driver hardware è progettata per il linguaggio C di Raspberry Pi. Aggiungere questa libreria facilita l’inizializzazione dell’hardware e l’output delle porte I/O, PWM, ecc.

#include <stdio.h>

Libreria di I/O standard. La funzione printf utilizzata per la stampa dei dati sullo schermo è realizzata tramite questa libreria. Ci sono molte altre funzioni utili da esplorare.

#define LedPin 0

Il pin GPIO17 della T_Extension Board corrisponde a GPIO0 in wiringPi. Assegna GPIO0 a LedPin, e LedPin rappresenta GPIO0 nel codice successivo.

if(wiringPiSetup() == -1){
   printf("setup wiringPi fallito!");
   return 1;

Questa funzione inizializza wiringPi e presume che il programma che la chiama utilizzi lo schema di numerazione dei pin di wiringPi.

Questa funzione deve essere chiamata con privilegi di root. Se l’inizializzazione di wiring fallisce, stampa un messaggio a schermo. La funzione return viene utilizzata per uscire dalla funzione corrente. Usare return nella funzione main() termina il programma.

pinMode(LedPin, OUTPUT);

Imposta LedPin come uscita per scriverci il valore.

digitalWrite(LedPin, LOW);

Imposta GPIO0 a 0V (livello basso). Poiché il catodo del LED è collegato a GPIO0, il LED si accenderà se GPIO0 è impostato su basso. Al contrario, impostando GPIO0 su livello alto, il LED si spegnerà.

printf("...LED off\n");

La funzione printf è una funzione della libreria standard e il suo prototipo si trova nell’header file stdio.h.

La forma generale della chiamata è: printf(" stringa di controllo del formato ", colonne della tabella di output). La stringa di controllo del formato è utilizzata per specificare il formato dell’output, che è suddiviso in stringa formattata e stringa non formattata. La stringa formattata inizia con % seguita da caratteri di formato, come %d per l’output intero decimale. Le stringhe non formattate vengono stampate come sono. Qui viene utilizzata una stringa non formattata, seguita da \n che è un carattere di nuova riga, che rappresenta il ritorno a capo automatico dopo la stampa di una stringa.

delay(500);

Mantiene lo stato attuale HIGH o LOW per 500 ms.

Questa è una funzione che sospende il programma per un certo periodo di tempo. E la velocità del programma è determinata dal nostro hardware. Qui accendiamo o spegniamo il LED. Se non ci fosse la funzione di ritardo, il programma eseguirebbe molto velocemente l’intero ciclo in loop continuo. Quindi abbiamo bisogno della funzione di ritardo per aiutarci a scrivere e testare il programma.

return 0;

Di solito viene posizionato alla fine della funzione principale, indicando che la funzione restituisce 0 al termine dell’esecuzione con successo.

Immagine del Fenomeno

../_images/image54.jpeg