Digital Counter Using Arduino| EEPROM Counter

Hey guys, hope you are doing fine. In this article, we are going to make a digital counter using Arduino UNO and push buttons. For displaying the count we are using a 16×2 LCD. Are you familiar with the working of a push button with Arduino? If not then check our article on it. You can make more such amazing projects on Arduino. The EEPROM library helps us to read and write stored bytes. EEPROM is electrically erasable programmable read-only memory. Make the connections according to the given diagram and then upload the given code to the Arduino.

digital counter arduino

How Does Digital Counter Work?

This project can increment the count by one when you press the UP push button and decrement the count by one when you press the DOWN push button. The count is displayed on a 16×2 LCD display. You can reset the count to 0 by pressing the RESET push button for a few seconds. On the LCD the count became 0. There is a buzzer in the project which beeps whenever you press a button. The whole circuit is fabricated on a breadboard. The best thing about this project is that it holds the value of the count so when the power is disconnected you will not lose your data. This is possible because Arduino has EEPROM, a memory whose values are kept when the board is turned off.

push button

Components Required

  • Arduino UNO
  • 16×2 LCD
  • Buzzer
  • 10K-ohm potentiometer
  • Three push buttons
  • Jumper wires
  • Breadboard
  • USB cable for uploading the code
  • A Switch and a 9-volts battery
digital counter arduino

Circuit Diagram for Digital Counter

digital counter connection dagram
Arduino UNOBuzzer
D8 PinPositive
GNDNegative
Arduino UNO16*2 LCD10K Potentiometer
GNDVSS (Ground), KTerminal 1
+5VVDD ( +5V ),  ATerminal 3
 VEE ( Contrast )Terminal 2
D12 PinRS ( Register Select ) 
GNDRW ( Read\Write ) 
D11 PinE ( Enable ) 
D10 PinD4 
D9 PinD5 
D8 PinD6 
D7 PinD7 
Arduino UNOSwitchBattery
 Terminal 1Positive
Vin PinTerminal 2 
GND Negative
Arduino UNOUpDownReset
A0 PinTerminal 1  
A1 Pin Terminal 1 
A2 Pin  Terminal 1
GNDTerminal 2Terminal 2Terminal 2

Code for Digital CounterConnect the GND of Arduino with the pin of all the push buttons by using a breadboard such that each push button completes the circuit when you press it. Now attach the other pin of the UP push button with the analog-0 pin of the Arduino. Join the other pin of the DOWN push button with the analog-1 pin of the Arduino. Connect the other pin of the RESET push button with the analog-2 pin of the Arduino. Join a 9-volts battery with its positive wire to VIN of Arduin through a switch and negative wire to the GND of Arduino. Attach the positive wire of the buzzer with the digital-8 pin of the Arduino and the negative wire with the GND of Arduino. Now make the connections of the 16×2 LCD with the digital pins of the Arduino as shown in the diagram. Connect a 10K-ohm potentiometer with the LCD. You can check the interfacing of a 16×2 LCD with Arduino and make the connection according to it.

digital counter arduino

NOTE: Please upload the code given below to the Arduino. You have to install <EEPROM.h> and <LiquidCrystal.h> to your IDE first. Check here how to install a zip library to the Arduino IDE.

 // TECHATRONIC.COM  
 // EEPROM Library LINK  
 // https://github.com/PaulStoffregen/EEPROM  
 #include <LiquidCrystal.h> //Libraries  
 #include <EEPROM.h>  
 LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Arduino pins to lcd  
 #define bt_up   A0  
 #define bt_down  A1  
 #define bt_reset A2  
 #define buzzer 8  
 long d1=8, d2=7, d3=6, d4=5, d5=4, d6=3, d7=2, d8=1;  
 int flag1=0, flag2=0, timer=0;  
 void setup(){ // put your setup code here, to run once  
  pinMode(bt_up,  INPUT_PULLUP);  
  pinMode(bt_down, INPUT_PULLUP);  
  pinMode(bt_reset, INPUT_PULLUP);  
  pinMode(buzzer, OUTPUT);  
  lcd.begin(16, 2); // Configura lcd numero columnas y filas  
  lcd.clear();  
  lcd.setCursor (0,0);  
  lcd.print("  Welcome To  ");  
  lcd.setCursor (0,1);  
  lcd.print("Digital Counter");  
  delay(2000);  
  lcd.clear();  
 if(EEPROM.read(50)==0){  
 }else{WriteEeprom();}  
 EEPROM.write(50,0);   
 ReadEeprom();  
 }  
 void loop(){   
 if(digitalRead (bt_up) == 0){   
 if(flag1==0){ flag1=1;  
 d1=d1+1;  
 if(d1>9){d1=0; d2=d2+1;}   
 if(d2>9){d2=0; d3=d3+1;}   
 if(d3>9){d3=0; d4=d4+1;}   
 if(d4>9){d4=0; d5=d5+1;}   
 if(d5>9){d5=0; d6=d6+1;}   
 if(d6>9){d6=0; d7=d7+1;}   
 if(d7>9){d7=0; d8=d8+1;}   
 if(d8>9){d8=0;}   
 WriteEeprom();   
  }  
 }else{flag1=0;}  
 if(digitalRead (bt_down) == 0){   
 if(flag2==0){ flag2=1;  
 d1=d1-1;  
 if(d1<0){d1=9; d2=d2-1;}   
 if(d2<0){d2=9; d3=d3-1;}   
 if(d3<0){d3=9; d4=d4-1;}   
 if(d4<0){d4=9; d5=d5-1;}   
 if(d5<0){d5=9; d6=d6-1;}   
 if(d6<0){d6=9; d7=d7-1;}   
 if(d7<0){d7=9; d8=d8-1;}   
 if(d8<0){d8=9;}    
 WriteEeprom();   
  }   
 }else{flag2=0;}  
 if(digitalRead (bt_reset) == 0){   
 digitalWrite(buzzer, HIGH);  
 if(timer<200){timer=timer+1;}  
 if(timer==200){  
 d1=0, d2=0, d3=0, d4=0, d5=0, d6=0, d7=0, d8=0;  
 WriteEeprom();  
 }    
 }else{digitalWrite(buzzer, LOW); timer=0;}  
 lcd.setCursor (0,0);  
 lcd.print("Digital Counter");  
 lcd.setCursor(4,1);  
 lcd.print(d8);  
 lcd.print(d7);  
 lcd.print(d6);  
 lcd.print(d5);  
 lcd.print(d4);  
 lcd.print(d3);  
 lcd.print(d2);  
 lcd.print(d1);  
 delay(10);  
 }  
 void ReadEeprom() {  
 d1=EEPROM.read(1);  
 d2=EEPROM.read(2);  
 d3=EEPROM.read(3);  
 d4=EEPROM.read(4);  
 d5=EEPROM.read(5);  
 d6=EEPROM.read(6);  
 d7=EEPROM.read(7);  
 d8=EEPROM.read(8);   
 }  
 void WriteEeprom() {   
 EEPROM.write(1, d1);  
 EEPROM.write(2, d2);  
 EEPROM.write(3, d3);  
 EEPROM.write(4, d4);  
 EEPROM.write(5, d5);  
 EEPROM.write(6, d6);  
 EEPROM.write(7, d7);  
 EEPROM.write(8, d8);  
 }  
digital counter arduino

We hope that you understand the project completely and now try to make it on your own. While making this project if you are facing any errors feel free to discuss with us in the comments section below. Also, check out more tutorials on Arduino and Raspberry Pi.

HAPPY LEARNING!

Leave a Comment