Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| products:laboratory_iot_c:exp33 [2024/11/15 19:42] – создано labuser30 | products:laboratory_iot_c:exp33 [2024/12/04 12:23] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 13: | Строка 13: | ||
| ==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== | ||
| - | < | + | < |
| - | from machine import Pin, I2C | + | #include < |
| - | from esp8266_i2c_lcd import I2cLcd | + | |
| - | import time | + | |
| - | import math | + | |
| - | _init() | + | #define ACD_PIN A0 |
| + | #define DEFAULT_I2C_ADDR 0x3F // Или 0x27 в зависимости от твоей платы IoT | ||
| - | Bcoef = 3950 | + | const int Bcoef = 3950; |
| - | R1 = 10000 | + | const int R1 = 10000; |
| - | Rtnom = 10000 | + | const int Rtnom = 10000; |
| - | T0 = 273.15 | + | const float T0 = 273.15; |
| - | adc = machine.ADC(0) | + | int value = 0; |
| + | float R2 = 0.0; | ||
| + | float temp = 0.0; | ||
| + | LCDI2C_Generic lcd(DEFAULT_I2C_ADDR, | ||
| - | DEFAULT_I2C_ADDR = 0x3F # Или 0x27 в зависимости от модели микросхемы на плате | + | void setup() { |
| - | + | lcd.init(); | |
| - | + | lcd.setBacklight(0); | |
| - | i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000) | + | } |
| - | lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, | + | |
| - | lcd.backlight_on() | + | void loop() { |
| - | + | value = analogRead(ACD_PIN); | |
| - | + | ||
| - | while True: | + | |
| - | value = adc.read() | + | |
| - | + | temp = 1 / (log(R2 / Rtnom) / Bcoef + 1/(25 + T0)) - T0; | |
| - | | + | |
| - | + | lcd.clear(); | |
| - | temp = 1 / (math.log(R / Rtnom) / Bcoef + 1/(25+T0)) -T0 | + | lcd.print(" |
| - | + | lcd.print(temp, 1); | |
| - | | + | delay(1000); |
| - | + | } | |
| - | print(round_temp) | + | |
| - | + | ||
| - | | + | |
| - | lcd.putstr(" | + | |
| - | time.sleep(3) | + | |
| </ | </ | ||
| - | К предыдущей программе добавили то, что требуется для работы с дисплеем. Подключение библиотеки дисплея, | + | К предыдущей программе добавили то, что требуется для работы с дисплеем. Подключение библиотеки дисплея, |
| - | Температуру перед выводом на экран округляем до десятых | + | Перед выводом |
| - | < | + | < |
| - | | + | |
| </ | </ | ||
| - | Перед выводом информации очищем | + | Печатаем на дисплей |
| + | <code arduino[enable_line_numbers=" | ||
| + | lcd.print(" | ||
| + | </ | ||
| - | < | + | Далее выводим на дисплей температуру округляя ее до десятых (один знак после точки). За количество цифр после запятой отвечает второй аргумент функции '' |
| - | lcd.clear() | + | |
| + | < | ||
| + | lcd.print(temp, 1); | ||
| </ | </ | ||
| - | Формируем | + | Устанавливаем |
| - | + | < | |
| - | < | + | delay(500); |
| - | | + | |
| </ | </ | ||
| Строка 76: | Строка 76: | ||
| 1. Измени программу, | 1. Измени программу, | ||
| - | 2. Добавь символ градуса после показаний температуры. Символ градуса [[products:laboratory_iot: | + | 2. Добавь символ градуса после показаний температуры. Символ градуса [[products:laboratory_iot_c: |
| </ | </ | ||