Código de búsqueda

RoboJax Contador Táctil V3 Usando Pantalla LED de 4 Dígitos TM1637

RoboJax Contador Táctil V3 Usando Pantalla LED de 4 Dígitos TM1637

```html

Schematic of TTP223 module

RoboJax Touch Counter V3 utilizando pantalla LED de 4 dígitos TM1637

Este proyecto demuestra cómo construir un contador táctil utilizando un sensor táctil TTP223 y una pantalla LED de 4 dígitos TM1637. Cada toque incrementa el contador, que se muestra en el LED. Un botón de reinicio permite restablecer el conteo a cero. Este proyecto simple proporciona una base para diversas aplicaciones y es una excelente introducción a la conexión de sensores y pantallas con Arduino.

Aquí hay algunas ideas de proyectos utilizando este contador de toques:

  • Contador de recuento simple para eventos o inventario.
  • Contador de vueltas para carreras o juegos.
  • Contador de visitantes para exposiciones o salas.
  • Contador de repeticiones para rutinas de ejercicio.

Hardware/Componentes

  • Arduino Uno (o placa compatible)
  • Módulo de Sensor Táctil TTP223 o TTP223B
  • Módulo de visualización LED de 4 dígitos TM1637
  • Botón de empuje (para reiniciar)
  • Cables de salto
  • Protoboard (opcional)

Guía de cableado

Para el sensor táctil TTP223:

  • VCC a Arduino 5V
  • GND a GND de Arduino
  • SIG/IO/OUT al pin 2 de Arduino (se puede cambiar en el código)

Para la pantalla TM1637:

  • VCC a Arduino 5V
  • GND a GND de Arduino
  • CLK a pin 10 del Arduino
  • DIO al pin 11 de Arduino

Para el botón de reinicio:

  • Un extremo a GND de Arduino
  • Otro terminal al pin 12 de Arduino (se puede cambiar en el código)

Explicación del código

Este boceto utiliza elTM1637biblioteca. Instálala a través del Administrador de Bibliotecas del IDE de Arduino.

Elementos clave configurables en el código:


#define CLK 10 // clock pin
#define DIO 11 // data in-out pin
const int touchPin = 2; // touch sensor pin
const int resetPin = 12; // reset button pin
const int touchDelay = 500; // delay between touches (in ms) (in video at 04:15)

Ajusta estas definiciones de pines si estás utilizando pines diferentes. EltouchDelayLa variable (en el video a las 04:15) previene múltiples conteos de un solo toque. No es necesario un divisor de voltaje para el sensor táctil o el botón de reinicio porque se utiliza la resistencia pull-up interna del Arduino para el botón de reinicio, y el módulo del sensor táctil maneja su propia regulación de voltaje.

Las siguientes líneas inicializan el monitor serie y establecen el estado de visualización inicial:


Serial.begin(9600);
display.setBrightness(0x0f); // Set brightness (0x00 to 0x0f) (in video at 05:24)
display.showNumberDec(0); // Initial display value

El bucle principal lee el estado del sensor táctil y del botón de reinicio. Si se activa el sensor táctil, el conteo se incrementa y se muestra. Si se presiona el botón de reinicio, el conteo se restablece a cero.

Proyecto en vivo/Demostración

La demostración muestra el contador incrementando con cada toque y reiniciándose cuando se presiona el botón. El monitor serial también muestra el conteo actual. El "8888" inicial en la pantalla confirma que la pantalla está funcionando correctamente.

Capítulos

  • [00:00] Introducción y visión general del proyecto.
  • [00:34] Componentes y Explicación.
  • [02:41] Explicación del código.
  • [07:54] Instrucciones de cableado.
  • [09:27] Demostración del proyecto.

```

Imágenes

Robojax Touch Counter V3 utilizando pantalla LED de 4 dígitos TM1637
Robojax Touch Counter V3 utilizando pantalla LED de 4 dígitos TM1637
TTP223B touch module
TTP223B touch module
TTP223 Touch module - Top view
TTP223 Touch module - Top view
TTP223 Touch module - Top view
TTP223 Touch module - Top view
Schematic of TTP223 module
Schematic of TTP223 module
167-RoboJax Touch Counter V3 using TM1637 4-digit LED display
Idioma: C++
/*
 * This is Arduino touch counter V3 using TTP223/TTP223B and TM1637 seven-segment LED Display.
 * 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 TM1637 display.
 * We have a reset button to restart the counting from zero.
 * 
 * Watch video instructions for this video: https://youtu.be/VzH9iEqrm0E
 * 
 * Written by Ahmad Shamshiri on Sunday, October 28th at 10:33 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/>.
 */

//***** beginning of TM1637 Display
#include <Arduino.h>
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 10 // clock pin
#define DIO 11 // data in-out pin

// The amount of time (in milliseconds) between readings
#define TEST_DELAY   300
TM1637Display display(CLK, DIO);
uint8_t blank[] = { 0x0, 0x0, 0x0, 0x0 };// data to clear the screen

//***** end of TM1637 Display

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 20181029
    
  Serial.begin(9600);// initialize serial monitor with 9600 baud
  Serial.println("Robojax Touch Counter V3");  
  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

  display.setBrightness(0x0f);// set brightness of display  
  uint8_t data8888[] = { 0xff, 0xff, 0xff, 0xff };  // all segments show
  display.setSegments(data8888); // display 8888 on display for test 
  delay(3000);// give time to user to read the display at the beginning
  display.setSegments(blank); // clear the screen from previous values 
  display.showNumberDec(0);// display zero at the belonging

  
  // Robojax.com Touch counter 20181029        
}

void loop() {
  // Robojax.com Touch counter 20181029

  int touchValue = digitalRead(touchPin);// read touchPin and store it in touchValue

  // if touchValue is HIGH
  if(touchValue == HIGH)
  {
      count++;// increment the count   
      
      display.setSegments(blank); // clear the screen from previous values   
      display.showNumberDec(count);// display 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
      display.setSegments(blank); // clear the screen from previous values   
      display.showNumberDec(count);// display the count 
    
   }

  // Robojax.com Touch counter 20181029
}

Archivos📁

Bibliotecas de Arduino (zip)

Archivo de Fritzing

Manual del Usuario