Эксперимент 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
  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. Добавь символ градуса после показаний температуры. Символ градуса создай самостоятельно.