Nota

Ciao, benvenuto nella community di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci le tue conoscenze su 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 suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni accesso anticipato a nuovi annunci di prodotti e anteprime.

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

  • Promozioni Festive e Giveaway: Partecipa a concorsi e promozioni festive.

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

2.1.1 Pulsante

Introduzione

In questo progetto, impareremo a utilizzare un pulsante per accendere o spegnere un LED.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/list_2.1.1_Button.png

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

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link seguenti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

Pulsante

ACQUISTA

Schema Elettrico

Utilizza un pulsante normalmente aperto come input per il Raspberry Pi, come mostrato nello schema elettrico sottostante. Quando il pulsante viene premuto, il GPIO18 diventa a livello basso (0V). Possiamo rilevare lo stato del GPIO18 tramite il programma. Se il GPIO18 diventa a livello basso, significa che il pulsante è stato premuto. È possibile eseguire il codice corrispondente quando il pulsante viene premuto e successivamente il LED si accenderà.

Nota

Il pin più lungo del LED è l’anodo, mentre quello più corto è il catodo.

../_images/image302.png ../_images/image303.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/image152.png

Passo 2: Apri il file del codice.

cd ~/raphael-kit/c/2.1.1/

Nota

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

Passo 3: Compila il codice.

gcc 2.1.1_Button.c -lwiringPi

Passo 4: Esegui il file eseguibile.

sudo ./a.out

Dopo l’esecuzione del codice, premendo il pulsante il LED si accenderà, altrimenti rimarrà spento.

Nota

Se non funziona dopo l’esecuzione o viene visualizzato un errore come: "wiringPi.h: No such file or directory", fai riferimento a Installa e Controlla wiringPi.

Codice

#include <wiringPi.h>
#include <stdio.h>

#define LedPin      0
#define ButtonPin   1

int main(void){
    // Se l'inizializzazione di wiring fallisce, stampa il messaggio a schermo
    if(wiringPiSetup() == -1){
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(LedPin, OUTPUT);
    pinMode(ButtonPin, INPUT);
    digitalWrite(LedPin, HIGH);

    while(1){
        // Indica che il pulsante è stato premuto
        if(digitalRead(ButtonPin) == 0){
            // Accende il LED
            digitalWrite(LedPin, LOW);
        //  printf("...LED acceso\n");
        }
        else{
            // Spegne il LED
            digitalWrite(LedPin, HIGH);
        //  printf("LED spento...\n");
        }
    }
    return 0;
}

Spiegazione del Codice

#define LedPin      0

Il pin GPIO17 della T_Extension Board corrisponde al GPIO0 di wiringPi.

#define ButtonPin   1

Il ButtonPin è collegato al GPIO1.

pinMode(LedPin, OUTPUT);

Imposta LedPin come output per assegnare un valore.

pinMode(ButtonPin, INPUT);

Imposta ButtonPin come input per leggere il valore di ButtonPin.

while(1){
        // Indica che il pulsante è stato premuto
        if(digitalRead(ButtonPin) == 0){
            // Accende il LED
            digitalWrite(LedPin, LOW);
        //  printf("...LED acceso\n");
        }
        else{
            // Spegne il LED
            digitalWrite(LedPin, HIGH);
        //  printf("LED spento...\n");
        }
    }

if (digitalRead (ButtonPin) == 0) : verifica se il pulsante è stato premuto. Esegui digitalWrite(LedPin, LOW) quando il pulsante è premuto per accendere il LED.

La funzione digitalRead() legge HIGH (livello alto) o LOW (livello basso) dal pin specificato, restituisce 1 se il pin è HIGH e 0 se è LOW.

La funzione digitalWrite() scrive HIGH (livello alto) o LOW (livello basso) nel pin specificato.

Immagine del Fenomeno

../_images/image153.jpeg