Progetto #39 • Arduino base

Sensore touch TTP223 con Arduino: accendere un LED con il tocco

Usa un sensore capacitivo TTP223 come pulsante touch per controllare un LED con Arduino e scoprire come funzionano gli ingressi digitali senza parti meccaniche.

Difficoltà★☆☆☆☆ Facile
Tempo15–20 minuti
ConcettiTouch • TTP223 • input digitale

🚀 Introduzione

In questo progetto utilizzeremo un sensore touch capacitivo TTP223 per controllare Arduino tramite il semplice tocco di un dito.

A differenza di un pulsante meccanico, il sensore non ha contatti che devono essere premuti fisicamente. Il modulo rileva invece una variazione di capacità elettrica quando il dito si avvicina alla superficie sensibile.

Quando viene rilevato il tocco, l’uscita digitale del modulo cambia stato e Arduino può reagire immediatamente.

Perché è interessante: il TTP223 permette di creare pulsanti touch semplici, economici e senza parti meccaniche. È una buona base per lampade touch, pannelli di controllo e piccoli sistemi domotici.

🎯 Cosa realizzerai

  • lettura di un sensore touch capacitivo;
  • riconoscimento del tocco tramite ingresso digitale;
  • accensione di un LED quando il sensore viene toccato;
  • visualizzazione degli eventi nel Monitor Seriale;
  • comprensione della differenza tra pulsante meccanico e touch capacitivo;
  • base per creare un vero interruttore touch.

🧰 Materiale necessario

1× Arduino UNO o compatibile
1× sensore touch capacitivo TTP223
1× LED
1× resistenza da 220 Ω
1× breadboard
Cavi jumper

🛒 Non hai ancora i componenti?

Un kit Arduino per principianti contiene molti dei componenti utilizzati nei progetti del sito, come LED, resistenze, sensori e breadboard.

Kit Arduino consigliato → Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

📘 Vuoi approfondire Arduino?

Nei miei libri trovi spiegazioni passo passo, schemi e progetti pratici dedicati ad Arduino.

Scopri i miei libri → Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

🖐️ Come funziona il sensore TTP223

Il TTP223 è un circuito integrato progettato per rilevare variazioni di capacità elettrica su una superficie sensibile.

Quando un dito si avvicina alla zona touch, la capacità elettrica del sistema cambia. Il circuito rileva questa variazione e modifica lo stato dell’uscita digitale.

Comportamento tipico:
nessun tocco → uscita LOW
dito sul sensore → uscita HIGH

Questo comportamento può variare in alcune versioni o configurazioni del modulo, ma nei moduli TTP223 più comuni la modalità momentanea attiva HIGH è quella normalmente utilizzata.

🔌 Schema di collegamento

Componente Collegamento
TTP223 VCC 5V Arduino
TTP223 GND GND Arduino
TTP223 SIG / OUT Pin digitale 2
LED anodo (+) Pin 8 tramite resistenza da 220 Ω
LED catodo (−) GND
Nota: alcuni moduli riportano il pin di uscita come SIG, altri come OUT o I/O. La funzione è la stessa.
Schema collegamenti Arduino sensore touch TTP223 LED

💻 Codice Arduino completo

Il programma legge continuamente l’uscita del TTP223. Quando il sensore viene toccato, Arduino accende il LED.

Progetto #39 — Sensore touch TTP223 con LED
// ============================================
// Progetto #39 - Sensore touch TTP223
// Il LED si accende quando il sensore
// viene toccato
// ============================================

// Pin collegato all'uscita del TTP223
const byte TOUCH_PIN = 2;

// Pin collegato al LED
const byte LED_PIN = 8;

// Memorizza lo stato precedente
bool touchPrecedente = false;

void setup() {

  // Sensore touch come ingresso digitale
  pinMode(TOUCH_PIN, INPUT);

  // LED come uscita
  pinMode(LED_PIN, OUTPUT);

  // LED spento all'avvio
  digitalWrite(LED_PIN, LOW);

  // Avvia il Monitor Seriale
  Serial.begin(9600);
}

void loop() {

  // Legge lo stato del sensore
  bool touchAttivo =
    digitalRead(TOUCH_PIN) == HIGH;

  // Il LED segue direttamente
  // lo stato del sensore touch
  digitalWrite(
    LED_PIN,
    touchAttivo ? HIGH : LOW
  );

  // Mostra il messaggio soltanto
  // quando cambia lo stato
  if (touchAttivo != touchPrecedente) {

    touchPrecedente = touchAttivo;

    if (touchAttivo) {
      Serial.println("Tocco rilevato!");
    } else {
      Serial.println("Sensore rilasciato");
    }
  }

  delay(20);
}

⚙️ Come funziona

Nel loop() Arduino legge continuamente il pin 2 tramite digitalRead().

Quando il TTP223 rileva il dito, l’uscita passa normalmente a HIGH. La variabile touchAttivo diventa quindi vera e Arduino porta il pin 8 a HIGH, accendendo il LED.

