Example #1
0
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);
}
Example #2
0
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();
};