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

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

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

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

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

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

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

Exp33.py
  1. from machine import Pin, I2C
  2. from esp8266_i2c_lcd import I2cLcd
  3. import time
  4. import math
  5.  
  6. _init()
  7.  
  8. Bcoef = 3950
  9. R1 = 10000
  10. Rtnom = 10000
  11. T0 = 273.15
  12.  
  13. adc = machine.ADC(0)
  14.  
  15.  
  16. DEFAULT_I2C_ADDR = 0x3F # Или 0x27 в зависимости от модели микросхемы на плате
  17.  
  18.  
  19. i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000)
  20. lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)
  21. lcd.backlight_on()
  22.  
  23.  
  24. while True:
  25. value = adc.read()
  26.  
  27. R = (-R1 * value)/(value-1023)
  28.  
  29. temp = 1 / (math.log(R / Rtnom) / Bcoef + 1/(25+T0)) -T0
  30.  
  31. round_temp = round(temp, 1)
  32.  
  33. print(round_temp)
  34.  
  35. lcd.clear()
  36. lcd.putstr("T=" + str(round_temp))
  37. time.sleep(3)

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

Температуру перед выводом на экран округляем до десятых (один знак после точки):

  1. round_temp = round(temp, 1)

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

  1. lcd.clear()

Формируем строку для вывода на дисплей. Она состоит из подстроки «T=» и подстроки с температурой. Оператор str() преобразует число в строку. А оператор + здесь работает не совсем так, как мы привыкли. Дело в том, что поведение этого оператора зависит от контекста. Когда он оказывается среди чисел, то это операция математического сложения. Но в данном случае оператор + оказался среди строк. В таком контексте этот оператор выполняет операцию конкатенации — склейки строк. Вот он и склеивает одну строку из двух половинок. Полученная таким образом строка передается для вывода на дисплей.

  1. lcd.putstr("T=" + str(round_temp))

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

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

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