from machine import Pin, PWM
import time
# === Configuração dos pinos de entrada (sensores) ===
sensor_a = Pin(17, Pin.IN) # Sensor A - menos sensível (reage a altas concentrações)
sensor_b = Pin(18, Pin.IN) # Sensor B - mais sensível (reage a baixas concentrações)
# === Configuração dos pinos de saída (LEDs e alarme) ===
led_green = Pin(19, Pin.OUT) # LED Verde - Ar puro
led_yellow = Pin(20, Pin.OUT) # LED Amarelo - Concentração moderada
led_red = Pin(21, Pin.OUT) # LED Vermelho - Situação arriscada ou fogo detectado
buzzer = PWM(Pin(22)) # Buzzer - Alarme sonoro (usando PWM)
# === Função para desligar todos os LEDs e o buzzer ===
def reset_outputs():
led_green.value(0)
led_yellow.value(0)
led_red.value(0)
buzzer.duty_u16(0) # Desliga o som do buzzer
# === Função para piscar o LED vermelho e ativar o buzzer ===
def blink_red_and_buzz():
buzzer.freq(1000) # Frequência do buzzer: 1 kHz
buzzer.duty_u16(32768) # Duty cycle de 50%
led_red.value(1) # Liga o LED vermelho
time.sleep(0.1) # Mantém ligado por 100 ms
led_red.value(0) # Desliga o LED vermelho
time.sleep(0.1) # Mantém desligado por 100 ms
# === Loop principal do sistema ===
while True:
# Leitura dos sensores digitais
a = sensor_a.value()
b = sensor_b.value()
# Exibe no terminal o estado atual dos sensores
print("==== Monitoramento Ambiental ====")
print(f"Sensor A (menos sensível): {'GÁS DETECTADO' if a else 'sem gás'}")
print(f"Sensor B (mais sensível): {'GÁS DETECTADO' if b else 'sem gás'}")
# Reinicia todas as saídas antes de aplicar o novo estado
reset_outputs()
# Avalia a situação com base nos sensores e define a sinalização adequada
if a == 0 and b == 0:
print(">> Qualidade do Ar: PURA")
print(">> Ação: LED VERDE ACESO")
led_green.value(1)
elif a == 0 and b == 1:
print(">> Qualidade do Ar: MODERADA")
print(">> Ação: LED AMARELO ACESO")
led_yellow.value(1)
elif a == 1 and b == 0:
print(">> Qualidade do Ar: ALTA CONCENTRAÇÃO - RISCO DE INCÊNDIO")
print(">> Ação: LED VERMELHO ACESO")
led_red.value(1)
elif a == 1 and b == 1:
print(">> PERIGO: FOCO DE INCÊNDIO DETECTADO!")
print(">> Ação: LED VERMELHO PISCANDO + ALARME SONORO ATIVADO")
blink_red_and_buzz()
print("=================================\n")
# Pausa antes da próxima leitura (pode ser ajustada conforme necessário)
time.sleep(1.0)