RoboJax Touch Counter V1 (Contador Básico)
Introdução
Este guia demonstra como construir um contador de toque simples, mas prático, usando um Arduino e o módulo de sensor de toque capacitivo TTP223B. O projeto, criado pela Robojax, oferece uma introdução prática à leitura de entradas digitais e ao gerenciamento de estados dentro de um programa de microcontrolador. Em vez de um botão físico, este projeto utiliza um painel sensível ao toque, que é uma ótima maneira de aprender sobre tecnologia de detecção capacitiva.




A funcionalidade principal é simples: cada vez que você toca no sensor, um contador é incrementado em um, e a contagem atual é exibida no Monitor Serial do Arduino. Um botão separado é usado para redefinir a contagem de volta para zero. Este projeto simples pode ser adaptado para uma variedade de aplicações do mundo real, incluindo:
- Criando um contador simples de pessoas para uma sala ou evento.
- Construindo um contador de contagem para inventário ou contagem de itens.
- Desenvolvendo um painel de controle baseado em toque para outros projetos.
- Ensinando os fundamentos da leitura de entrada digital e gerenciamento de estado.
Hardware Requerido
- Placa Arduino (Uno, Nano, etc.)
- Módulo sensor de toque capacitivo TTP223B
- Interruptor de botão
- Placa de ensaio e fios jumper
Guia de Fiação
A fiação para este projeto é muito simples, requerendo apenas algumas conexões. O módulo TTP223B tem três pinos: VCC, GND e OUT (ou SIG). O botão possui dois pinos, e está conectado usando o resistor pull-up interno do Arduino, o que simplifica o circuito ao eliminar a necessidade de um resistor externo.
Aqui está o diagrama de conexão:
- TTP223B VCCConecte-se ao Arduino's5Vpin.
- TTP223B GNDConectar ao Arduino'sGNDpino.
- TTP223B SAÍDAConecte-se ao pino digital do Arduino2.
- Botão de pressão Pino 1Conecte-se ao pino digital do Arduino12.
- Botão de pressão Pino 2Conecte-se ao Arduino.GND```
Conforme explicado no vídeo, o botão é conectado para usar o resistor de pull-up interno do Arduino. Isso significa que o pino irá lerHIGHquando o botão não é pressionado eLOWquando é pressionado, eliminando a necessidade de um resistor externo. (no vídeo às 03:48)
Explicação do Código
O código Arduino para este projeto é conciso e foca em alguns parâmetros configuráveis-chave. Você pode facilmente adaptar este projeto para usar pinos diferentes ou ajustar o tempo modificando as variáveis no topo do esboço.
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 touchtouchPinEsta constante define o pino digital ao qual o pino OUT do sensor de toque TTP223B está conectado. Você pode alterar o número.2para qualquer outro pino digital (por exemplo, 3, 4, 5, etc.) se você preferir uma configuração de fiação diferente.resetPinEsta constante define o pino digital conectado ao botão de reset. O valor padrão é12, mas você pode mudá-lo para qualquer outro pino digital disponível.touchDelayEsta variável define um atraso em milissegundos após um toque ser detectado. Seu objetivo é eliminar os ruídos do sensor e evitar contagens múltiplas de um único toque rápido. Um valor de10milissegundos é um bom ponto de partida, mas você pode aumentá-lo (por exemplo, para 100 ou 500) se perceber que o contador está incrementando muito rapidamente. (no vídeo às 02:45)
Ocounta variável é um contador interno que você não deve modificar. Osetup()função inicializa o Monitor Serial a uma taxa de transmissão de 9600, que deve corresponder à configuração no Monitor Serial do seu IDE Arduino, e define os modos dos pinos para o sensor de toque e o botão de reset. Oloop()a função lê continuamente o sensor de toque; quando detecta umHIGHsinal, ele incrementa ocountvariável e imprime o novo valor no Monitor Serial. Também verifica o botão de reset e, se lerLOW, define ocountde volta a zero. (no vídeo às 04:04)
Demonstração de Projeto Ao Vivo
Uma vez que o código é enviado para o seu Arduino, abra o Monitor Serial (configurado para 9600 baud). Você deverá ver a mensagem "Robojax Touch Counter". Cada vez que você toca no pad de metal do módulo TTP223B, o contador será incrementado e imprimirá uma mensagem como "Tocado 1 vez." Pressionar o botão de reset irá limpar a contagem e imprimir "Contador Resetado." O vídeo demonstra esse processo com dois módulos TTP223B diferentes, mostrando que o código funciona com ambas as variantes comuns. (no vídeo em 00:49)
Conclusão
Este projeto fornece uma base sólida para entender como interagir com sensores de toque e gerenciar contadores simples. O código é limpo e bem comentado, facilitando a modificação para outros propósitos. O criador também menciona futuras variações, como adicionar um limite ao contador ou acionar um alarme ou relé após um número específico de toques, que são excelentes próximos passos para expandir suas habilidades. (no vídeo às 05:50)
Capítulos
- [00:00] Introdução ao Projeto Touch Counter
- [00:49] Configuração de Hardware e Fiação
- [02:29] Explicação do Código
- Como a Função Loop Funciona
- [05:50] Conclusão e Ideias para Projetos Futuros
++
/*
* 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
}
Arquivos📁
Folha de dados (pdf)
-
Folha de dados TTP223 da Taiwan Semiconductor (TONTEK)
TTP223_datasheet.pdf0.27 MB
Outros arquivos
-
Manual do Usuário TTP223B
robojax-TTP223B_manual.pdf0.15 MB