Simplest UNO Digital Clock Ever

The simplest Arduino LCD clock ever designed. Only needs an Arduino UNO, a 1602 LCD, and two buttons. No resistors, no potentiometer.

Nov 18, 2018

242168 views

134 respects

Components and supplies

1

Solderless Breadboard Half Size

1

Jumper wires (generic)

2

Pushbutton switch 12mm

1

Arduino UNO

1

Standard LCD - 16x2 White on Blue

Project description

Code

Downloadable files

Schematics simplest UNO clock ever

Schematics simplest UNO clock ever

Breadboard wiring simplest UNO clock ever

Breadboard wiring simplest UNO clock ever

Schematics simplest UNO clock ever

Schematics simplest UNO clock ever

Breadboard wiring simplest UNO clock ever

Breadboard wiring simplest UNO clock ever

Documentation

Fritzing file simplest UNO clock ever

Fritzing file simplest UNO clock ever

Comments

Only logged in users can leave comments

hazymaze96

2 months ago

This clock gets slower and slower every day. Currently it's about a few minutes off!?! Time may not work the same way in my workspace than it does in the outside world! But for seriously though is there a fix for this?

79536795363

8 months ago

I did all of the wiring properly and uploaded the code however the LCD display is not showing any numbers. It is turned on but it is just not working. What do I do?

ty2ler

6 months ago

I encountered the same issue, and I seemed to have found a solution. The fix was placing the VSS pin on the display to the ground and placing the VDD pin to the positive.

absolutely_dahling

10 months ago

Thanks for the code! I tweaked it to run on a 128x64 Display with a few modifications. Running through I2C on a Wemos D1 mini. Absolutely flawless. Currently running in tandem with a DHT22 off a 3.6v source and i'm going to see how long it'll run before a battery change. This saved me literal days of figuring stuff out, I'll be holding onto some of this code for a looooong time

kweedwr

a year ago

Hi, I have uploaded the code but it seems not working, the lcd doesn't show the time, can you please give me some suggestions.

ty2ler

6 months ago

Hi kweedwr, I encountered a similar issue. Check your wiring on the display, the VSS pin should be on the negative and the VDD pin to the positive. The Drawing confused me a bit and I had two wires in the incorrect spot, which caused the LCD to come on but not display anything.

rfeist11

a year ago

Had a great time with this project! Many thanks.

Anonymous user

2 years ago

would you be able to send that code to me

plouc68000

2 years ago

in the section CODE Press the "Download Sketch" Button to download it ( next to the OPEN CODE Button ).

umairshaheen7

2 years ago

nice project, i like it!!

transistor_man

2 years ago

I have recently tried your project, but I noticed that the time is off. After 24 hours, the circuit would tell me the time 1-3 minutes off the real time. Every day it got worse and worse! Should I change the code so that it subtracts X amount of minutes every Y amount hours?

Anonymous user

2 years ago

It doesnt work for me...I did everything right

plouc68000

2 years ago

From the original creator, here a Version with a LCD with I2C interface..... enjoy ! https://create.arduino.cc/editor/duemilaventi/89367fef-fe9d-493f-9929-dab9c4264d25/preview

milespeterson101

2 years ago

Guess what guys? here's how to make the backlight not time-out. just get to the part of the code where it says backlight timeout and change the numbers, the number should be 150. so just change it to zero. There it is! done! now the backlight will never time out! good luck building your clock! hope this helps someone.

Anonymous user

2 years ago

Can i thank you for sharing your knowledge i like your use of "millis" compare to the original project of "delay"

Anonymous user

2 years ago

Well, my mistake. I had added resistors to the pushbuttons. When I took them out and just connected pushbuttons to ground, both pushbuttons worked as they should. Now I have to think why that is the case.

Jop_148

2 years ago

i followed all your instrustions but when i pressed the hour button or minute button but only the screen turns on. can you please help me

Anonymous user

2 years ago

nice project! I am tinkering with it (different display, I2C, have to adapt all the brightness stuff, and am adding a switch function, to start lights on after 1500 hrs untill 2300 hrs, may be later also an LDR to indicate day/nite. I notice however that the clock runs on after 23:59:59! There seems to be no overflow of hrs, and change back to "AM"?

plouc68000

2 years ago

Please check the rules for AM/PM change https://www.timeanddate.com/time/am-and-pm.html

aswinan

2 years ago

This too help for me because i don't need the digital watch. Thankyou.😃😁

Anonymous user

2 years ago

The lcd screen is blue and i can see no letters why ?

Anonymous user

2 years ago

Did you fix this problem?

hellopeoria

2 years ago

Hey, I like the project a lot but it says that the current through blacklight led is 27.9 mA while the maximum is 20.00 mA. My project is the exact same as yours so I was curious what I should do.

longlac

2 years ago

can this be done without the breadboard?

Anonymous user

2 years ago

I tried making this circuit in tinker cad and I kept getting an error that the current through the back light was too high. I was wondering if you could make a picture of the schematic not hand drawn because it is hard to visualize.

KetanMiyatra

2 years ago

i also tried this circuit into thinkercad but same thing happens the lcd 16*4 backlight current was too high, no output on Display ...!

milespeterson101

2 years ago

Can I make it so the backlight doesn't time out?

plouc68000

2 years ago

The back light is connected to the PWM output, and the PWM duty cycle is set by the Sketch so that the average Current don't exceed 7mA. So you can ignore that error. Give me a bit time, I may draw it in Fritzing....(:-), but the circuit is so simple, difficult to understand what could go wrong....

Anonymous user

2 years ago

Great project, everything works great!!! :)

zanderson12

2 years ago

Is it possible to change the code so that there isn't a backlight time out?

milespeterson101

2 years ago

yes there is. here's how. just go to the section of the code where it says backlight timeout. then change the number. it should be 150 0n it's own. so, just change the number to zero. there! done! now it will never time out. hope this helps! 😀

Anonymous user

2 years ago

Project works great, thanks! My lcd screen is "flickering" a lot, any ideas on how to fix this? Much appreciated

mcottton