Quando il dito viene rimosso, l’uscita torna LOW e il LED si spegne.

Miglioramento rispetto al codice base: il Monitor Seriale scrive un messaggio soltanto quando cambia lo stato del sensore, evitando di stampare continuamente la stessa informazione.

👆 Touch momentaneo o interruttore?

Nel progetto attuale il LED rimane acceso soltanto finché il dito resta sul sensore.

Questo comportamento equivale a un normale pulsante momentaneo:

👆 Dito presente
LED acceso.
✋ Dito rimosso
LED spento.

Se vogliamo creare una vera lampada touch, possiamo invece modificare il programma in modo che ogni tocco alterni lo stato del LED: primo tocco acceso, secondo tocco spento.

🔄 Versione interruttore touch

Per trasformare il sensore in un interruttore ON/OFF dobbiamo reagire soltanto al momento in cui inizia un nuovo tocco.

Esempio — LED che cambia stato a ogni tocco
const byte TOUCH_PIN = 2;
const byte LED_PIN = 8;

bool ledAcceso = false;
bool touchPrecedente = false;

void setup() {

  pinMode(TOUCH_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);

  digitalWrite(LED_PIN, LOW);
}

void loop() {

  bool touchAttivo =
    digitalRead(TOUCH_PIN) == HIGH;

  // Rileva soltanto il passaggio
  // da non toccato a toccato
  if (touchAttivo && !touchPrecedente) {

    ledAcceso = !ledAcceso;

    digitalWrite(
      LED_PIN,
      ledAcceso ? HIGH : LOW
    );
  }

  touchPrecedente = touchAttivo;

  delay(30);
}
Risultato: un tocco accende il LED, il tocco successivo lo spegne. Questo comportamento è molto più simile a quello di una vera lampada touch.

⚡ Perché non serve una resistenza pull-up o pull-down?

Il TTP223 non è un semplice contatto meccanico. Il modulo contiene già l’elettronica necessaria per fornire ad Arduino un segnale digitale definito.

Per questo motivo il pin Arduino può essere configurato semplicemente come:

pinMode(TOUCH_PIN, INPUT);

Non serve quindi aggiungere la classica resistenza da 10 kΩ utilizzata con pulsanti o Reed switch.

🧠 TTP223 e modalità di funzionamento

Alcune schede basate sul TTP223 permettono di modificare il comportamento tramite piccoli ponticelli o pad di configurazione presenti sul PCB.

A seconda della versione del modulo, possono essere disponibili modalità come:

Momentanea
L’uscita rimane attiva soltanto durante il tocco.
Toggle
Ogni tocco può alternare direttamente lo stato dell’uscita.
Active HIGH
L’uscita diventa HIGH durante l’attivazione.
Active LOW
Su alcune configurazioni la logica può essere invertita.
Nota: non tutti i moduli espongono gli stessi pad o permettono le stesse configurazioni. Controlla sempre la serigrafia e la versione della scheda che stai utilizzando.

⚠️ Problemi comuni

LED sempre acceso
Controlla il collegamento del pin OUT e verifica che il modulo non sia configurato in modalità toggle.
Il touch non risponde
Controlla VCC, GND e il collegamento tra uscita del TTP223 e pin 2.
Comportamento invertito
La tua versione potrebbe utilizzare una configurazione diversa della logica di uscita.
Attivazioni indesiderate
Cavi lunghi, alimentazione disturbata o superfici vicine possono modificare la sensibilità capacitiva.

🔄 Varianti possibili

💡 Lampada touch
Ogni tocco accende o spegne una lampada tramite un’uscita di potenza adeguata.
🔊 Buzzer touch
Il sensore può attivare una segnalazione sonora al posto del LED.
🎛️ Pannello touch
Più TTP223 possono creare una piccola tastiera capacitiva.
🏠 Smart home
Il tocco può inviare un comando a un sistema domotico.
🎨 LED RGB
Ogni tocco può cambiare colore o modalità luminosa.
📶 ESP32
Il comando touch può essere inviato tramite Wi-Fi a una dashboard o a un dispositivo remoto.

🧠 Cosa impari con questo progetto

  • leggere un’uscita digitale tramite digitalRead();
  • utilizzare un sensore capacitivo TTP223;
  • rilevare un cambiamento di stato;
  • controllare un LED senza un pulsante meccanico;
  • distinguere modalità momentanea e toggle;
  • creare la base di una lampada o di un pannello touch.

✅ Cosa devi ricordare

  • il TTP223 rileva variazioni capacitive generate dal tocco;
  • nei moduli più comuni il tocco porta l’uscita a HIGH;
  • Arduino può leggere direttamente il segnale digitale del modulo;
  • non serve una resistenza pull-up o pull-down esterna;
  • il comportamento del modulo può cambiare in base alla configurazione del PCB;
  • con poche righe di codice il sensore può diventare un vero interruttore touch ON/OFF.