void check_for_keypresses(){ if (debounce_just_pressed(hours_debounce,hours_switch_raw)){ inc_hours(); inc_metric_sw_hours(); } else if (debounce_held_down(hours_debounce,hours_switch_raw)) { silly_hour_display = !silly_hour_display; eeprom_write_uint32(silly_hour_display,EEPROM_ADDR_SILLY_HOUR_DISPLAY); trigger_save_eeprom(); // Be user friendly and undo the initial increment. dec_hours(); } if (debounce_just_pressed(mins_debounce,mins_switch_raw)){ inc_mins(); inc_metric_sw_mins(); } if (debounce_just_pressed(secs_debounce,secs_switch_raw)){ clear_secs(); inc_metric_sw_secs(); } debounce_add_sample(hours_debounce,hours_switch_raw); debounce_add_sample(mins_debounce,mins_switch_raw); debounce_add_sample(secs_debounce,secs_switch_raw); }
void speedo_clock::set_date_time(uint8_t year,uint8_t mon,uint8_t day,uint8_t hh,uint8_t mm,uint8_t ss, bool check_winter){ #ifdef CLOCK_DEBUG // das schon brutal nervige 1hz meldung Serial.println("Setting Clock:"); char char_buffer[60]; sprintf(char_buffer,"%i,%i,%i,%i,%i,%i",year%100,mon%100,day%100,hh%100,mm%100,ss%100); Serial.println(char_buffer); #endif // accept only if min 10 sec difference int16_t internal_clock_timestamp=(m_mm*60)+m_ss; int16_t setter_clock_timestamp=(mm*60)+ss; if( (internal_clock_timestamp-setter_clock_timestamp)>10 || (internal_clock_timestamp-setter_clock_timestamp)<-10 ){ m_ss=ss; }; // accept anything else if(mm<60) { m_mm=mm; }; if(hh<24) { m_hh=hh; }; if(day<32){ m_day=day; }; if(mon<13){ m_mon=mon; }; if(year>0){ m_year=year; }; // calculate the daylight_saving with raw_data if(check_winter){ if(!is_winter_time(m_year,m_mon,m_day,m_hh,m_mm,m_ss)){ // is wintertime? wintertime=false; } }; // add gmt and daylight_saving time inc_hours(); };