Beispiel #1
0
void lcd_temp_sensor(uint8_t t) {
	hd44780_outstrn_P(SPACE_S);
	if (( temp_sensors[t].flags & TEMP_SENSOR_ROLE_MASK) != TEMP_SENSOR_ROLE_INACTIVE) {
		if(!((temp_sensors[t].flags)&_BV(TEMP_SENSOR_STATUS_OK))) {
			hd44780_outdata(LCD_CHAR_FAILURE);
		} else if (temp_sensors[t].flags & (_BV(TEMP_ALARM_MIN)|_BV(TEMP_ALARM_MAX))) {
			hd44780_outstrn_P(EXCLEMATION_S);
		} else {
			hd44780_outstrn_P(SPACE_S);
		}
		display_temp_value(temp_sensors[t].temp);

		if((temp_sensors[t].flags)&_BV(TEMP_SENSOR_HEATING)) {
			hd44780_outdata(LCD_CHAR_HEATING);
		} else if ((temp_sensors[t].flags)&_BV(TEMP_SENSOR_COOLING)) {
			hd44780_outdata(LCD_CHAR_COOLING);
		} else {
			hd44780_outstrn_P(SPACE_S);
		}
	} else {
		hd44780_outstrn_P(INTEMPSENS_S);
		hd44780_outdata(LCD_CHAR_DEGREE);
		hd44780_outstrn_P(SPACE_S);
	}
}
Beispiel #2
0
/*
 * Send character c to the LCD display.  After a '\n' has been seen,
 * the next character will first clear the display.
 */
int
lcd_putchar(char c, FILE *unused)
{
  static bool nl_seen;

  if (nl_seen && c != '\n')
    {
      /*
       * First character after newline, clear display and home cursor.
       */
      hd44780_wait_ready();
      hd44780_outcmd(HD44780_CLR);
      hd44780_wait_ready();
      hd44780_outcmd(HD44780_HOME);
      hd44780_wait_ready();
      hd44780_outcmd(HD44780_DDADDR(0));

      nl_seen = false;
    }
  if (c == '\n')
    {
      nl_seen = true;
    }
  else
    {
      hd44780_wait_ready();
      hd44780_outdata(c);
    }

  return 0;
}
Beispiel #3
0
void ui_menu_0(void) {
	PGM_P p;
	hd44780_outdata(menu_menuid() + 0x30);
	memcpy_P(&p, &MENU0_STRS[menu_menuid()], sizeof(PGM_P));
	hd44780_outstrn_P(p);
	menu_next(UP);
	menu_prev(DOWN);
	menu_top(ESC);
	menu_submenu_next(SET);
}
int main()
{
  hd44780_init();
  /*
   * Clear the display.
   */
  hd44780_outcmd(HD44780_CLR);
  hd44780_wait_ready(1);   // long wait

  /*
   * Entry mode: auto-increment address counter, no display shift in effect.
   */
  hd44780_outcmd(HD44780_ENTMODE(1, 0));
  hd44780_wait_ready(0);

  /*
   * Enable display, activate non-blinking cursor.
   */
  hd44780_outcmd(HD44780_DISPCTL(1, 1, 0));
  hd44780_wait_ready(0);

  EICRA = (1 << ISC00);
  EIMSK = (1 << INT0);

  sei();

  while (1) {
    while (!update_needed)
      sleep_mode();
    update_needed = 0;
    char buffer[16];

    hd44780_outcmd(HD44780_CLR);
    hd44780_wait_ready(1);   // long wait
    hd44780_outcmd(HD44780_DDADDR(4));
    hd44780_wait_ready(0);
    sprintf(buffer, "%2d:%02d:%02d", hour, minute, second);

    char *s = buffer;
    while (*s) {
      hd44780_outdata(*s++);
      hd44780_wait_ready(0);
    }
  }
}
Beispiel #5
0
/** Inicjalizacja urządzeń wejścia / wyjścia.
*/
void ioinit(void)
{
	uint8_t i;
	hd44780_init();
	hd44780_outcmd(HD44780_CLR);
	hd44780_wait_ready();
	hd44780_outcmd(HD44780_ENTMODE(1, 0));
	hd44780_wait_ready();
	hd44780_outcmd(HD44780_DISPCTL(1, 1, 1));
	hd44780_wait_ready();
	hd44780_outcmd(HD44780_CGADDR(0));
	for(i=0; i<64; i++) {
		hd44780_outdata(pgm_read_byte(&extraChar[i]));
	}

	TCCR1B = _BV(WGM12) | _BV(CS11);                        // licznik / 8 - wyzerwoanie na porownanie
	TIMSK = _BV(OCIE1A);                                    // przerwanie na porownanie wartosci
	OCR1A = TAU1;                                           // warto licznika porownania

	usart_init(UBRR_VALUE);

	onewire_init();

	twi_init();

	outputs_init();

	top_off_init();

	qbuttons_init();

	ui_init();

	BUZZER_DDR |= _BV(BUZZER_SWITCH);
	buzzer_off();

	wdt_enable(WDTO_2S);
}