2 years ago

I removed the intolerable flicker by adjusting the contrast line 28. Originally, the contrast was set at 100. I reduced it to 1 with good results. const int contrast = 1;// default contrast was 100 Next I added a potentiometer in series with D9 so that I could adjust the contrast on the LCD making it more visible. Potentiometer connected to ground and D9 with the wiper connected to VE on the display. VE is where D9 was originally connected. This is a very nice well documented code that actually works well. Thank you

Anonymous user

2 years ago

Have you checked your connections to make sure that they are all connected properly? If that does not work you may do some research and find out if anyone else is having that problem. If that does not fix it, you may want to contact the company.

Anonymous user

2 years ago

Nice use of of built in Arduino resources. The board is so rich in capabilities. Your use of BITWISE OR "|" in the script is a bit advance for the target audience. It needs a "teaching moment" comment. Thanks for stretching my Arduino knowledge!

Anonymous user

2 years ago

Great Project ! I Love It

Anonymous user

2 years ago

help! my display board is on but not dong anything. Any way to make it show numbers? Thanks for your answer

Anonymous user

2 years ago

thank szuper project works

Anonymous user

2 years ago

I think this would be much simpler if any display using I2C instead was used (only two wires are used to communicate with it). Little OLED displays like the SSD1306 can be bought for just a few dollars, are simple to use, and run using little power. There is also an I2C version of the kind if display used here. Also look at cheap capacitive touch buttons, if you don't wish to have to cater for mechanical switches bouncing (and I trust you have catered for it!). I haven't look at the code, but also be sure to use interrupts for trapping button presses.

mechsteve

2 years ago

after uploading to the Arduino I get nothing but flickering on my LCD screen? is this a wiring problem ?

milespeterson101

2 years ago

I'm not sure, If you need help I'd try re-wiring the circuit. If that doesn't work try copying the code again and uploading it again. It might fix it.

Anonymous user

2 years ago

LCD doesn't turn on

Anonymous user

2 years ago

Thanks, it works great. Why doesn't it work when resistors are used other than the pull-down resistors? Regards

Anonymous user

2 years ago

Hi. Thank you for sharing this project. I am new to Arduino (but not to programming), so projects like this is very good for learning. But I am thinking: Why have a delay in the first place? It wont make a big difference (except for button response) in this project, but lets think that you would make a precission clock, for timing a sportevent or you would put more stuff in the loop, so it takes longer to run. Here is an idea. static uint32_t last_time, now = 0; // RTC int increment_time = 1000; setup { // now=millis(); // read RTC initial value (dont need this) } loop { now=millis(); if (now-last_time > increment_time) { Put everything here that has to set the new time and updating the display last_time=last_time+increment_time; } Everything else is put here. The button response will be very good and there will be no delay, because it always increments with 1000. You wont need the for i<5 loop. } There will be just one loop. No inner and outer loop. If you want to time 1/10 or 1/100 of a second just change: increment_time to 100 (or 10). Dont know if you think its a good idea, but its worth a try.

Anonymous user

2 years ago

I made this and it worked real good!

mrslikestocode

2 years ago

Hi, one of my students is trying to make this project to run in TinkerCAD. The wiring looks great. We copied the code and just get a blank screen. What is the issue? Hope you can help.

Anonymous user

2 years ago

Here is the code for tinkercad circuits - 12 hour version - dont forget to add resistor to "terminal 1" or pin 10 #include "LiquidCrystal.h" // This defines the LCD wiring to the DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Digital LCD Constrast setting int cs=9;// pin 9 for contrast PWM const int contrast = 6200;// default contrast // initial Time display is 12:59:45 Ti int h=12; int m=59; int s=45; int flag=1; //Ti // Time Set Buttons int button1; int button2; // Pins definition for Time Set Buttons int hs=0;// pin 0 for Hours Setting int ms=1;// pin 1 for Minutes Setting // Backlight Time Out const int Time_light=150; int bl_TO=Time_light;// Backlight Time-Out int bl=10; // Backlight pin const int backlight=120; // no more then 7mA !!! // For accurate Time reading, use Arduino Real Time Clock and not just delay() static uint32_t last_time, now = 0; // RTC void setup() { lcd.begin(16,2); pinMode(hs,INPUT_PULLUP);// avoid external Pullup resistors for Button 1 pinMode(ms,INPUT_PULLUP);// and Button 2 analogWrite(cs,contrast);// Adjust Contrast VO analogWrite(bl,backlight);// Turn on Backlight now=millis(); // read RTC initial value Serial.begin(9600); } void loop() { lcd.begin(16,2);// every second // Update LCD Display // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor(0,0); lcd.print("Time "); if(h<10)lcd.print("0");// always 2 digits lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s); if(flag==0) lcd.print(" AM"); if(flag==1) lcd.print(" PM"); lcd.setCursor(0,1);// for Line 2 lcd.print("Precision clock"); // improved replacement of delay(1000) // Much better accuracy, no more dependant of loop execution time for ( int i=0 ;i<5 ;i++)// make 5 time 200ms loop, for faster Button response { while ((now-last_time)<200) //delay200ms { now=millis(); } // inner 200ms loop last_time=now; // prepare for next loop // read Setting Buttons button1=digitalRead(hs);// Read Buttons button2=digitalRead(ms); //Backlight time out bl_TO--; if(bl_TO==0) { analogWrite(bl,0);// comment out this line to turn Backlight OFF bl_TO++; } // Hit any to activate Backlight if( ((button1==0)|(button2==0)) & (bl_TO==1) ) { bl_TO=Time_light; analogWrite(bl,backlight); // wait until Button released while ((button1==0)|(button2==0)) { button1=digitalRead(hs);// Read Buttons button2=digitalRead(ms); } } else // Process Button 1 or Button 2 when hit while Backlight on { if(button1==0){ h=h+1; bl_TO=Time_light; analogWrite(bl,backlight); } if(button2==0){ s=0; m=m+1; bl_TO=Time_light; analogWrite(bl,backlight); } /* ---- manage seconds, minutes, hours am/pm overflow ----*/ if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==13) { h=1; flag=flag+1; if(flag==2)flag=0; } if((button1==0)|(button2==0))// Update display if time set button pressed { // Update LCD Display // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor(0,0); lcd.print("Time "); if(h<10)lcd.print("0");// always 2 digits lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s); if(flag==0) lcd.print(" AM"); if(flag==1) lcd.print(" PM"); lcd.setCursor(0,1);// for Line 2 lcd.print("Precision clock"); } } // end if else }// end for // outer 1000ms loop s=s+1; //increment sec. counting // ---- manage seconds, minutes, hours am/pm overflow ---- if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==13) { h=1; flag=flag+1; if(flag==2)flag=0; } // Loop end }

