Código de búsqueda

RoboJax Contador Táctil V1 (Contador Básico)

RoboJax Contador Táctil V1 (Contador Básico)

Introducción

Esta guía demuestra cómo construir un contador táctil simple pero práctico utilizando un Arduino y el módulo de sensor táctil capacitivo TTP223B. El proyecto, creado por Robojax, proporciona una introducción práctica a la lectura de entradas digitales y la gestión del estado dentro de un programa de microcontrolador. En lugar de un botón físico, este proyecto utiliza una almohadilla sensible al tacto, que es una excelente manera de aprender sobre la tecnología de detección capacitiva.

Schematic of TTP223 module
Arduino wring for TTP223 Touch sensor with relay
TTP223 Touch module - Top view
TTP223 Touch module - Top view

La funcionalidad principal es sencilla: cada vez que tocas el sensor, un contador se incrementa en uno y el conteo actual se muestra en el Monitor Serial del Arduino. Se utiliza un botón separado para restablecer el contador a cero. Este proyecto simple se puede adaptar a una variedad de aplicaciones del mundo real, incluyendo:

  • Creando un contador de personas sencillo para una habitación o evento.
  • Construyendo un contador de puntuación para inventario o contar artículos.
  • Desarrollando un panel de control basado en táctil para otros proyectos.
  • Enseñando los fundamentos de la lectura de entrada digital y la gestión de estados.

Hardware requerido

  • Placa Arduino (Uno, Nano, etc.)
  • Módulo de sensor táctil capacitivo TTP223B
  • Interruptor de botón
  • Placa de pruebas y cables jumpers

Guía de cableado

El cableado para este proyecto es muy simple, requiriendo solo algunas conexiones. El módulo TTP223B tiene tres pines: VCC, GND y OUT (o SIG). El botón pulsador tiene dos pines, y se conecta utilizando la resistencia pull-up interna del Arduino, lo que simplifica el circuito al eliminar la necesidad de una resistencia externa.

Aquí está el diagrama de conexión:

  • TTP223B VCCConéctate a los Arduino.5Vpina.
  • TTP223B GNDConéctate al Arduino.GNDpiñón.
  • TTP223B SALIDAConectar al pin digital de Arduino2.
  • Botón pulsador Pin 1Conéctate al pin digital de Arduino12.
  • Botón de presión Pin 2Conéctate al Arduino.GNDclave.

Como se explica en el video, el botón está conectado para usar la resistencia pull-up interna del Arduino. Esto significa que el pin leeráHIGHcuando el botón no está presionado yLOWcuando se presiona, eliminando la necesidad de una resistencia externa. (en el video a las 03:48)

Explicación del código

El código de Arduino para este proyecto es conciso y se centra en unos pocos parámetros configurables clave. Puedes adaptar fácilmente este proyecto para usar diferentes pines o ajustar el tiempo modificando las variables en la parte superior del boceto.

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 = 10;//millisecond delay between each touch
  • touchPinEsta constante define el pin digital al que está conectado el pin OUT del sensor táctil TTP223B. Puedes cambiar el número.2a cualquier otro pin digital (por ejemplo, 3, 4, 5, etc.) si prefieres una configuración de cableado diferente.
  • resetPinEsta constante define el pin digital conectado al botón de reinicio. El valor predeterminado es12, pero puedes cambiarlo a cualquier otro pin digital disponible.
  • touchDelayEsta variable establece un retraso en milisegundos después de que se detecta un toque. Su propósito es debounciar el sensor y evitar múltiples conteos de un solo toque rápido. Un valor de10milisegundos es un buen punto de partida, pero puedes aumentarlo (por ejemplo, a 100 o 500) si encuentras que el contador se incrementa demasiado rápido. (en el video a las 02:45)

Elcountla variable es un contador interno que no deberías modificar. Elsetup()La función inicializa el Monitor Serial a una velocidad de transmisión de 9600, que debe coincidir con la configuración en el Monitor Serial de tu IDE de Arduino, y establece los modos de pin para el sensor táctil y el botón de reinicio. Elloop()la función lee continuamente el sensor táctil; cuando detecta unHIGHseñal, incrementa elcountvariable e imprime el nuevo valor en el Monitor Serial. También comprueba el botón de reinicio, y si leeLOW, establece elcountde vuelta a cero. (en el video a las 04:04)

Demostración de Proyecto en Vivo

Una vez que el código se haya cargado en tu Arduino, abre el Monitor Serial (configurado a 9600 baudios). Deberías ver el mensaje "Contador Táctil Robojax". Cada vez que toques la almohadilla de metal en el módulo TTP223B, el contador se incrementará y mostrará un mensaje como "Tocado 1 vez." Presionar el botón de reinicio borrará el conteo y mostrará "Contador Reiniciado." El video demuestra este proceso con dos módulos TTP223B diferentes, mostrando que el código funciona con ambas variantes comunes. (en el video a :49)

Conclusión

Este proyecto proporciona una base sólida para entender cómo interactuar con sensores táctiles y gestionar contadores simples. El código es limpio y está bien comentado, lo que facilita su modificación para otros propósitos. El creador también menciona futuras variaciones, como agregar un límite al conteo o activar una alarma o relé después de un número específico de toques, que son excelentes pasos para expandir tus habilidades. (en el video a las 05:50)

Capítulos

  • [00:00] Introducción al Proyecto Touch Counter
  • [00:49] Configuración de hardware y cableado
  • [02:29] Explicación del código
  • Cómo funciona la función Loop
  • [05:50] Conclusión y Ideas para Proyectos Futuros

Imágenes

TTP223B touch module
TTP223B touch module
Arduino wring for TTP223 Touch sensor with relay (blue)
Arduino wring for TTP223 Touch sensor with relay (blue)
Arduino wring for TTP223 Touch sensor with relay
Arduino wring for TTP223 Touch sensor with relay
TTP223 Touch module - Top view
TTP223 Touch module - Top view
TTP223 Touch module - back view
TTP223 Touch module- back view
TTP223 Touch module - Top view
TTP223 Touch module - Top view
Schematic of TTP223 module
Schematic of TTP223 module
165-RoboJax Touch Counter V1 (basic counter)
Idioma: C++
++
/*
 * This is an Arduino Robojax Touch counter using TTP223/TTP223B.
 * This program will function as a counter. Every time the touch module is touched,
 * the counter increments by 1.
 * We have a reset button to restart the counting from zero.
 * 
 * Watch video instructions for this video: https://youtu.be/zJ-yd4vYn8s
 * 
 * Written by Ahmad Shamshiri on Saturday, October 27th at 2:40 PM 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/>.
 */

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 = 10;//millisecond delay between each touch

int count=0;// variable holding the count number

void setup() {
 // Robojax.com Touch counter 20181027
  Serial.begin(9600);// initialize serial monitor with 9600 baud
  Serial.println("Robojax Touch Counter");  
  pinMode(touchPin,INPUT);// define a pin for touch module
  pinMode(resetPin,INPUT_PULLUP);// define a pin for reset button
  // see video ( http://bit.ly/pushbutton-resistor) on using PULLUP

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

      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)
   {
    count =0;// reset the counter;
      Serial.println("Counter Resetted.");//print the information
    
   }

  // Robojax.com Touch counter 20181027
}

Archivos📁

Hoja de datos (pdf)

Otros archivos