RoboJax Contador Táctil V2 Usando Pantalla LCD1602-I2C
Introducción
Esta guía te mostrará cómo construir un contador táctil simple pero altamente funcional utilizando un Arduino Uno, un sensor táctil capacitivo TTP223B y una pantalla LCD1602 con I2C. Este proyecto, conocido como el Contador Táctil Robojax V2, es un punto de partida perfecto para cualquier persona que busque agregar una entrada intuitiva basada en el tacto a sus proyectos electrónicos. En lugar de un botón mecánico, un simple toque en la almohadilla del sensor incrementa un contador, con el conteo actual mostrado claramente en la pantalla LCD. Un botón de pulsar separado te permite restablecer el conteo a cero en cualquier momento.


Este proyecto no es solo un ejercicio de aprendizaje; tiene una amplia gama de aplicaciones prácticas. Aquí hay algunas ideas para inspirarte:
- Contador de personas:Crea un dispositivo simple para contar el número de personas que entran a una habitación o a un área específica.
- Contador de Línea de Producción:Úselo para contar los artículos a medida que pasan por un punto en una pequeña cinta transportadora o proceso de ensamblaje.
- Rastreador de Asistencia:Construya un sistema simple para rastrear la asistencia a una clase o evento.
- Instalación de Arte Interactiva:Úsalo como un componente en una obra de arte que reacciona al número de veces que se toca.
- Herramienta educativa:Enseñar los fundamentos de los sensores, interrupciones y interfaces de pantalla de manera divertida y práctica.
Al final de esta guía, tendrás un contador táctil completamente funcional y un sólido entendimiento de cómo integrar sensores táctiles, pantallas I2C y la entrada del usuario en tus propios proyectos de Arduino.
Componentes de Hardware
Para construir este proyecto, necesitarás los siguientes componentes:
- Arduino Uno (o placa compatible)
- Módulo de sensor táctil capacitivo TTP223B o TTP223 (variante roja o azul)
- Módulo de interfaz I2C con pantalla LCD1602
- Botón de Reinicio
- Cables de conexión
- Protoboard
Guía de cableado
El cableado para este proyecto es sencillo, pero es importante tener en cuenta que el orden de los pines en los módulos táctiles rojo y azul es diferente. Aquí hay un desglose de cómo conectar todo.
Primero, conectemos el sensor táctil. Para elmódulo azul, el orden de los pines es Señal, VCC y Tierra. Conecta el pin de Señal al pin 2 de Arduino, VCC a 5V y Tierra a GND. Para elmódulo rojo, el orden de los pines es Tierra, Señal y VCC (en el video en :57). Conecta el pin de Tierra a GND, el pin de Señal (medio) al pin 2 de Arduino y el pin de VCC a 5V (en el video en :01).
A continuación, conecta la pantalla LCD. La interfaz I2C utiliza solo cuatro cables. Conecta el pin GND de la pantalla al GND del Arduino, el pin VCC a 5V, el pin SDA al pin analógico A4 del Arduino, y el pin SCL al pin analógico A5 del Arduino (en el video a las 03:55). Estos son los pines correctos para el Arduino Uno. Si estás utilizando una placa diferente como un Arduino Mega, los pines SDA y SCL están en 20 y 21 respectivamente (en el video a las 04:18).
Finalmente, conecta el botón de reinicio. Coloca el botón en la placa de pruebas y conecta uno de sus pines a GND de Arduino y el otro al pin 12 de Arduino (en el video a las 03:33). El orden de estos cables no importa.
Este proyecto no requiere resistencias para el sensor táctil o el botón, ya que el código utilizará la resistencia de pull-up interna del Arduino para el botón.
Explicación del código
El código de este proyecto está diseñado para ser sencillo de entender y modificar. Las partes clave configurables por el usuario se encuentran en la parte superior del boceto.
Aquí está la sección del código que probablemente querrás personalizar:
// 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 numberDesglosemos lo que hace cada una de estas configuraciones:
- Dirección LCD:La
lcd(0x27, 16, 2)la línea configura la pantalla. El0x27es la dirección I2C de tu módulo LCD específico. La mayoría de los módulos utilizan esta dirección, pero si tu pantalla no funciona, podría ser0x3FPuedes cambiar este valor para que coincida con tu pantalla. - touchPin:Esta constante define el pin de Arduino al que está conectado el cable de señal de su sensor táctil. Puede cambiar esto si desea usar un pin diferente.
- resetPin:Esta constante define el pin de Arduino para tu botón de reinicio. Por defecto, está configurado en el pin 12.
- touchDelay:Esta es una configuración crucial. Controla el tiempo mínimo en milisegundos entre dos toques registrados (en el video a las :13). Un valor de 500 ms previene conteos múltiples accidentales a partir de un solo toque o de toques muy rápidos. Si deseas que el contador sea más sensible, puedes reducir este valor a algo como 100 ms (en el video a las :31).
Elcountla variable es un entero que almacena el valor actual del conteo. Se inicializa en cero y se incrementa cada vez que se toca el sensor. El código en sí maneja la lógica de lectura del sensor, actualización de la pantalla y verificación del botón de reinicio, por lo que no tienes que preocuparte por eso. Simplemente ajusta las constantes anteriores para que se adapten a tu configuración específica y comportamiento deseado.
Demostración de Proyecto en Vivo
Una vez que tengas todo cableado y el código cargado en tu Arduino, el proyecto funcionará de la siguiente manera:
Cuando enciendes el dispositivo, la LCD mostrará "Robojax Touch" y "Counter V2" durante unos segundos antes de que comience a contar. Cada vez que toques la almohadilla del sensor, el contador se incrementará en uno, y el nuevo conteo se mostrará en la línea inferior de la LCD, al lado de la palabra "Touched:" (en el video a las 07:51). La misma información también se imprime en el Monitor Serial del IDE de Arduino para fines de depuración o registro.
Para restablecer el contador, simplemente presione el botón de pulsar. La pantalla LCD se borrará y mostrará "Restablecido", y la cuenta volverá a cero (en el video a las 08:49). El dispositivo está ahora listo para contar de nuevo. Este bucle de retroalimentación simple y claro facilita ver el proyecto funcionando en tiempo real.
Capítulos
- [00:00] Introducción y Resumen del Proyecto
- [00:44] Componentes y Cómo Funcionan
- Guía de cableado para el sensor táctil y el botón
- [03:41] Guía de cableado para la pantalla LCD
- [04:26] Explicación del código y configuración
- [06:47] Comprendiendo el Bucle Principal y la Lógica Táctil
- [09:25] Demostración y Prueba en Vivo
- [11:08] Conclusión e Ideas de Proyectos Futuros
//*
* 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
}
Cosas que podrías necesitar
-
Amazonas
-
AmazonasCompra LCD1602-I2C en Amazonamzn.to
-
eBayCompra LCD1602-I2C en eBay.ebay.us
-
AliExpressCompra LCD1602-I2C en AliExpresss.click.aliexpress.com
-
AliExpressComprar 10 piezas de LCD1602-I2C en AliExpresss.click.aliexpress.com
Recursos y referencias
Archivos📁
Archivo de Fritzing
-
Módulo LCD LCD1602-I2C con 4 cables
LCD1602-I2C.fzpz0.01 MB
Otros archivos
-
Ficha técnica del TP223
robojax-0492_TTP223_Datasheet.pdf0.24 MB -
Manual del usuario TTP223B
robojax-TTP223B_manual.pdf0.15 MB -
Biblioteca LiquidCrystal LCD1602
robojax-LCD1602_LiquidCrystal.zip