Anonymous user

2 years ago

I found the same problem and got it to work- I added a 200 ohm resistor connecting to the arduino on pin 10 or "Terminal 1" on the lcd. I.E. the second to last pin next to the "led cathode" port. If you add more resistance, the lcd will be dimmer. I used the code posted from the Pauli_T...

matyasbartosik

2 years ago

IDK why but every project that i tried today was not working. am i unlucky or what??? i checked it 3 times and still i didnt find any problem. my connection is connected ok but maybe its problem with code or my arduino, i should try my second arduino.

Anonymous user

2 years ago

The clock still remain PM after 11:59:59 PM. Please help

plouc68000

2 years ago

Please check again, the change to AM is at 12:59:59, next second gives then 1:00:00 AM Here the rules : To convert am or pm time to the 24-hour format, use these rules: From midnight to 12:59 am, subtract 12 hours. 12:49 am = 0:49 (12:49 – 12) From 1 am to noon, do nothing. 11:49 am = 11:49 From 12:01 pm to 12:59 pm, do nothing. 12:49 pm = 12:49 From 1:00 pm to midnight, add 12 hours. 1:49 pm = 13:49 (1:49 + 12) Here's how to convert time on a 24-hour clock to the 12-hour system: From 0:00 (midnight) to 0:59, add 12 hours and use am. 0:49 = 12:49 am (0:49 + 12) From 1:00 to 11:59, just add am after the time. 11:49 = 11:49 am From 12:00 to 12:59, just add pm after the time. 12:49 = 12:49 pm From 13:00 to 0:00, subtract 12 hours and use pm. 13:49 = 1:49 pm (13:49 - 12) https://www.timeanddate.com/time/am-and-pm.html

milespeterson101

2 years ago

Thanks so much! I got the clock to work very well! then I got the idea, I should put my clock into a LEGO box. then I got started. it took me like 5 tries because some hookup wires got tossed around in the box and unpluged. But I got it eventually. then it works! Thanks for the idea and the project! 👍

milespeterson101

2 years ago

Thanks! this really helped! I love this idea, it's awesome to have an actual LCD display have a real time clock on it! thanks again! this is great for experiments! 👍

milespeterson101

2 years ago

Thank you!!! this is perfect. a working Clock for an LCD display for Arduino UNO. it's great! But I do Recommend changing the Code just a little... 😄 I like changing the LCD's print. instead of saying precision clock, it's now says AM/PM Clock. just like that, your making the project a little better. Thanks for the Idea! 💡👍

Anonymous user

2 years ago

I really like your project sir. I did get it to work in tinkercad without the pwm backlight. I just used the default assembled circuit for tinkercad with the backlight pot and changed the pins in your code a bit. I would be building it right now if I had the right display. Currently working on using an spi interface display but there is no spi display in tinkercad. I would prefer to get it running in a simulator before risking my hardware. Anyway... rambling. Very nice project. I like that you got rid of the external resistors and used internal pullups too. Very smart.

Anonymous user

2 years ago

Hi, it is a great project, very thanks for share it!! A little improvement can be added to the program: instead of repeat the code to update the display twice, a single function can be used and called in the time update and time adjust. Since none value should be returned, just use a void() funcion passing the the data of hour, minutes, seconds and AM/PF flag by parameters. Pointers will only confuse the begginers!! Also the suggestion of Triceratops999 is a well know way to get a precise base time. It is also used to make a kind of "timed interruption" because the code inside the "if (now-last_time > increment_time) {}" only will be executed when the time elapsed in condition of it is meet. Take care!

Anonymous user

2 years ago

Thanks for the circuit and the code. It works well, except for the fact that the minute push button does not work.

Anonymous user

2 years ago

I made it with my LCD screen, but I could barely read it. I tried to change the code, but I don't know much about it. Thanks!

Anonymous user

2 years ago

how to copy paste

Anonymous user

2 years ago

help! my display board is on but not dong anything. Any way to make it show numbers?

Anonymous user

2 years ago

this is my first project find here that work well at first try! TY

Anonymous user

2 years ago

