Эксперимент 33. Термометр

Теперь, наконец добавим вывод результатов изменения температуры на дисплей.

Схема эксперимента

Рисунок 1. Электрическая принципиальная схема эксперимента

Добавляем подключения дисплея

Рисунок 2. Монтажная схема эксперимента

Программный код эксперимента

Exp33.ino
  1. #include <LCDI2C_Multilingual.h>
  2.  
  3. #define ACD_PIN A0
  4. #define DEFAULT_I2C_ADDR 0x3F // Или 0x27 в зависимости от твоей платы IoT
  5.  
  6. const int Bcoef = 3950;
  7. const int R1 = 10000;
  8. const int Rtnom = 10000;
  9. const float T0 = 273.15;
  10.  
  11. int value = 0;
  12. float R2 = 0.0;
  13. float temp = 0.0;
  14.  
  15. LCDI2C_Generic lcd(DEFAULT_I2C_ADDR, 16, 2);
  16.  
  17. void setup() {
  18. lcd.init();
  19. lcd.setBacklight(0);
  20. }
  21.  
  22. void loop() {
  23. value = analogRead(ACD_PIN);
  24.  
  25. R2 = (-R1 * value) / (value - 1023);
  26.  
  27. temp = 1 / (log(R2 / Rtnom) / Bcoef + 1/(25 + T0)) - T0;
  28.  
  29. lcd.clear();
  30. lcd.print("T=");
  31. lcd.print(temp, 1);
  32. delay(1000);
  33. }

К предыдущей программе добавили то, что требуется для работы с дисплеем. Подключение библиотеки дисплея, настройка дисплея и включение подсветки.

Перед выводом информации очищаем дисплей от старых данных. При этом курсор дисплея устанавливается в левый верхний угол.

  1. lcd.clear()

Печатаем на дисплей «T=»:

  1. lcd.print("T=");

Далее выводим на дисплей температуру округляя ее до десятых (один знак после точки). За количество цифр после запятой отвечает второй аргумент функции lcd.print().

  1. lcd.print(temp, 1);

Устанавливаем частоту обновления температуры на дисплее с помощью задержки — раз в полсекунды.

  1. delay(500);

Дополнительное задание

1. Измени программу, чтобы она выводила температуру с точностью до сотых.

2. Добавь символ градуса после показаний температуры. Символ градуса создай самостоятельно.