Robojax Touch Counter V3 using TM1637 4 digits LED display
Robojax Touch Counter V3 using TM1637 4 digits LED display
This Arduino code make simple touch counter. Every time touch module TTP223/TTP223B is touched, the counter number increases and displays on the LED display TM1637 and on serial monitor in Arduino by pressing Ctrl+Shift+M on your PC. There is a reset button which you can reset the counting at any time.
TTP223 or TTP223B module with a single push button is used to make this counter. Any Arduino boards can be used.
Fig. 1 Wiring of Robojax Touch Counter V3
Resources for this sketch
- Robojax Touch Counter V1 Basic
- Robojax Touch Counter V2 using LCD1602-I2C display
- Why use Resistors with Push buttons (Video and code)
- Introduction to TTP223 Capacitive touch module(Video and Code)
- Using TM1637 4 digits 7-Segment Display for Arduino (Video and Code)
- TTP223 chip Datasheet (pdf)
- download TM1637 Manual (pdf)
- TM1637 Library (from Robojax.com)
- TM1637 Data sheet (pdf)
- TM1637 Library (from GetHub)
/*
* This is Arduino touch counter V3 using TTP223/TTP223B and TM1637 seven-segment LED Display
* this program will function as counter. Every time the touch module is touch
* the counter increments +1 to the counter. The count number is displayed on TM1637 display
* We have got a reset button to restart the counting from zero.
*
* Watch video instruction for this video:https://youtu.be/VzH9iEqrm0E
*
* Written by Ahmad Shamshiri on Sunday 28th of October 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 download 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
}