Thank you for a great program. I edited it for the 24h screen and changed the evening / morning screen to show the days of the week. in my version the changes are in Finnish. I will attach my own code here. I complain about those emoticons in Code. should be (0) /* ### simplest ever Arduino UNO digital clock ### This clock needs only a 1602 LCD 2X16 and 2 push buttons No Potentiometer for contrast, no resistors for pull-up or backlight !!!! * The simplest clock ever made with a Arduino UNO * Button Functions: - short stroke on one of the buttons put Backlight on for 30 s Time settings - Press on H increments the Hours - Press on M increments the Minutes and resets the seconds */ #include "LiquidCrystal.h" // This defines the LCD wiring to the DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Digital LCD Constrast setting int cs=9;// pin 9 for contrast PWM const int contrast = 100;// default contrast // initial Time display is 12:59:45 Ti int h=12; int m=59; int s=45; int flag=1; //Ti // Time Set Buttons int button1; int button2; // Pins definition for Time Set Buttons int hs=0;// pin 0 for Hours Setting int ms=1;// pin 1 for Minutes Setting // Backlight Time Out const int Time_light=150; int bl_TO=Time_light;// Backlight Time-Out int bl=10; // Backlight pin const int backlight=120; // no more then 7mA !!! // For accurate Time reading, use Arduino Real Time Clock and not just delay() static uint32_t last_time, now = 0; // RTC void setup() { lcd.begin(16,2); pinMode(hs,INPUT_PULLUP);// avoid external Pullup resistors for Button 1 pinMode(ms,INPUT_PULLUP);// and Button 2 analogWrite(cs,contrast);// Adjust Contrast VO analogWrite(bl,backlight);// Turn on Backlight now=millis(); // read RTC initial value } void loop() { lcd.begin(16,2);// every second // Update LCD Display // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor(0,0); lcd.print("Aika "); if(h<10)lcd.print("0");// always 2 digits lcd.print(h); lcd.print(":"); if(m<10)lcd.print(""); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s); if(flag==0) lcd.print(" Ma"); if(flag==1) lcd.print(" Ti"); if(flag==2) lcd.print(" Ke"); if(flag==3) lcd.print(" To"); if(flag==4) lcd.print(" Pe"); if(flag==5) lcd.print(" La"); if(flag==6) lcd.print(" Su"); lcd.setCursor(0,1);// for Line 2 lcd.print("Tarkka PTT Kello"); // improved replacement of delay(1000) // Much better accuracy, no more dependant of loop execution time for ( int i=0 ;i<5 ;i++)// make 5 time 200ms loop, for faster Button response { while ((now-last_time)<200) //delay200ms { now=millis(); } // inner 200ms loop last_time=now; // prepare for next loop // read Setting Buttons button1=digitalRead(hs);// Read Buttons button2=digitalRead(ms); //Backlight time out bl_TO--; if(bl_TO==0) { analogWrite(bl,0);// Backlight OFF bl_TO++; } // Hit any to activate Backlight if( ((button1==0)|(button2==0)) & (bl_TO==1) ) { bl_TO=Time_light; analogWrite(bl,backlight); // wait until Button released while ((button1==0)|(button2==0)) { button1=digitalRead(hs);// Read Buttons button2=digitalRead(ms); } } else // Process Button 1 or Button 2 when hit while Backlight on { if(button1==0){ h=h+1; bl_TO=Time_light; analogWrite(bl,backlight); } if(button2==0){ s=0; m=m+1; bl_TO=Time_light; analogWrite(bl,backlight); } /* ---- manage seconds, minutes, hours am/pm overflow ----*/ if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==25) { h=1; flag=flag+1; if(flag==7)flag=0; } if((button1==0)|(button2==0))// Update display if time set button pressed { // Update LCD Display // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor(0,0); lcd.print("Time "); if(h<10)lcd.print("0");// always 2 digits lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s); if(flag==0) lcd.print(" Ma"); if(flag==1) lcd.print(" Ti"); if(flag==2) lcd.print(" Ke"); if(flag==3) lcd.print(" To"); if(flag==4) lcd.print(" Pe"); if(flag==5) lcd.print(" LA"); if(flag==6) lcd.print(" Su"); lcd.setCursor(0,1);// for Line 2 lcd.print("Tarkka PTT Kello"); } } // end if else }// end for // outer 1000ms loop s=s+1; //increment sec. counting // ---- manage seconds, minutes, hours am/pm overflow ---- if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==25) { h=1; flag=flag+1; if(flag==7)flag=0; } // Loop end }

Anonymous user

2 years ago

What should it be instead of the smiley face?

Anonymous user

2 years ago

Hi, I am very new to Arduino my uncle has gave me a quick introduction about connecting wires to breadboards but he has not told me what to do when there is a schematic. Please help me as I don't understand the schematic at all.

Anonymous user

2 years ago

When I finished making this, everything did happen properly except for one thing. The time didn't display. I know in the video you said that it is synchronized with your watch. How do you do that? Please help.

plouc68000

2 years ago

This is a simple Quartz Clock, you have to Set manually the exact Time by the Pusbuttons Hours and Minutes. This can be done down to 1 Second Precision while a stroke on the Minutes Pusbutton increases the Minutes by 1 and also resetting the seconds. So when my Casio Watch displays for exemple 04:15:59, I press shortly the Minutes Pusbutton and the Arduino Clock goes to 04:16:00 when the Display was previously 04:15:20. After this the Clock is perfectly synchonised with my Casio and I can observe the drift after 1 hour, 1 day, etc....The Time is kept as precise as the 16 MHz Crystal of the Arduino UNO is, so you won't usually see a drift even after 24h of operation.

Anonymous user

2 years ago

Hello plouc68000, you proyect is awesome! The best clock without RTC that I have found, I modified a little bit the code for my 20x4 LCD with I2C, the unique problem I have found is that the backlight blink every second pass in the clock, I think it happens cause I have the I2C conected to the LCD, and it doesn't have conect the pin 9(PWM) on the Arduino, that controls the backlight. I don't know how to fix it. Do you know how to fix the backlight to control it with I2C? Or anyone who knows? Respects

Anonymous user

2 years ago

It is a very nice project!

Anonymous user

2 years ago

I just tried this, and I couldn't get the buttons to function to set the clock - is there something I'm missing? I'm using this kit to build it https://www.amazon.com/gp/product/B07BTB3N3J/ref=ppx_yo_dt_b_asin_title_o06_s00?ie=UTF8&psc=1

Anonymous user

2 years ago

Works well, fun project. I used a resistor with the push buttons (not shown in the posted circuit diagram). I find that only one of the push buttons has any effect: The one connected to Tx advances the minutes. The one connected to Rx does nothing. I am using Nano instead of Uno but wouldn't think that is the reason. Any thoughts?

Anonymous user

2 years ago

I tried making this and my LCD screen has different ports than yours: it has 16 ports, in this order: GND, VDD, V0, RS, RW, E, DB0-DB7, BL1, BL2. I don't have an A port or a K... do some of my ports go by other names?

plouc68000

2 years ago

I guess its a similar 2 Line 16 Character LCD. BL1, BL2 must be Backlight1, Backlight2 instead of A, K ( A was for Anode, LED+, K for Kathode, LED- ) Check on Google for the Datasheet of your LCD For mine LCD 1602, look into the Datasheet Page 5 for the PIN numbers https://cdn-shop.adafruit.com/datasheets/TC1602A-01T.pdf Vss 1 Vdd 2 VO 3 RS 4 R/W 5 E 6 DB0...DB7 7...14 LED+ or A 15 LED- or K 16

