/**
Arduino Calculator
Copyright (C) 2020, Uri Shaked.
Released under the MIT License.
*/
#include <LiquidCrystal.h>
#include <MsTimer2.h>
/* Display */
const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
/* Buttons */
const int hourButton = 8;
const int minuteButton = 9;
const int secondButton = 10;
const int zeroButton = 11;
int Sec = 57, Min = 01, Hour = 16;
void timer0() {
Sec++;
if (60 <= Sec) {
Sec = 0;
Min++;
}
if (60 <= Min) {
Min = 0;
Hour++;
}
if (24 <= Hour) {
Hour = 0;
}
}
void setup() {
pinMode(hourButton, INPUT_PULLUP);
pinMode(minuteButton, INPUT_PULLUP);
pinMode(secondButton, INPUT_PULLUP);
pinMode(zeroButton, INPUT_PULLUP);
MsTimer2::set(1000, timer0);
MsTimer2::start();
lcd.begin(16, 2);
lcd.clear();
}
void Click(){
if (LOW==digitalRead(hourButton)) {
delay(20);
if(LOW==digitalRead(hourButton)){
Hour++;
}
while(LOW==digitalRead(hourButton)){;};
}
if (LOW==digitalRead(minuteButton)) {
delay(20);
if (LOW==digitalRead(minuteButton)) {
Min++;
}
while(LOW==digitalRead(minuteButton)){;};
}
if (LOW==digitalRead(secondButton)) {
delay(20);
if (LOW==digitalRead(secondButton)) {
Sec++;
}
while(LOW==digitalRead(secondButton)){;};
}
if (LOW==digitalRead(zeroButton)) {
delay(20);
if (LOW==digitalRead(zeroButton)) {
Hour=0;
Min=0;
Sec=0;
}
while(LOW==digitalRead(zeroButton)){;};
}
}
void Write(){
lcd.setCursor(0, 0);
lcd.print("GongZheng,202322");
lcd.setCursor(0, 1);
lcd.print("41436: ");
}
void Show(){
char timeStr[9];
sprintf(timeStr, "%02d:%02d:%02d", Hour, Min, Sec);
lcd.print(timeStr);
}
void loop() {
Write();
Click();
Show();
}