import machine
import time
# Pino 14 conectado sensor PIR (sensor de movimento)
pir_pin = machine.Pin(14, machine.Pin.IN)
# Pino 27 conectado a um LED indicador
led_pin = machine.Pin(27, machine.Pin.OUT)
# Pino 26 conectado para controlar um relé (aciona algum dispositivo)
rele_pin = machine.Pin(26, machine.Pin.OUT)
# Pino 25 conectado ao buzzer
buzzer_pin = machine.Pin(25, machine.Pin.OUT)
# Para buzzer passivo, usamos PWM para gerar som com frequência controlada
buzzer_pwm = machine.PWM(buzzer_pin)
# Função para ligar o buzzer com uma frequência definida (default 1000Hz)
def buzzer_on(frequency=1000):
buzzer_pwm.freq(frequency) # Define a frequência do PWM (tom do buzzer)
buzzer_pwm.duty(512)
# Função para desligar o buzzer
def buzzer_off():
buzzer_pwm.duty(0)
def main():
movimento_detectado = False # Variável para rastrear se o movimento já foi detectado para evitar múltiplas ativações repetidas
while True:
# Lê o valor atual do PIR: 1 movimento detectado, 0 ausência de movimento
estado = pir_pin.value()
# Se movimento for detectado E ainda não estava detectado antes, ativa o alarme
if estado == 1 and not movimento_detectado:
movimento_detectado = True
print("🚨 Movimento detectado! Alarme acionado.")
# Liga o LED indicador
led_pin.value(1)
# Liga o relé para ativar algum dispositivo externo
rele_pin.value(1)
# Liga o buzzer com som de 1000Hz
buzzer_on(1000)
# Se não há movimento e antes estava detectado, desliga o alarme
elif estado == 0 and movimento_detectado:
movimento_detectado = False
print("✅ Movimento cessou. Alarme desligado.") # Mensagem no console informando desligamento
led_pin.value(0)
rele_pin.value(0)
buzzer_off()
time.sleep(0.1)
if __name__ == "__main__":
main()