Anonymous user

2 years ago

i love the simplicity of this clock took no more than 15 min to set it up. i wanted to ask how can you make it to where the lcd stays on all the time? i am not the best at coding and i found where you have the back light time out but i didn't understand how to make it to where the back light does not time out. any help with this will be awesome.

plouc68000

2 years ago

just comment out line 109 like below //analogWrite(bl,0);// Backlight OFF original analogWrite(bl,0);// Backlight OFF

brandonsykes3007

2 years ago

For some reason the code cannot be validated and it says "redefiniton of 'LiquidCrystal lcd'" it appears that the redefiniton is in code1.txt on row 12. If you could help me find out what is wrong that eould be great.

plouc68000

3 years ago

From the original creator, here a Version with a LCD with I2C interface..... enjoy ! https://create.arduino.cc/editor/duemilaventi/89367fef-fe9d-493f-9929-dab9c4264d25/preview

Anonymous user

3 years ago

help! my display board is on but not dong anything. Any way to make it show numbers? Thanks for your answer

Anonymous user

3 years ago

Can i thank you for sharing your knowledge i like your use of "millis" compare to the original project of "delay"

Anonymous user

3 years ago

Hi, it is a great project, very thanks for share it!! A little improvement can be added to the program: instead of repeat the code to update the display twice, a single function can be used and called in the time update and time adjust. Since none value should be returned, just use a void() funcion passing the the data of hour, minutes, seconds and AM/PF flag by parameters. Pointers will only confuse the begginers!! Also the suggestion of Triceratops999 is a well know way to get a precise base time. It is also used to make a kind of "timed interruption" because the code inside the "if (now-last_time > increment_time) {}" only will be executed when the time elapsed in condition of it is meet. Take care!

milespeterson101

3 years ago

Guess what guys? here's how to make the backlight not time-out. just get to the part of the code where it says backlight timeout and change the numbers, the number should be 150. so just change it to zero. There it is! done! now the backlight will never time out! good luck building your clock! hope this helps someone.

milespeterson101

3 years ago

Thanks so much! I got the clock to work very well! then I got the idea, I should put my clock into a LEGO box. then I got started. it took me like 5 tries because some hookup wires got tossed around in the box and unpluged. But I got it eventually. then it works! Thanks for the idea and the project! 👍

hellopeoria

3 years ago

Hey, I like the project a lot but it says that the current through blacklight led is 27.9 mA while the maximum is 20.00 mA. My project is the exact same as yours so I was curious what I should do.

milespeterson101

3 years ago

Thank you!!! this is perfect. a working Clock for an LCD display for Arduino UNO. it's great! But I do Recommend changing the Code just a little... 😄 I like changing the LCD's print. instead of saying precision clock, it's now says AM/PM Clock. just like that, your making the project a little better. Thanks for the Idea! 💡👍

milespeterson101

3 years ago

Thanks! this really helped! I love this idea, it's awesome to have an actual LCD display have a real time clock on it! thanks again! this is great for experiments! 👍

mechsteve

3 years ago

after uploading to the Arduino I get nothing but flickering on my LCD screen? is this a wiring problem ?

milespeterson101

2 years ago

I'm not sure, If you need help I'd try re-wiring the circuit. If that doesn't work try copying the code again and uploading it again. It might fix it.

matyasbartosik

3 years ago

IDK why but every project that i tried today was not working. am i unlucky or what??? i checked it 3 times and still i didnt find any problem. my connection is connected ok but maybe its problem with code or my arduino, i should try my second arduino.

Anonymous user

3 years ago

The lcd screen is blue and i can see no letters why ?

Anonymous user

2 years ago

Did you fix this problem?

aswinan

3 years ago

This too help for me because i don't need the digital watch. Thankyou.😃😁

zanderson12

3 years ago

Is it possible to change the code so that there isn't a backlight time out?

milespeterson101

2 years ago

yes there is. here's how. just go to the section of the code where it says backlight timeout. then change the number. it should be 150 0n it's own. so, just change the number to zero. there! done! now it will never time out. hope this helps! 😀

Anonymous user

3 years ago

I just tried this, and I couldn't get the buttons to function to set the clock - is there something I'm missing? I'm using this kit to build it https://www.amazon.com/gp/product/B07BTB3N3J/ref=ppx_yo_dt_b_asin_title_o06_s00?ie=UTF8&psc=1

Anonymous user

4 years ago

LCD doesn't turn on

transistor_man

4 years ago

I have recently tried your project, but I noticed that the time is off. After 24 hours, the circuit would tell me the time 1-3 minutes off the real time. Every day it got worse and worse! Should I change the code so that it subtracts X amount of minutes every Y amount hours?

wclaunch

4 years ago

I made this and it worked real good!

longlac

4 years ago

can this be done without the breadboard?

Anonymous user

4 years ago

It doesnt work for me...I did everything right

mrslikestocode

4 years ago

Hi, one of my students is trying to make this project to run in TinkerCAD. The wiring looks great. We copied the code and just get a blank screen. What is the issue? Hope you can help.

Anonymous user

2 years ago

