RoboJax Touch Counter V2 Utilizzando Display LCD1602-I2C
Introduzione
Questa guida ti mostrerà come costruire un contatore touch semplice ma altamente funzionale utilizzando un Arduino Uno, un sensore touch capacitivo TTP223B e un display LCD1602 abilitato I2C. Questo progetto, noto come Robojax Touch Counter V2, è un ottimo punto di partenza per chiunque voglia aggiungere input intuitivo basato sul tocco ai propri progetti elettronici. Invece di un pulsante meccanico, un semplice tocco sul pad del sensore incrementa un contatore, con il conteggio corrente visualizzato chiaramente sullo schermo LCD. Un pulsante separato consente di ripristinare il conteggio a zero in qualsiasi momento.


Questo progetto non è solo un esercizio di apprendimento; ha una vasta gamma di applicazioni pratiche. Ecco alcune idee per ispirarti:
- Contatore di persone:Crea un dispositivo semplice per contare il numero di persone che entrano in una stanza o in un'area specifica.
- Contatore della linea di produzione:Usalo per conteggiare gli oggetti mentre passano attraverso un punto su un piccolo nastro trasportatore o processo di assemblaggio.
- Tracker per la Presenza:Crea un sistema semplice per tenere traccia della presenza a una lezione o a un evento.
- Installazione d'Arte Interattiva:Utilizzalo come componente in un'opera d'arte che reagisce al numero di volte che viene toccata.
- Strumento educativo:Insegna le basi dei sensori, degli interrupt e delle interfacce di visualizzazione in modo divertente e pratico.
Entro la fine di questa guida, avrai un contatore touch completamente funzionante e una solida comprensione di come integrare sensori touch, display I2C e input dell'utente nei tuoi progetti Arduino.
Componenti hardware
Per costruire questo progetto, avrai bisogno dei seguenti componenti:
- Arduino Uno (o scheda compatibile)
- Modulo di Sensore Tattile Capacitivo TTP223B o TTP223 (variante rossa o blu)
- Modulo Display LCD1602 con interfaccia I2C
- Pulsante (per reset)
- Fili jumper
- Piastra di circuito
Guida al cablaggio
Il cablaggio per questo progetto è semplice, ma è importante notare che l'ordine dei pin sui moduli touch rosso e blu è diverso. Ecco una panoramica su come collegare tutto.
Prima di tutto, connettiamo il sensore tattile. Per ilmodulo blu, l'ordine dei pin è Segnale, VCC e Terra. Collega il pin Segnale al pin 2 dell'Arduino, VCC a 5V e Terra a GND. Per ilmodulo rosso, l'ordine dei pin è Terra, Segnale e VCC (nel video al :57). Collega il pin di Terra a GND, il pin di Segnale (centrale) al pin 2 di Arduino e il pin VCC a 5V (nel video al :01).
Successivamente, collega il display LCD. L'interfaccia I2C utilizza solo quattro fili. Collega il pin GND del display a GND di Arduino, il pin VCC a 5V, il pin SDA al pin analogico A4 di Arduino e il pin SCL al pin analogico A5 di Arduino (nel video al 03:55). Questi sono i pin corretti per Arduino Uno. Se stai utilizzando una scheda diversa come un Arduino Mega, i pin SDA e SCL si trovano rispettivamente sui pin 20 e 21 (nel video al 04:18).
Infine, collega il pulsante di reset. Posiziona il pulsante sulla breadboard e collega uno dei suoi pin a GND di Arduino e l'altro al pin 12 di Arduino (nel video al 03:33). L'ordine di questi cavi non importa.
Questo progetto non richiede resistori per il sensore touch o il pulsante, poiché il codice utilizzerà il resistore di pull-up interno dell'Arduino per il pulsante.
Spiegazione del codice
Il codice per questo progetto è progettato per essere semplice da capire e modificare. Le parti chiave configurabili dall'utente si trovano nella parte superiore dello schizzo.
Ecco la sezione del codice che probabilmente vorrai personalizzare:
// start of settings for LCD1602 with I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C
const int touchPin = 2;// the input pin where touch sensor is connected
const int resetPin = 12;// the input pin for reset button
const int touchDelay = 500;//millisecond delay between each touch
int count=0;// variable holding the count numberAnalizziamo cosa fa ciascuna di queste impostazioni:
- Indirizzo LCD:Il
lcd(0x27, 16, 2)la linea imposta la visualizzazione. Il0x27è l'indirizzo I2C del tuo specifico modulo LCD. La maggior parte dei moduli utilizza questo indirizzo, ma se il tuo display non funziona, potrebbe essere0x3F. Puoi cambiare questo valore per adattarlo al tuo schermo. - touchPin:Questa costante definisce il pin Arduino a cui è collegato il filo del segnale del tuo sensore tattili. Puoi cambiarlo se desideri utilizzare un pin diverso.
- resetPin:Questa costante definisce il pin Arduino per il tuo pulsante di reset. È impostato sul pin 12 per impostazione predefinita.
- touchDelay:Questa è un'impostazione cruciale. Controlla il tempo minimo in millisecondi tra due tocchi registrati (nel video a 05:13). Un valore di 500ms impedisce conteggi multipli accidentali da un singolo tocco o da tocchi molto rapidi. Se desideri che il contatore sia più reattivo, puoi ridurre questo valore a qualcosa come 100ms (nel video a 10:31).
Lacountla variabile è un intero che tiene il valore attuale del conteggio. È inizializzato a zero e viene incrementato ogni volta che il sensore viene toccato. Il codice stesso gestisce la logica di lettura del sensore, aggiornamento del display e verifica del pulsante di reset, quindi non è necessario preoccuparsene. Basta regolare le costanti sopra per adattarle alla tua configurazione specifica e al comportamento desiderato.
Dimostrazione di progetto dal vivo
Una volta che hai tutto collegato e il codice caricato sul tuo Arduino, il progetto funzionerà come segue:
Quando accendi il dispositivo, il LCD visualizzerà "Robojax Touch" e "Counter V2" per alcuni secondi prima di iniziare a contare. Ogni volta che tocchi il pannello sensore, il contatore aumenterà di uno e il nuovo conteggio verrà visualizzato sulla linea inferiore del LCD, accanto alla parola "Touched:" (nel video alle 07:51). Le stesse informazioni vengono stampate anche nel Monitor Seriale dell'IDE di Arduino per scopi di debug o registrazione.
Per ripristinare il contatore, basta premere il pulsante. Il display LCD si cancellerà e mostrerà "Ripristinato", e il conteggio tornerà a zero (nel video alle 08:49). Il dispositivo è ora pronto per contare di nuovo. Questo semplice e chiaro feedback rende facile vedere il progetto funzionare in tempo reale.
Capitoli
- [00:00] Introduzione e panoramica del progetto
- [00:44] Componenti e Come Funzionano
- Guida al cablaggio per il sensore touch e il pulsante
- Guida al cablaggio per il display LCD
- [04:26] Spiegazione del codice e configurazione
- [06:47] Comprendere il Main Loop e la Logica del Touch
- [09:25] Dimostrazione e Test in Diretta
- [11:08] Conclusione e Idee per Progetti Futuri
//*
* This is Arduino touch counter V2 using TTP223/TTP223B and LCD1602-I2C
* This program will function as a counter. Every time the touch module is touched,
* the counter increments by 1. The count number is displayed on the LCD1602 display.
* We have a reset button to restart the counting from zero.
*
* Watch video instruction for this video: https://youtu.be/5A9jPD5nUCw
*
* Written by Ahmad Shamshiri on Saturday, 27th of October at 16:28 in Ajax, Ontario, Canada
* Get this code from Robojax.com
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// start of settings for LCD1602 with I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C
const int touchPin = 2;// the input pin where touch sensor is connected
const int resetPin = 12;// the input pin for reset button
const int touchDelay = 500;//millisecond delay between each touch
int count=0;// variable holding the count number
void setup() {
// Robojax.com Touch counter 20181027
// initialize the LCD
lcd.begin();
lcd.backlight();// turn the backlight ON for the LCD
lcd.print("Robojax Touch");
lcd.setCursor(0,1);
lcd.print("Counter V2");
Serial.begin(9600);// initialize serial monitor with 9600 baud
Serial.println("Robojax Touch Counter V2");
pinMode(touchPin,INPUT);// define a pin for touch module
pinMode(resetPin,INPUT_PULLUP);// define a pin for reset button
// see video ( link in the video description) on using PULLUP
delay(3000);// give time to user to read the display at the beginning
// Robojax.com Touch counter 20181027
}
void loop() {
// Robojax.com Touch counter 20181027
int touchValue = digitalRead(touchPin);// read touchPin and store it in touchValue
// if touchValue is HIGH
if(touchValue == HIGH)
{
count++;// increment the count
lcd.clear();// clear previous values from screen
lcd.print("Robojax TCV2");
lcd.setCursor(0,1);
lcd.print("Touched:");
lcd.setCursor(9,1);
lcd.print(count);
Serial.print("Touched ");//print the information
Serial.print(count);//print count
Serial.println(" times.");
delay(touchDelay);// touch delay time
}
// if reset switch is pushed
if(digitalRead(resetPin) == LOW)
{
lcd.clear();// clear previous values from screen
count =0;// reset the counter;
Serial.println("Counter Resetted.");//print the information
lcd.setCursor(0,0);
lcd.print("Robojax TCV2");
lcd.setCursor(0,1);
lcd.print("Resetted");
}
// Robojax.com Touch counter 20181027
}
Cose di cui potresti avere bisogno
-
Amazon
-
AmazonAcquista LCD1602-I2C da Amazonamzn.to
-
eBayAcquista LCD1602-I2C da eBayebay.us
-
AliExpressAcquista 10 pezzi di LCD1602-I2C da AliExpresss.click.aliexpress.com
-
AliExpressAcquista LCD1602-I2C da AliExpresss.click.aliexpress.com
Risorse e riferimenti
File📁
File Fritzing
-
Modulo LCD LCD1602-I2C con 4 fili
LCD1602-I2C.fzpz0.01 MB
Altri file
-
Scheda tecnica TP223
robojax-0492_TTP223_Datasheet.pdf0.24 MB -
Manuale utente TTP223B
robojax-TTP223B_manual.pdf0.15 MB -
Libreria LiquidCrystal LCD1602
robojax-LCD1602_LiquidCrystal.zip