278 lines
5.7 KiB
C++
278 lines
5.7 KiB
C++
void show_current_time(long intervall, long currentMillis){
|
|
if(intervall > 16000){
|
|
previousMillis = currentMillis;
|
|
}
|
|
if (intervall > 14000){
|
|
display_date(d,M,y);
|
|
}
|
|
/*else if (intervall > 12000){
|
|
display_year(d,M,y);
|
|
}
|
|
else if (intervall > 10000){
|
|
display_text(dow);
|
|
}
|
|
else if (intervall > 9000){
|
|
display_text(readDHT());
|
|
}
|
|
else if (intervall > 8000){
|
|
display_text("Temp");
|
|
}*/
|
|
else{
|
|
display_time(h,m,s);
|
|
}
|
|
}
|
|
|
|
void show_time_infos(long intervall, long currentMillis){
|
|
if(setItem == 1 || setItem == 2){
|
|
display_date(d,M,y);
|
|
}
|
|
else if(setItem == 2){
|
|
display_date(d,M,y);
|
|
}
|
|
else if(setItem == 3){
|
|
display_year(d,M,y);
|
|
}
|
|
else if(setItem == 4 || setItem == 5 || setItem == 6){
|
|
display_time(h,m,s);
|
|
}
|
|
else if(setItem == 11 || setItem == 12){
|
|
display_time(al1h,al1m,0);
|
|
}
|
|
else if(setItem == 13 || setItem == 14){
|
|
display_time(al2h,al2m,0);
|
|
}
|
|
}
|
|
|
|
|
|
//####################################################################################################
|
|
//Setup
|
|
void switch_set_item(){
|
|
setItem = setItem + 1;
|
|
if(setItem > 6)
|
|
{
|
|
set_clock();
|
|
setItem = 0;
|
|
display_text("OK", "Zeit gespeichert");
|
|
delay_gui(1000);
|
|
}
|
|
}
|
|
|
|
void set_time(){
|
|
if(setItem == 1){
|
|
add_day(1);
|
|
}
|
|
else if(setItem == 2){
|
|
add_month(1);
|
|
}
|
|
else if(setItem == 3){
|
|
add_year(1);
|
|
}
|
|
else if(setItem == 4){
|
|
add_hour(1);
|
|
}
|
|
else if(setItem == 5){
|
|
add_minute(1);
|
|
}
|
|
else if(setItem == 6){
|
|
add_second(1);
|
|
}
|
|
else if(setItem == 11){
|
|
add_al1_hour(1);
|
|
}
|
|
else if(setItem == 12){
|
|
add_al1_minute(1);
|
|
}
|
|
else if(setItem == 13){
|
|
add_al2_hour(1);
|
|
}
|
|
else if(setItem == 14){
|
|
add_al2_minute(1);
|
|
}
|
|
}
|
|
|
|
//###################################################################################################################################
|
|
//Time Code
|
|
void update_Time(){
|
|
DateTime now = RTC.now();
|
|
h = now.hour(); //24-hr
|
|
m = now.minute();
|
|
s = now.second();
|
|
|
|
d = now.day();
|
|
M = now.month();
|
|
y = now.year();
|
|
|
|
if (summertime_EU(y,M,d,h,1))
|
|
{
|
|
h = h + 1;
|
|
if (h == 24){
|
|
h = 0;
|
|
}
|
|
}
|
|
|
|
dow = daysOfTheWeek[Clock.getDoW()];
|
|
//write_log(String(h) + ":" + String(m) + ":" + String(s) + " - " + String(d) + "." + String(M) + "." + String(y) + " | DST: " + String(summertime_EU(y,M,d,h,1)));
|
|
}
|
|
|
|
//###################################################################################################################################
|
|
//Display Code
|
|
void display_year(int Day, int Month, int Year){
|
|
display_text("Jahr", String(Year));
|
|
}
|
|
|
|
void display_time(int Stunde, int Minute, int Sekunde){
|
|
String Min = String(Minute);
|
|
String Stu = String(Stunde);
|
|
String Sek = String(Sekunde);
|
|
if (Minute < 10)
|
|
{
|
|
Min = "0" + Min;
|
|
}
|
|
if (Sekunde < 10)
|
|
{
|
|
Sek = "0" + Sek;
|
|
}
|
|
if (Stunde < 10)
|
|
{
|
|
Stu = "0" + Stu;
|
|
}
|
|
if(setItem == 4)
|
|
{
|
|
display_text("Stunde:", Stu);
|
|
}
|
|
else if(setItem == 5)
|
|
{
|
|
display_text("Minute:", Min);
|
|
}
|
|
else if(setItem == 6)
|
|
{
|
|
display_text("Sekunde:", String(Sekunde));
|
|
}
|
|
else if(setItem == 11)
|
|
{
|
|
display_text("Alarm 1", "Stunde: "+ Stu);
|
|
}
|
|
else if(setItem == 12)
|
|
{
|
|
display_text("Alarm 1", "Minute: " + Min);
|
|
}
|
|
else if(setItem == 13)
|
|
{
|
|
display_text("Alarm 2", "Stunde: " + Stu);
|
|
}
|
|
else if(setItem == 14)
|
|
{
|
|
display_text("Alarm 2", "Minute: " + Min);
|
|
}
|
|
/*else if (Sekunde % 2 == 0){
|
|
display_text(Stu + ":" + Min, get_alarm_string());
|
|
}*/
|
|
else{
|
|
display_text(Stu + ":" + Min + ":" + Sek, get_alarm_string());
|
|
}
|
|
}
|
|
|
|
void display_date(int Day, int Month, int Year){
|
|
String Mon = String(Month);
|
|
String Da = String(Day);
|
|
if (Day < 10)
|
|
{
|
|
Da = "0" + Da;
|
|
}
|
|
if (Month < 10)
|
|
{
|
|
Mon = "0" + Mon;
|
|
}
|
|
if(setItem == 1)
|
|
{
|
|
display_text("Tag:",Da);
|
|
}
|
|
else if(setItem == 2)
|
|
{
|
|
display_text("Monat:",Mon);
|
|
}
|
|
else{
|
|
display_text(Da + "." + Mon + "." + Year, get_alarm_string());
|
|
}
|
|
}
|
|
|
|
//########################################################################################################
|
|
//Helpers
|
|
|
|
void add_second(int i){
|
|
s = s + i;
|
|
if (s > 59)
|
|
{
|
|
s = s - 60;
|
|
}
|
|
}
|
|
|
|
void add_hour(int i){
|
|
h = h + i;
|
|
if (h > 23){
|
|
h = 0;
|
|
}
|
|
}
|
|
|
|
void add_minute(int i){
|
|
m = m + i;
|
|
if (m > 59){
|
|
m = m - 60;
|
|
}
|
|
}
|
|
|
|
void add_month(int i){
|
|
M = M + i;
|
|
if (M > 12){
|
|
M = 1;
|
|
}
|
|
}
|
|
|
|
void add_day(int i){
|
|
d = d + i;
|
|
if (d > 31){
|
|
d = 1;
|
|
}
|
|
}
|
|
|
|
void add_year(int i){
|
|
y = y + i;
|
|
if (y > 2030){
|
|
y = 2017;
|
|
}
|
|
}
|
|
|
|
void set_clock(){
|
|
Clock.setClockMode(false); // set to 24h
|
|
//setClockMode(true); // set to 12h
|
|
|
|
Clock.setYear(y-2000);
|
|
Clock.setMonth(M);
|
|
Clock.setDate(d);
|
|
//Clock.setDoW(DoW);
|
|
if (summertime_EU(y,M,d,h,1))
|
|
{
|
|
Clock.setHour(h-1);
|
|
}
|
|
else{
|
|
Clock.setHour(h);
|
|
}
|
|
Clock.setMinute(m);
|
|
Clock.setSecond(s);
|
|
|
|
}
|
|
|
|
|
|
boolean summertime_EU(int year, byte month, byte day, byte hour, byte tzHours)
|
|
// European Daylight Savings Time calculation by "jurs" for German Arduino Forum
|
|
// input parameters: "normal time" for year, month, day, hour and tzHours (0=UTC, 1=MEZ)
|
|
// return value: returns true during Daylight Saving Time, false otherwise
|
|
{
|
|
if (month<3 || month>10) return false; // keine Sommerzeit in Jan, Feb, Nov, Dez
|
|
if (month>3 && month<10) return true; // Sommerzeit in Apr, Mai, Jun, Jul, Aug, Sep
|
|
if (month==3 && (hour + 24 * day)>=(1 + tzHours + 24*(31 - (5 * year /4 + 4) % 7)) || month==10 && (hour + 24 * day)<(1 + tzHours + 24*(31 - (5 * year /4 + 1) % 7)))
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|