If I asked you: could you please turn off the lights when it comes to 10:30?
Actually, the common answer would be check your smartphone and make a reminder on your phone to turn the lights off by 10:30.
Well, that's ok for any normal person, but not for a maker, who would certainly think of automating this process by making some cool stuff which can get time automatically and take certain actions when 10:30 comes!
So, this your 10-minute tutorial to learn how to get time automatically, monitoring it and can make any decisions based on it as far as we want.
Let’s talk about the idea behind the Arduino Digital Clock project...
We are going to get time from the smartphone automatically and wirelessly by using 1Sheeld with it's Android/iOS App with Arduino board.
The idea behind the Arduino Digital Clock is to use the clock shield from the App and connect the App to the 1Sheeld via Bluetooth so the App on our smartphone will automatically send the current date+time to the 1Sheeld board which is connected to the Arduino.
So we can print the current time (hours + minutes + seconds) on an LCD 16*2 and once time changed whether a second passed, a minute passed or an hour passed the time on the LCD will be changed automatically... with this simple :)
If this is your first time to deal with 1Sheeld or you want to learn more about it, I recommend checking this quick and easy getting started tutorial.
And if you haven't tried LCD 16*2 before, I recommend checking this quick video.
Now, after you've become a little bit familiar with 1Sheeld, let's start!
- Plug the 1Sheeld board into your Arduino as this:
- Connect the LCD 16*2 as illustrated below:
- Switch the 1Sheeld power to operate on 5v (Not the 3.3v):
- 1Sheeld have 2 modes: Uploading mode and Operating mode. You can switch between them using the switch close to the Digital pins and is called “UART SWITCH” on 1Sheeld and “SERIAL SWITCH” on 1Sheeld+.
Firstly, you slide the switch towards the “SWITCH” notation which turns the 1Sheeld board into the Uploading mode to let you upload the Arduino code.
Secondly, after you finish uploading the code, slide the switch towards the “UART” notation (or “SERIAL” at 1Sheeld+ board) which turns the 1Sheeld board into the Operating mode to communicate with your smartphone 1Sheeld App.
- Connect the Arduino via your PC using Arduino USB cable.
I would recommend checking the Arduino Clock Shield documentation to know more about the Arduino Clock Shield functionality and how to use them.
Now, switch the 1Sheeld board to the Uploading mode, upload the attached code for the Arduino Digital Clock:
Switch the 1Sheeld board to the Operating mode then open the 1Sheeld app and connect it to the 1Sheeld board via Bluetooth.
Finally, select the Arduino clock shield from the shields list.
You will notice that the LCD is showing only zeros and this is normal because you have to press the Arduino reset button to make the 1Sheeld re-initiate the request of time from the App.
What happened after uploading the code is that any code inside the void setup() part (where the time request is sent) is executed fast (even faster than the time you took to switch to the operating mode) and then the Arduino lies inside the void loop() part forever.
So, briefly, the Arduino sent the time request quickly then you switched to the operation mode where the communication between the 1Sheeld and the App started and missed the time request.
So, by resetting the Arduino after the 1Sheeld is in operating mode, it goes inside the void setup() part again and sends the time request again and now the request reached the App and the time is updated on the LCD!
Now you are done with the Arduino Digital Clock and you can add your own extra code lines to check whether the hours, minutes and seconds reached a certain value and then take any decision like switching lights connected to a relay or even open the fan for you to cool weather just at the time you return home :)
Hope you enjoyed this Arduino Digital CLock project! If you have any question, please don’t hesitate to leave it in the comments down below and stay tuned for more 10-minute Tutorials ;)