===== Эксперимент 33. Термометр =====
Теперь, наконец добавим вывод результатов изменения температуры на дисплей.
==== Схема эксперимента ====
{{ :products:esp-iot:exp13.1_sch.png?nolink |}}
//Рисунок 1. Электрическая принципиальная схема эксперимента//
Добавляем подключения дисплея
{{ :products:esp-iot:13.3_mon.png?direct&600 |}}
//Рисунок 2. Монтажная схема эксперимента//
==== Программный код эксперимента ====
from machine import Pin, I2C
from esp8266_i2c_lcd import I2cLcd
import time
import math
_init()
Bcoef = 3950
R1 = 10000
Rtnom = 10000
T0 = 273.15
adc = machine.ADC(0)
DEFAULT_I2C_ADDR = 0x3F # Или 0x27 в зависимости от модели микросхемы на плате
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000)
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)
lcd.backlight_on()
while True:
value = adc.read()
R = (-R1 * value)/(value-1023)
temp = 1 / (math.log(R / Rtnom) / Bcoef + 1/(25+T0)) -T0
round_temp = round(temp, 1)
print(round_temp)
lcd.clear()
lcd.putstr("T=" + str(round_temp))
time.sleep(3)
К предыдущей программе добавили то, что требуется для работы с дисплеем. Подключение библиотеки дисплея, настройка дисплея и шины I2C, включение подсветки дисплея.
Температуру перед выводом на экран округляем до десятых (один знак после точки):
round_temp = round(temp, 1)
Перед выводом информации очищаем дисплей от старых данных. При этом курсор дисплея устанавливается в левый верхний угол.
lcd.clear()
Формируем строку для вывода на дисплей. Она состоит из подстроки ''"T="'' и подстроки с температурой. Оператор ''str()'' преобразует число в строку. А оператор ''+'' здесь работает не совсем так, как мы привыкли. Дело в том, что поведение этого оператора зависит от //контекста//. Когда он оказывается среди чисел, то это операция математического сложения. Но в данном случае оператор ''+'' оказался среди строк. В таком контексте этот оператор выполняет операцию //конкатенации// — склейки строк. Вот он и склеивает одну строку из двух половинок. Полученная таким образом строка передается для вывода на дисплей.
lcd.putstr("T=" + str(round_temp))
==== Дополнительное задание ====
1. Измени программу, чтобы она выводила температуру с точностью до сотых.
2. Добавь символ градуса после показаний температуры. Символ градуса [[products:laboratory_iot:exp30|создай самостоятельно]].