===== Эксперимент 33. Термометр =====
Теперь, наконец добавим вывод результатов изменения температуры на дисплей.
==== Схема эксперимента ====
{{ :products:esp-iot:exp13.1_sch.png?nolink |}}
//Рисунок 1. Электрическая принципиальная схема эксперимента//
Добавляем подключения дисплея
{{ :products:esp-iot:13.3_mon.png?direct&600 |}}
//Рисунок 2. Монтажная схема эксперимента//
==== Программный код эксперимента ====
#include
#define ACD_PIN A0
#define DEFAULT_I2C_ADDR 0x3F // Или 0x27 в зависимости от твоей платы IoT
const int Bcoef = 3950;
const int R1 = 10000;
const int Rtnom = 10000;
const float T0 = 273.15;
int value = 0;
float R2 = 0.0;
float temp = 0.0;
LCDI2C_Generic lcd(DEFAULT_I2C_ADDR, 16, 2);
void setup() {
lcd.init();
lcd.setBacklight(0);
}
void loop() {
value = analogRead(ACD_PIN);
R2 = (-R1 * value) / (value - 1023);
temp = 1 / (log(R2 / Rtnom) / Bcoef + 1/(25 + T0)) - T0;
lcd.clear();
lcd.print("T=");
lcd.print(temp, 1);
delay(1000);
}
К предыдущей программе добавили то, что требуется для работы с дисплеем. Подключение библиотеки дисплея, настройка дисплея и включение подсветки.
Перед выводом информации очищаем дисплей от старых данных. При этом курсор дисплея устанавливается в левый верхний угол.
lcd.clear()
Печатаем на дисплей "T=":
lcd.print("T=");
Далее выводим на дисплей температуру округляя ее до десятых (один знак после точки). За количество цифр после запятой отвечает второй аргумент функции ''lcd.print()''.
lcd.print(temp, 1);
Устанавливаем частоту обновления температуры на дисплее с помощью задержки — раз в полсекунды.
delay(500);
==== Дополнительное задание ====
1. Измени программу, чтобы она выводила температуру с точностью до сотых.
2. Добавь символ градуса после показаний температуры. Символ градуса [[products:laboratory_iot_c:exp30|создай самостоятельно]].