print("Hello, ESP32!")
from machine import Pin, ADC, PWM
import time
class LM335:
def __init__(self, pin_num):
self.sensor = ADC(Pin(pin_num))
self.sensor.atten(ADC.ATTN_11DB)
def read_temp(self):
voltage = self.sensor.read_uv() / 1_000_000
return (voltage * 100) - 273.15
# Инициализация устройств
sensor1 = LM335(34)
sensor2 = LM335(35)
motor = Pin(25, Pin.OUT)
buzzer = PWM(Pin(26), freq=2000, duty=0)
led = Pin(27, Pin.OUT)
# Параметры управления
motor_state = False
prev_temp = sensor1.read_temp()
last_time = time.time()
# Пороговые значения
NORMAL_ON = 20 # Включение при нормальном режиме
NORMAL_OFF = 10 # Выключение при нормальном режиме
FAST_ON = 15 # Включение при быстром нагреве
FAST_OFF = 10 # Выключение при быстром нагреве
ALARM_TEMP = 90 # Температура тревоги
while True:
current_time = time.time()
temp1 = sensor1.read_temp()
temp2 = sensor2.read_temp()
temp_diff = temp1 - temp2
# Расчет скорости нагрева
heating_rate = (temp1 - prev_temp) / (current_time - last_time) if current_time != last_time else 0
# Определение режима работы
if heating_rate >= 1: # Быстрый нагрев
on_threshold = FAST_ON
off_threshold = FAST_OFF
mode = "БЫСТРЫЙ"
else: # Нормальный нагрев
on_threshold = NORMAL_ON
off_threshold = NORMAL_OFF
mode = "НОРМАЛЬНЫЙ"
# Управление мотором
if not motor_state and temp_diff > on_threshold:
motor.value(1)
motor_state = True
elif motor_state and temp_diff <= off_threshold:
motor.value(0)
motor_state = False
# Сигнализация
alarm = temp1 >= ALARM_TEMP
led.value(alarm)
buzzer.duty(512 if alarm else 0)
# Вывод информации
print("\n" + "="*50)
print(f"Режим: {mode} | Нагрев: {heating_rate:.2f}°C/сек")
print(f"Температуры: {temp1:.1f}°C / {temp2:.1f}°C")
print(f"Разница: {temp_diff:.1f}°C | Пороги: ВКЛ>{on_threshold}°C, ВЫКЛ<={off_threshold}°C")
print(f"Мотор: {'ВКЛ' if motor_state else 'ВЫКЛ'}")
print(f"Тревога: {'АКТИВНА' if alarm else '---'}")
print("="*50)
# Обновление данных
prev_temp = temp1
last_time = current_time
time.sleep(1)