from machine import Pin, ADC, PWM
import time
import math
# --- HARDWARE ---
led_normal = Pin(21, Pin.OUT)
# Configuração do Buzzer (Modo Som via PWM)
# O buzzer do Wokwi precisa de oscilação para fazer barulho
buzzer = PWM(Pin(23))
buzzer.freq(1000) # Define o tom (1000 Hz)
buzzer.duty(0) # Começa silenciado (Volume 0)
# Sensor NTC (Entrada Analógica)
sensor = ADC(Pin(34))
sensor.atten(ADC.ATTN_11DB)
sensor.width(ADC.WIDTH_12BIT)
# Constante Beta do NTC (Padrão Wokwi)
BETA = 3950
print("Monitor Térmico Iniciado.")
while True:
leitura = sensor.read()
if leitura == 0 or leitura == 4095:
print("Erro de Sensor")
buzzer.duty(0) # Garante silêncio em caso de erro
else:
# FÓRMULA PADRÃO NTC (Conversão Matemática)
celsius = 1 / (math.log(1 / (4095.0 / leitura - 1)) / BETA + 1.0 / 298.15) - 273.15
# LÓGICA DE ALARME
if celsius > 30.0:
# PERIGO: Apaga LED verde e toca o Alarme
led_normal.off()
buzzer.duty(512) # Volume 50% (Gera o som)status = "ALARME!
else:
# NORMAL: Acende LED verde e silencia
led_normal.on()
buzzer.duty(0) # Volume 0 (Mudo) status = “Normal”
print(f"Temp: {celsius:.1f}C | {status}")
time.sleep(0.5)