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 i problemi post-vendita e le 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!

2.1.1 Pulsante

Introduzione

In questo progetto, impareremo come accendere o spegnere un LED utilizzando un pulsante.

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

Pulsante

ACQUISTA

Schema di Collegamento

Utilizza un pulsante normalmente aperto come ingresso per Raspberry Pi, il collegamento è mostrato nello schema sottostante. Quando il pulsante viene premuto, il GPIO18 sarà impostato a livello basso (0V). Possiamo rilevare lo stato del GPIO18 tramite il programma. Ovvero, se il GPIO18 diventa a livello basso, significa che il pulsante è stato premuto. Puoi eseguire il codice corrispondente quando il pulsante viene premuto e 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 la directory nel percorso del codice per 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, premi il pulsante e il LED si accenderà; altrimenti rimarrà spento.

Nota

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

Codice

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

#define LedPin      0
#define ButtonPin   1

int main(void){
    // Se l'inizializzazione di wiring fallisce, stampa un 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){
            // Accendi il LED
            digitalWrite(LedPin, LOW);
        //  printf("...LED acceso\n");
        }
        else{
            // Spegni il LED
            digitalWrite(LedPin, HIGH);
        //  printf("LED spento...\n");
        }
    }
    return 0;
}

Spiegazione del Codice

#define LedPin      0

Il pin GPIO17 sulla scheda T_Extension equivale al GPIO0 su wiringPi.

#define ButtonPin   1

ButtonPin è collegato a GPIO1.

pinMode(LedPin, OUTPUT);

Imposta LedPin come uscita per assegnargli un valore.

pinMode(ButtonPin, INPUT);

Imposta ButtonPin come ingresso per leggere il valore di ButtonPin.

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

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

La funzione digitalRead() serve a leggere HIGH (livello alto) o LOW (livello basso) del pin parametro di input, restituisce 1 quando il pin è HIGH e restituisce 0 quando il pin è LOW.

La funzione digitalWrite() serve a scrivere HIGH (livello alto) o LOW (livello basso) sul pin parametro di input.

Immagine del Fenomeno

../_images/image153.jpeg