Пример #1
0
void print_sensor_ids(void){
	uint8_t i;
	
	wh1602b_move(0,0);
	for (i = 0; i < 8; ++i)
	wh1602b_puth(2, eeSensorIDs[0][i]);
	wh1602b_move(1,0);
	for (i = 0; i < 8; ++i)
	wh1602b_puth(2, eeSensorIDs[1][i]);
}
Пример #2
0
int main(void)
{
  wh1602b_init(); // инициализировать модуль, порты
  // настроить параметры управления дисплеем
  wh1602b_displayctl(DC_DISPLAY_ON); // дисплей включён
  // задать число строк
  wh1602b_funcset(FS_LINES_2); // 2 строки
  // очистить область
  wh1602b_clear();
  // записать символ градуса ассоциировав его с кодом 1
  wh1602b_genc(1, degree_char);
  wh1602b_home();
  // выбрать текущий датчик
  if (!ds18b20_selectSensor(devid)) {
    wh1602b_putsP(PSTR("Ошибка на линии!"));
    for (;;)
      ;
  }
  sspad d;
  if (!ds18b20_readScratchpad(&d)) {
    wh1602b_putsP(PSTR("Ошибка CRC!"));
    for (;;)
      ;
  }
  if (d.config != RES_11BIT) {
    d.config = RES_11BIT;
    ds18b20_writeScratchpad(&d);
    ds18b20_copyScratchpad();
    wh1602b_move(1,0);
    wh1602b_putsP(PSTR("Уст:11б. "));
  }
  else {
    wh1602b_move(1,0);
    wh1602b_putsP(PSTR("Исп:11б. "));
  }
  if (ds18b20_readPowerSupply())
    wh1602b_putsP(PSTR("Внешнее"));
  else
    wh1602b_putsP(PSTR("Паразит"));

  // войти в бесконечный цикл
  for (;;)
    loop();
}
Пример #3
0
void loop()
{
  // попросить у датчика измерить температуру
  ds18b20_convert();  // время измерения ~750ms
  wh1602b_move(0,0);
  wh1602b_putsP(PSTR("t="));
  int16_t t = ds18b20_readTemp(); // прочитать значение
  if (t < 0)
    wh1602b_putc('-');
  wh1602b_puth(1, ds18b20_extractInt(t)); // вывести целую часть
  wh1602b_putc('.');
  wh1602b_puth(1, ds18b20_extractFract(t, 1)); // вывести дробную часть
  wh1602b_putsP(PSTR("\1C"));
}