from machine import Pin, ADC, SoftI2C
import ssd1306
import time
# -------------------------
# Configuração dos pinos
# -------------------------
# MQ-2
mq2 = ADC(Pin(34))
mq2.atten(ADC.ATTN_11DB)
mq2.width(ADC.WIDTH_12BIT)
# Saída digital do MQ-2 (opcional)
mq2_digital = Pin(27, Pin.IN)
# Relé
rele = Pin(26, Pin.OUT)
rele.value(0)
# OLED
i2c = SoftI2C(
scl=Pin(22),
sda=Pin(21)
)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# -------------------------
# Configuração
# -------------------------
LIMITE = 2000
# -------------------------
# Loop principal
# -------------------------
while True:
valor = mq2.read()
# Conversão simples para ppm (simulação)
ppm = int((valor / 4095) * 10000)
# Aciona o relé
if valor > LIMITE:
rele.value(1)
status = "ALERTA"
else:
rele.value(0)
status = "NORMAL"
# Atualiza OLED
oled.fill(0)
oled.text("Detector Gas", 0, 0)
oled.text("ADC:", 0, 18)
oled.text(str(valor), 40, 18)
oled.text("PPM:", 0, 34)
oled.text(str(ppm), 40, 34)
oled.text(status, 0, 52)
oled.show()
# Exibe também no terminal
print("----------------------")
print("ADC :", valor)
print("PPM :", ppm)
print("Status :", status)
time.sleep(0.5)