Here is the code for tinkercad circuits - 12 hour version - dont forget to add resistor to "terminal 1" or pin 10 #include "LiquidCrystal.h" // This defines the LCD wiring to the DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Digital LCD Constrast setting int cs=9;// pin 9 for contrast PWM const int contrast = 6200;// default contrast // initial Time display is 12:59:45 Ti int h=12; int m=59; int s=45; int flag=1; //Ti // Time Set Buttons int button1; int button2; // Pins definition for Time Set Buttons int hs=0;// pin 0 for Hours Setting int ms=1;// pin 1 for Minutes Setting // Backlight Time Out const int Time_light=150; int bl_TO=Time_light;// Backlight Time-Out int bl=10; // Backlight pin const int backlight=120; // no more then 7mA !!! // For accurate Time reading, use Arduino Real Time Clock and not just delay() static uint32_t last_time, now = 0; // RTC void setup() { lcd.begin(16,2); pinMode(hs,INPUT_PULLUP);// avoid external Pullup resistors for Button 1 pinMode(ms,INPUT_PULLUP);// and Button 2 analogWrite(cs,contrast);// Adjust Contrast VO analogWrite(bl,backlight);// Turn on Backlight now=millis(); // read RTC initial value Serial.begin(9600); } void loop() { lcd.begin(16,2);// every second // Update LCD Display // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor(0,0); lcd.print("Time "); if(h<10)lcd.print("0");// always 2 digits lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s); if(flag==0) lcd.print(" AM"); if(flag==1) lcd.print(" PM"); lcd.setCursor(0,1);// for Line 2 lcd.print("Precision clock"); // improved replacement of delay(1000) // Much better accuracy, no more dependant of loop execution time for ( int i=0 ;i<5 ;i++)// make 5 time 200ms loop, for faster Button response { while ((now-last_time)<200) //delay200ms { now=millis(); } // inner 200ms loop last_time=now; // prepare for next loop // read Setting Buttons button1=digitalRead(hs);// Read Buttons button2=digitalRead(ms); //Backlight time out bl_TO--; if(bl_TO==0) { analogWrite(bl,0);// comment out this line to turn Backlight OFF bl_TO++; } // Hit any to activate Backlight if( ((button1==0)|(button2==0)) & (bl_TO==1) ) { bl_TO=Time_light; analogWrite(bl,backlight); // wait until Button released while ((button1==0)|(button2==0)) { button1=digitalRead(hs);// Read Buttons button2=digitalRead(ms); } } else // Process Button 1 or Button 2 when hit while Backlight on { if(button1==0){ h=h+1; bl_TO=Time_light; analogWrite(bl,backlight); } if(button2==0){ s=0; m=m+1; bl_TO=Time_light; analogWrite(bl,backlight); } /* ---- manage seconds, minutes, hours am/pm overflow ----*/ if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==13) { h=1; flag=flag+1; if(flag==2)flag=0; } if((button1==0)|(button2==0))// Update display if time set button pressed { // Update LCD Display // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor(0,0); lcd.print("Time "); if(h<10)lcd.print("0");// always 2 digits lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s); if(flag==0) lcd.print(" AM"); if(flag==1) lcd.print(" PM"); lcd.setCursor(0,1);// for Line 2 lcd.print("Precision clock"); } } // end if else }// end for // outer 1000ms loop s=s+1; //increment sec. counting // ---- manage seconds, minutes, hours am/pm overflow ---- if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==13) { h=1; flag=flag+1; if(flag==2)flag=0; } // Loop end }

Anonymous user

2 years ago

I found the same problem and got it to work- I added a 200 ohm resistor connecting to the arduino on pin 10 or "Terminal 1" on the lcd. I.E. the second to last pin next to the "led cathode" port. If you add more resistance, the lcd will be dimmer. I used the code posted from the Pauli_T...

Anonymous user

4 years ago

I think this would be much simpler if any display using I2C instead was used (only two wires are used to communicate with it). Little OLED displays like the SSD1306 can be bought for just a few dollars, are simple to use, and run using little power. There is also an I2C version of the kind if display used here. Also look at cheap capacitive touch buttons, if you don't wish to have to cater for mechanical switches bouncing (and I trust you have catered for it!). I haven't look at the code, but also be sure to use interrupts for trapping button presses.

ale69

4 years ago

this is my first project find here that work well at first try! TY

Anonymous user

4 years ago

Thank you for a great program. I edited it for the 24h screen and changed the evening / morning screen to show the days of the week. in my version the changes are in Finnish. I will attach my own code here. I complain about those emoticons in Code. should be (0) /* ### simplest ever Arduino UNO digital clock ### This clock needs only a 1602 LCD 2X16 and 2 push buttons No Potentiometer for contrast, no resistors for pull-up or backlight !!!! * The simplest clock ever made with a Arduino UNO * Button Functions: - short stroke on one of the buttons put Backlight on for 30 s Time settings - Press on H increments the Hours - Press on M increments the Minutes and resets the seconds */ #include "LiquidCrystal.h" // This defines the LCD wiring to the DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Digital LCD Constrast setting int cs=9;// pin 9 for contrast PWM const int contrast = 100;// default contrast // initial Time display is 12:59:45 Ti int h=12; int m=59; int s=45; int flag=1; //Ti // Time Set Buttons int button1; int button2; // Pins definition for Time Set Buttons int hs=0;// pin 0 for Hours Setting int ms=1;// pin 1 for Minutes Setting // Backlight Time Out const int Time_light=150; int bl_TO=Time_light;// Backlight Time-Out int bl=10; // Backlight pin const int backlight=120; // no more then 7mA !!! // For accurate Time reading, use Arduino Real Time Clock and not just delay() static uint32_t last_time, now = 0; // RTC void setup() { lcd.begin(16,2); pinMode(hs,INPUT_PULLUP);// avoid external Pullup resistors for Button 1 pinMode(ms,INPUT_PULLUP);// and Button 2 analogWrite(cs,contrast);// Adjust Contrast VO analogWrite(bl,backlight);// Turn on Backlight now=millis(); // read RTC initial value } void loop() { lcd.begin(16,2);// every second // Update LCD Display // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor(0,0); lcd.print("Aika "); if(h<10)lcd.print("0");// always 2 digits lcd.print(h); lcd.print(":"); if(m<10)lcd.print(""); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s); if(flag==0) lcd.print(" Ma"); if(flag==1) lcd.print(" Ti"); if(flag==2) lcd.print(" Ke"); if(flag==3) lcd.print(" To"); if(flag==4) lcd.print(" Pe"); if(flag==5) lcd.print(" La"); if(flag==6) lcd.print(" Su"); lcd.setCursor(0,1);// for Line 2 lcd.print("Tarkka PTT Kello"); // improved replacement of delay(1000) // Much better accuracy, no more dependant of loop execution time for ( int i=0 ;i<5 ;i++)// make 5 time 200ms loop, for faster Button response { while ((now-last_time)<200) //delay200ms { now=millis(); } // inner 200ms loop last_time=now; // prepare for next loop // read Setting Buttons button1=digitalRead(hs);// Read Buttons button2=digitalRead(ms); //Backlight time out bl_TO--; if(bl_TO==0) { analogWrite(bl,0);// Backlight OFF bl_TO++; } // Hit any to activate Backlight if( ((button1==0)|(button2==0)) & (bl_TO==1) ) { bl_TO=Time_light; analogWrite(bl,backlight); // wait until Button released while ((button1==0)|(button2==0)) { button1=digitalRead(hs);// Read Buttons button2=digitalRead(ms); } } else // Process Button 1 or Button 2 when hit while Backlight on { if(button1==0){ h=h+1; bl_TO=Time_light; analogWrite(bl,backlight); } if(button2==0){ s=0; m=m+1; bl_TO=Time_light; analogWrite(bl,backlight); } /* ---- manage seconds, minutes, hours am/pm overflow ----*/ if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==25) { h=1; flag=flag+1; if(flag==7)flag=0; } if((button1==0)|(button2==0))// Update display if time set button pressed { // Update LCD Display // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor(0,0); lcd.print("Time "); if(h<10)lcd.print("0");// always 2 digits lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s); if(flag==0) lcd.print(" Ma"); if(flag==1) lcd.print(" Ti"); if(flag==2) lcd.print(" Ke"); if(flag==3) lcd.print(" To"); if(flag==4) lcd.print(" Pe"); if(flag==5) lcd.print(" LA"); if(flag==6) lcd.print(" Su"); lcd.setCursor(0,1);// for Line 2 lcd.print("Tarkka PTT Kello"); } } // end if else }// end for // outer 1000ms loop s=s+1; //increment sec. counting // ---- manage seconds, minutes, hours am/pm overflow ---- if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==25) { h=1; flag=flag+1; if(flag==7)flag=0; } // Loop end }

