Nota

Ciao, benvenuto nella Community SunFounder dedicata agli appassionati di Raspberry Pi, Arduino ed ESP32 su Facebook! Approfondisci l’universo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti?

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

  • Impara e Condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni l’accesso anticipato agli annunci dei nuovi prodotti e alle anteprime.

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

  • Promozioni Festive e Giveaway: Partecipa a concorsi e promozioni in occasione delle festività.

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

Lezione 42: Luce a interruttore tattile

Questo progetto è una semplice implementazione di un sistema di controllo semaforico utilizzando un sensore tattile e un modulo LED semaforico. Attivando il sensore tattile si avvia una sequenza in cui i LED si accendono nel seguente ordine: Rosso -> Giallo -> Verde.

Componenti Necessari

Per questo progetto sono necessari i seguenti componenti.

È sicuramente comodo acquistare il kit completo, ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

Puoi anche acquistare separatamente i singoli componenti:

Introduzione al Componente

Link Acquisto

Arduino UNO R3 o R4

ACQUISTA

Modulo Sensore Touch

-

Modulo Semaforo

-

Breadboard

ACQUISTA

Cablaggio

../_images/Lesson_42_Touch_toggle_light_uno_bb.png

Codice

Analisi del Codice

Il funzionamento di questo progetto è semplice: quando viene rilevato un tocco sul sensore, si attiva l’accensione del LED successivo nella sequenza (Rosso -> Giallo -> Verde), controllata dalla variabile currentLED.

  1. Definizione dei pin e dei valori iniziali

    const int touchSensorPin = 2;  // Pin del sensore tattile
    const int rledPin = 7;         // Pin del LED rosso
    const int yledPin = 8;         // Pin del LED giallo
    const int gledPin = 9;         // Pin del LED verde
    int lastTouchState;            // Stato precedente del sensore
    int currentTouchState;         // Stato attuale del sensore
    int currentLED = 0;            // LED corrente: 0->Rosso, 1->Giallo, 2->Verde
    

    Queste righe definiscono i collegamenti dei pin con i componenti della board Arduino e inizializzano lo stato del sensore tattile e dei LED.

  2. Funzione setup()

    void setup() {
      Serial.begin(9600);              // Inizializza la comunicazione seriale
      pinMode(touchSensorPin, INPUT);  // Imposta il pin del sensore come input
      // Configura i pin dei LED come output
      pinMode(rledPin, OUTPUT);
      pinMode(yledPin, OUTPUT);
      pinMode(gledPin, OUTPUT);
      currentTouchState = digitalRead(touchSensorPin); // Legge lo stato iniziale del sensore
    }
    

    Questa funzione imposta la configurazione iniziale per Arduino, definendo le modalità dei pin e avviando la comunicazione seriale per il debug.

  3. Funzione loop()

    void loop() {
      lastTouchState = currentTouchState;                        // Memorizza lo stato precedente
      currentTouchState = digitalRead(touchSensorPin);           // Legge lo stato attuale
      if (lastTouchState == LOW && currentTouchState == HIGH) {  // Rileva il tocco
        Serial.println("Sensor touched");
        turnAllLEDsOff();  // Spegne tutti i LED
        // Attiva il LED successivo nella sequenza
        switch (currentLED) {
          case 0:
            digitalWrite(rledPin, HIGH);
            currentLED = 1;
            break;
          case 1:
            digitalWrite(yledPin, HIGH);
            currentLED = 2;
            break;
          case 2:
            digitalWrite(gledPin, HIGH);
            currentLED = 0;
            break;
        }
      }
    }
    

    Il loop monitora costantemente il sensore tattile e, al rilevamento di un tocco, attiva il LED successivo, assicurandosi che solo uno sia acceso alla volta.

  4. Funzione per spegnere tutti i LED

    void turnAllLEDsOff() {
      // Imposta tutti i pin dei LED su LOW, spegnendoli
      digitalWrite(rledPin, LOW);
      digitalWrite(yledPin, LOW);
      digitalWrite(gledPin, LOW);
    }
    

    Questa funzione ausiliaria spegne tutti i LED, facilitando la gestione della sequenza.