uint8_t time[8];
char recv[BUFF_MAX];
unsigned int recv_size = 0;
unsigned long prev, interval = 1000;*/
char *text;
unsigned char second, second10, minute, minute10, hour, hour10,
day, date, date10, month, month10, year, year10,
i = 0;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup() {
lcd.begin(16, 2);
Wire.begin();
pinMode(8, INPUT_PULLUP); // Button 1
pinMode(9, INPUTPULLUP); // Button 2
}
// Display data
void display(){
second10 = (second & 0x70) >> 4;
second = second & 0x0F;
minute10 = (minute & 0x70) >> 4;
minute = minute & 0x0F;
hour10 = (hour & 0x30) >> 4;
hour = hour & 0x0F;
day = day & 0x07;
date10 = (date & 0x30) >> 4;
date = date & 0x0F;
month10 = (month & 0x10) >> 4;
month = month & 0x0F;
year10 = (year & 0xF0) >> 4;
year = year & 0x0F;
switch(day){
case 1: text = "Pon"; break;
case 2: text = "Uto"; break;
case 3: text = "Str"; break;
case 4: text = "Stv"; break;
case 5: text = "Pia"; break;
case 6: text = "Sob"; break;
case 7: text = "Ned"; break;}
lcd.setCursor(0, 0); lcd.print(text);
lcd.setCursor(6, 0); lcd.print(date);
lcd.setCursor(5, 0); lcd.print(date10);
lcd.setCursor(9, 0); lcd.print(month);
lcd.setCursor(8, 0); lcd.print(month10);
lcd.setCursor(14, 0); lcd.print(year);
lcd.setCursor(13, 0); lcd.print(year10);
lcd.setCursor(13, 1); lcd.print(second);
lcd.setCursor(12, 1); lcd.print(second10);
lcd.setCursor(10, 1); lcd.print(minute);
lcd.setCursor(9, 1); lcd.print(minute10);
lcd.setCursor(7, 1); lcd.print(hour);
lcd.setCursor(6, 1); lcd.print(hour10);
}
// End display data
// Write data
void writevalue(char address, char data){
Wire.beginTransmission(0x68);
Wire.write(address);
Wire.write(data_);
Wire.endTransmission();}
// End write data
void loop() {
/* char in;
char tempF[6];
float temperature;
char buff[BUFF_MAX];
unsigned long now = millis();
struct ts t;
temperature = DS3231_get_treg(); //Get temperature
dtostrf(temperature, 5, 1, tempF); */
// show time once in a while
//show temperature
//if ((now - prev > interval) && (Serial.available() <= 0)) {
//temperature = DS3231_get_treg(); //Get temperature
//dtostrf(temperature, 5, 1, tempF);
//Main loop
writevalue( 7 , 0x10); //Set SQWE frequency at 1Hz
return:
lcd.clear();
lcd.setCursor(7, 0); lcd.print("- -20");
lcd.setCursor(8, 1); lcd.print(": :");
while(1){
if (digitalRead(8) == 0)
i++;
if (i == 1){
write_value( 0 , 0x80);//Stop oscillator and reset seconds
lcd.clear();
lcd.setCursor(4, 0); lcd.print("Minuty:");
minute = minute + minute10 * 10;
delay(500);
while(1){
if (digitalRead(8) == 0){ delay(500);
i++;}
if(i != 1){
minute = ((minute/10) << 4) + (minute % 10);
writevalue( 1 , minute);
goto return;}
if (digitalRead(9) == 0) minute++; delay(200);
if (minute > 59) minute = 0;
lcd.setCursor(7, 1); lcd.print(minute / 10);
lcd.setCursor(8, 1); lcd.print(minute % 10);}}
if (i == 2){
lcd.clear();
lcd.setCursor(5, 0); lcd.print("Hodiny:");
hour = hour + hour10 * 10;
delay(500);
while(1){
if (digitalRead(8) == 0){ delay(500);
i++; }
if(i != 2){
hour = ((hour/10) << 4) + (hour % 10);
writevalue( 2 , hour);
goto return;}
if (digitalRead(9) == 0) hour++; delay(200);
if (hour > 23) hour = 0;
lcd.setCursor(7, 1); lcd.print(hour / 10);
lcd.setCursor(8, 1); lcd.print(hour % 10);}}
if (i == 3){
lcd.clear();
lcd.setCursor(6, 0); lcd.print("Den:");
delay(500);
while(1){
if (digitalRead(8) == 0){delay(500);
i++ ; }
if(i != 3){
writevalue( 3 , day);
goto return;}
if (digitalRead(9) == 0) day++; delay(200);
if (day > 7) day = 1;
switch(day){
case 1: text = "Pondelok "; break;
case 2: text = "Utorok "; break;
case 3: text = "Streda "; break;
case 4: text = "Stvrtok"; break;
case 5: text = "Piatok "; break;
case 6: text = "Sobota "; break;
case 7: text = "Nedela "; break;}
lcd.setCursor(4, 1); lcd.print(text);
}}
if (i == 4){
lcd.clear();
lcd.setCursor(6, 0); lcd.print("Datum:");
date = date + date10 * 10;
delay(500);
while(1){
if (digitalRead(8) == 0){ delay(500);
i++ ; }
if(i != 4){
date = ((date/10) << 4) + (date % 10);
writevalue( 4 , date);
goto return;}
if (digitalRead(9) == 0) date++ ; delay(200);
if (date > 31) date = 1;
lcd.setCursor(7, 1); lcd.print(date/10);
lcd.setCursor(8, 1); lcd.print(date%10);}}
if (i == 5){
lcd.clear();
lcd.setCursor(5, 0); lcd.print("Mesiac:");
month = month + month10 * 10;
delay(500);
while(1){
if (digitalRead(8) == 0){delay(500);
i++ ; }
if(i != 5){
month = ((month/10) << 4) + (month % 10);
writevalue( 5 , month);
goto return;}
if (digitalRead(9) == 0) month++ ; delay(200);
if (month > 12) month = 1;
lcd.setCursor(7, 1); lcd.print(month / 10);
lcd.setCursor(8, 1); lcd.print(month % 10); }}
if (i == 6){
lcd.clear();
lcd.setCursor(6, 0); lcd.print("Rok:");
year = year + year10 * 10;
delay(500);
while(1){
if (digitalRead(8) == 0){delay(500);
i = 0;}
if(i != 6){
year = ((year/10) << 4) + (year % 10);
write_value( 0 , 0); //Start oscillator and reset seconds
writevalue( 6 , year);
goto return;}
if (digitalRead(9) == 0) year++; delay(200);
if (year > 99) year = 0;
lcd.setCursor(6, 1); lcd.print("20");
lcd.setCursor(8, 1); lcd.print(year / 10);
lcd.setCursor(9, 1); lcd.print(year % 10);}}
// Read data
Wire.beginTransmission(0x68);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(0x68, 7);
second = Wire.read();
minute = Wire.read();
hour = Wire.read();
day = Wire.read();
date = Wire.read();
month = Wire.read();
year = Wire.read();
// End read data
display_(); // Display data
include
include
/*#include "ds3231.h"
define BUFF_MAX 128
uint8_t time[8]; char recv[BUFF_MAX]; unsigned int recv_size = 0; unsigned long prev, interval = 1000;*/
char *text; unsigned char second, second10, minute, minute10, hour, hour10, day, date, date10, month, month10, year, year10, i = 0; LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); void setup() { lcd.begin(16, 2); Wire.begin(); pinMode(8, INPUT_PULLUP); // Button 1 pinMode(9, INPUTPULLUP); // Button 2 } // Display data void display(){ second10 = (second & 0x70) >> 4; second = second & 0x0F; minute10 = (minute & 0x70) >> 4; minute = minute & 0x0F; hour10 = (hour & 0x30) >> 4; hour = hour & 0x0F; day = day & 0x07; date10 = (date & 0x30) >> 4; date = date & 0x0F; month10 = (month & 0x10) >> 4; month = month & 0x0F; year10 = (year & 0xF0) >> 4; year = year & 0x0F; switch(day){ case 1: text = "Pon"; break; case 2: text = "Uto"; break; case 3: text = "Str"; break; case 4: text = "Stv"; break; case 5: text = "Pia"; break; case 6: text = "Sob"; break; case 7: text = "Ned"; break;} lcd.setCursor(0, 0); lcd.print(text); lcd.setCursor(6, 0); lcd.print(date); lcd.setCursor(5, 0); lcd.print(date10); lcd.setCursor(9, 0); lcd.print(month); lcd.setCursor(8, 0); lcd.print(month10); lcd.setCursor(14, 0); lcd.print(year); lcd.setCursor(13, 0); lcd.print(year10); lcd.setCursor(13, 1); lcd.print(second); lcd.setCursor(12, 1); lcd.print(second10); lcd.setCursor(10, 1); lcd.print(minute); lcd.setCursor(9, 1); lcd.print(minute10); lcd.setCursor(7, 1); lcd.print(hour); lcd.setCursor(6, 1); lcd.print(hour10);
} // End display data // Write data void writevalue(char address, char data){ Wire.beginTransmission(0x68); Wire.write(address); Wire.write(data_); Wire.endTransmission();} // End write data void loop() {
/* char in; char tempF[6]; float temperature; char buff[BUFF_MAX]; unsigned long now = millis(); struct ts t;
//Main loop writevalue( 7 , 0x10); //Set SQWE frequency at 1Hz return: lcd.clear(); lcd.setCursor(7, 0); lcd.print("- -20"); lcd.setCursor(8, 1); lcd.print(": :"); while(1){ if (digitalRead(8) == 0) i++; if (i == 1){ write_value( 0 , 0x80);//Stop oscillator and reset seconds lcd.clear(); lcd.setCursor(4, 0); lcd.print("Minuty:"); minute = minute + minute10 * 10; delay(500); while(1){ if (digitalRead(8) == 0){ delay(500); i++;} if(i != 1){ minute = ((minute/10) << 4) + (minute % 10); writevalue( 1 , minute); goto return;} if (digitalRead(9) == 0) minute++; delay(200); if (minute > 59) minute = 0; lcd.setCursor(7, 1); lcd.print(minute / 10); lcd.setCursor(8, 1); lcd.print(minute % 10);}} if (i == 2){ lcd.clear(); lcd.setCursor(5, 0); lcd.print("Hodiny:"); hour = hour + hour10 * 10; delay(500); while(1){ if (digitalRead(8) == 0){ delay(500); i++; } if(i != 2){ hour = ((hour/10) << 4) + (hour % 10); writevalue( 2 , hour); goto return;} if (digitalRead(9) == 0) hour++; delay(200); if (hour > 23) hour = 0; lcd.setCursor(7, 1); lcd.print(hour / 10); lcd.setCursor(8, 1); lcd.print(hour % 10);}} if (i == 3){ lcd.clear(); lcd.setCursor(6, 0); lcd.print("Den:"); delay(500); while(1){ if (digitalRead(8) == 0){delay(500); i++ ; } if(i != 3){ writevalue( 3 , day); goto return;} if (digitalRead(9) == 0) day++; delay(200); if (day > 7) day = 1; switch(day){ case 1: text = "Pondelok "; break; case 2: text = "Utorok "; break; case 3: text = "Streda "; break; case 4: text = "Stvrtok"; break; case 5: text = "Piatok "; break; case 6: text = "Sobota "; break; case 7: text = "Nedela "; break;} lcd.setCursor(4, 1); lcd.print(text); }} if (i == 4){ lcd.clear(); lcd.setCursor(6, 0); lcd.print("Datum:"); date = date + date10 * 10; delay(500); while(1){ if (digitalRead(8) == 0){ delay(500); i++ ; } if(i != 4){ date = ((date/10) << 4) + (date % 10); writevalue( 4 , date); goto return;} if (digitalRead(9) == 0) date++ ; delay(200); if (date > 31) date = 1; lcd.setCursor(7, 1); lcd.print(date/10); lcd.setCursor(8, 1); lcd.print(date%10);}} if (i == 5){ lcd.clear(); lcd.setCursor(5, 0); lcd.print("Mesiac:"); month = month + month10 * 10; delay(500); while(1){ if (digitalRead(8) == 0){delay(500); i++ ; } if(i != 5){ month = ((month/10) << 4) + (month % 10); writevalue( 5 , month); goto return;} if (digitalRead(9) == 0) month++ ; delay(200); if (month > 12) month = 1; lcd.setCursor(7, 1); lcd.print(month / 10); lcd.setCursor(8, 1); lcd.print(month % 10); }} if (i == 6){ lcd.clear(); lcd.setCursor(6, 0); lcd.print("Rok:"); year = year + year10 * 10; delay(500); while(1){ if (digitalRead(8) == 0){delay(500); i = 0;} if(i != 6){ year = ((year/10) << 4) + (year % 10); write_value( 0 , 0); //Start oscillator and reset seconds writevalue( 6 , year); goto return;} if (digitalRead(9) == 0) year++; delay(200); if (year > 99) year = 0; lcd.setCursor(6, 1); lcd.print("20"); lcd.setCursor(8, 1); lcd.print(year / 10); lcd.setCursor(9, 1); lcd.print(year % 10);}} // Read data Wire.beginTransmission(0x68); Wire.write(0x00); Wire.endTransmission(); Wire.requestFrom(0x68, 7); second = Wire.read(); minute = Wire.read(); hour = Wire.read(); day = Wire.read(); date = Wire.read(); month = Wire.read(); year = Wire.read(); // End read data display_(); // Display data
} // End of program }