Anonymous user

2 years ago

What should it be instead of the smiley face?

umairshaheen7

4 years ago

nice project, i like it!!

Anonymous user

4 years ago

Great Project ! I Love It

vicoptimus

4 years ago

It is a very nice project!

Anonymous user

4 years ago

Thanks for the circuit and the code. It works well, except for the fact that the minute push button does not work.

brandonsykes3007

4 years ago

For some reason the code cannot be validated and it says "redefiniton of 'LiquidCrystal lcd'" it appears that the redefiniton is in code1.txt on row 12. If you could help me find out what is wrong that eould be great.

Anonymous user

5 years ago

Hello plouc68000, you proyect is awesome! The best clock without RTC that I have found, I modified a little bit the code for my 20x4 LCD with I2C, the unique problem I have found is that the backlight blink every second pass in the clock, I think it happens cause I have the I2C conected to the LCD, and it doesn't have conect the pin 9(PWM) on the Arduino, that controls the backlight. I don't know how to fix it. Do you know how to fix the backlight to control it with I2C? Or anyone who knows? Respects

Peterthinks

5 years ago

I really like your project sir. I did get it to work in tinkercad without the pwm backlight. I just used the default assembled circuit for tinkercad with the backlight pot and changed the pins in your code a bit. I would be building it right now if I had the right display. Currently working on using an spi interface display but there is no spi display in tinkercad. I would prefer to get it running in a simulator before risking my hardware. Anyway... rambling. Very nice project. I like that you got rid of the external resistors and used internal pullups too. Very smart.

Anonymous user

5 years ago

I made it with my LCD screen, but I could barely read it. I tried to change the code, but I don't know much about it. Thanks!

Anonymous user

2 years ago

how to copy paste

Anonymous user

5 years ago

Well, my mistake. I had added resistors to the pushbuttons. When I took them out and just connected pushbuttons to ground, both pushbuttons worked as they should. Now I have to think why that is the case.

Anonymous user

5 years ago

Works well, fun project. I used a resistor with the push buttons (not shown in the posted circuit diagram). I find that only one of the push buttons has any effect: The one connected to Tx advances the minutes. The one connected to Rx does nothing. I am using Nano instead of Uno but wouldn't think that is the reason. Any thoughts?

Jop_148

5 years ago

i followed all your instrustions but when i pressed the hour button or minute button but only the screen turns on. can you please help me

Anonymous user

5 years ago

nice project! I am tinkering with it (different display, I2C, have to adapt all the brightness stuff, and am adding a switch function, to start lights on after 1500 hrs untill 2300 hrs, may be later also an LDR to indicate day/nite. I notice however that the clock runs on after 23:59:59! There seems to be no overflow of hrs, and change back to "AM"?

plouc68000

2 years ago

Please check the rules for AM/PM change https://www.timeanddate.com/time/am-and-pm.html

Anonymous user

5 years ago

The clock still remain PM after 11:59:59 PM. Please help

plouc68000

2 years ago

Please check again, the change to AM is at 12:59:59, next second gives then 1:00:00 AM Here the rules : To convert am or pm time to the 24-hour format, use these rules: From midnight to 12:59 am, subtract 12 hours. 12:49 am = 0:49 (12:49 – 12) From 1 am to noon, do nothing. 11:49 am = 11:49 From 12:01 pm to 12:59 pm, do nothing. 12:49 pm = 12:49 From 1:00 pm to midnight, add 12 hours. 1:49 pm = 13:49 (1:49 + 12) Here's how to convert time on a 24-hour clock to the 12-hour system: From 0:00 (midnight) to 0:59, add 12 hours and use am. 0:49 = 12:49 am (0:49 + 12) From 1:00 to 11:59, just add am after the time. 11:49 = 11:49 am From 12:00 to 12:59, just add pm after the time. 12:49 = 12:49 pm From 13:00 to 0:00, subtract 12 hours and use pm. 13:49 = 1:49 pm (13:49 - 12) https://www.timeanddate.com/time/am-and-pm.html

mrsneeze

5 years ago

Project works great, thanks! My lcd screen is "flickering" a lot, any ideas on how to fix this? Much appreciated

Anonymous user

2 years ago

Have you checked your connections to make sure that they are all connected properly? If that does not work you may do some research and find out if anyone else is having that problem. If that does not fix it, you may want to contact the company.

mcottton

2 years ago

I removed the intolerable flicker by adjusting the contrast line 28. Originally, the contrast was set at 100. I reduced it to 1 with good results. const int contrast = 1;// default contrast was 100 Next I added a potentiometer in series with D9 so that I could adjust the contrast on the LCD making it more visible. Potentiometer connected to ground and D9 with the wiper connected to VE on the display. VE is where D9 was originally connected. This is a very nice well documented code that actually works well. Thank you

Anonymous user

5 years ago

Great project, everything works great!!! :)

Krosa97

5 years ago

i love the simplicity of this clock took no more than 15 min to set it up. i wanted to ask how can you make it to where the lcd stays on all the time? i am not the best at coding and i found where you have the back light time out but i didn't understand how to make it to where the back light does not time out. any help with this will be awesome.

plouc68000

2 years ago

just comment out line 109 like below //analogWrite(bl,0);// Backlight OFF original analogWrite(bl,0);// Backlight OFF

Anonymous user

6 years ago

help! my display board is on but not dong anything. Any way to make it show numbers?

Anonymous user

6 years ago

Thanks, it works great. Why doesn't it work when resistors are used other than the pull-down resistors? Regards

Anonymous user

6 years ago

Nice use of of built in Arduino resources. The board is so rich in capabilities. Your use of BITWISE OR "|" in the script is a bit advance for the target audience. It needs a "teaching moment" comment. Thanks for stretching my Arduino knowledge!

Anonymous user

6 years ago

Hello, How to change 12hr format to 24hr , tell me how to, and please post your code.

Anonymous user

2 years ago

The time 24:00 is not valid in the 24 hour clock. You should set the hours back to zero when they reach 24 to give 00:00

Anonymous user

2 years ago

I made it so it's a 24 hr clock. Just change line 143 to if(h==25) and line 194 to if(h==25) that makes it to if its 24 hr, 59 m, 59 s and goes one more second it goes to 1:00

Anonymous user

6 years ago

Hi, I am very new to Arduino my uncle has gave me a quick introduction about connecting wires to breadboards but he has not told me what to do when there is a schematic. Please help me as I don't understand the schematic at all.

Anonymous user

6 years ago

Hi. Thank you for sharing this project. I am new to Arduino (but not to programming), so projects like this is very good for learning. But I am thinking: Why have a delay in the first place? It wont make a big difference (except for button response) in this project, but lets think that you would make a precission clock, for timing a sportevent or you would put more stuff in the loop, so it takes longer to run. Here is an idea. static uint32_t last_time, now = 0; // RTC int increment_time = 1000; setup { // now=millis(); // read RTC initial value (dont need this) } loop { now=millis(); if (now-last_time > increment_time) { Put everything here that has to set the new time and updating the display last_time=last_time+increment_time; } Everything else is put here. The button response will be very good and there will be no delay, because it always increments with 1000. You wont need the for i<5 loop. } There will be just one loop. No inner and outer loop. If you want to time 1/10 or 1/100 of a second just change: increment_time to 100 (or 10). Dont know if you think its a good idea, but its worth a try.

Anonymous user

6 years ago

would you be able to send that code to me

plouc68000

2 years ago

in the section CODE Press the "Download Sketch" Button to download it ( next to the OPEN CODE Button ).

atilka25

6 years ago

thank szuper project works

Anonymous user

6 years ago

When I finished making this, everything did happen properly except for one thing. The time didn't display. I know in the video you said that it is synchronized with your watch. How do you do that? Please help.

plouc68000

2 years ago

This is a simple Quartz Clock, you have to Set manually the exact Time by the Pusbuttons Hours and Minutes. This can be done down to 1 Second Precision while a stroke on the Minutes Pusbutton increases the Minutes by 1 and also resetting the seconds. So when my Casio Watch displays for exemple 04:15:59, I press shortly the Minutes Pusbutton and the Arduino Clock goes to 04:16:00 when the Display was previously 04:15:20. After this the Clock is perfectly synchonised with my Casio and I can observe the drift after 1 hour, 1 day, etc....The Time is kept as precise as the 16 MHz Crystal of the Arduino UNO is, so you won't usually see a drift even after 24h of operation.

Anonymous user

6 years ago

I tried making this and my LCD screen has different ports than yours: it has 16 ports, in this order: GND, VDD, V0, RS, RW, E, DB0-DB7, BL1, BL2. I don't have an A port or a K... do some of my ports go by other names?

plouc68000

2 years ago

I guess its a similar 2 Line 16 Character LCD. BL1, BL2 must be Backlight1, Backlight2 instead of A, K ( A was for Anode, LED+, K for Kathode, LED- ) Check on Google for the Datasheet of your LCD For mine LCD 1602, look into the Datasheet Page 5 for the PIN numbers https://cdn-shop.adafruit.com/datasheets/TC1602A-01T.pdf Vss 1 Vdd 2 VO 3 RS 4 R/W 5 E 6 DB0...DB7 7...14 LED+ or A 15 LED- or K 16

Anonymous user

6 years ago

I tried making this circuit in tinker cad and I kept getting an error that the current through the back light was too high. I was wondering if you could make a picture of the schematic not hand drawn because it is hard to visualize.

plouc68000

2 years ago

The back light is connected to the PWM output, and the PWM duty cycle is set by the Sketch so that the average Current don't exceed 7mA. So you can ignore that error. Give me a bit time, I may draw it in Fritzing....(:-), but the circuit is so simple, difficult to understand what could go wrong....

Anonymous user

2 years ago

i also tried this circuit into thinkercad but same thing happens the lcd 16*4 backlight current was too high, no output on Display ...!

milespeterson101

2 years ago

Can I make it so the backlight doesn't time out?