# P9: Crie um circuito com seis LEDs de cores
# distintas. Inclua também um buzzer e dois push
# buttons conectados com resistor interno de pull-up e
# pull-down, respectivamente. Em seguida, programe
# o circuito para que:
# ▪ ao pressionar o primeiro push button, os LEDs
# se acendam do LED1 ao LED6,
# espaçados de 1 segundo, sempre apagando o LED anterior.
# A cada led acionado, o buzzer emitindo som nas
# frequências de 264 Hz (led 1), 297 Hz (led 2),
# 330 Hz (led 3), 352 Hz (led 4), 396 Hz (led 5) e
# 440 Hz (led 6), respectivamente;
# ▪ ao pressionar o segundo push button, todos os
# LEDs se apaguem e em seguida acendam na
# ordem contrária. O buzzer emite som também
# na sequência contrária.
# IMPORT
from machine import Pin,PWM
from time import sleep
# NAMES COMPONENTS
lr = Pin(0,Pin.OUT)
lg = Pin(5,Pin.OUT)
lb = Pin(9,Pin.OUT)
ly = Pin(13,Pin.OUT)
lo = Pin(18,Pin.OUT)
lw = Pin(22,Pin.OUT)
buzzer = PWM(17)
bot_red = Pin(28, Pin.IN,Pin.PULL_UP)
bot_green = Pin(27, Pin.IN,Pin.PULL_DOWN)
inicializado = False
# FUNCTION 1
def Leds_leges_1(args):
# ▪ ao pressionar o primeiro push button, os LEDs
# se acendam do LED1 ao LED6,
# espaçados de 1 segundo, sempre apagando o LED anterior.
print(f"\nFunction 1 ON")
global inicializado
if not inicializado:
# Led's
lr.on()
buzzer.freq(264)
buzzer.duty_u16(264)
sleep(1)
lr.off()
lg.on()
buzzer.freq(297)
buzzer.duty_u16(297)
sleep(1)
lg.off()
lb.on()
buzzer.freq(330)
buzzer.duty_u16(330)
sleep(1)
lb.off()
ly.on()
buzzer.freq(352)
buzzer.duty_u16(352)
sleep(1)
ly.off()
lo.on()
buzzer.freq(396)
buzzer.duty_u16(396)
sleep(1)
lo.off()
lw.on()
buzzer.freq(440)
buzzer.duty_u16(440)
sleep(1)
lw.off()
inicializado = True
# FUNCTION 2
def Leds_leges_2(args):
# ▪ ao pressionar o segundo push button, todos os
# LEDs se apaguem e em seguida acendam na
# ordem contrária. O buzzer emite som também
# na sequência contrária.
print(f"\nFunction 2 ON")
global inicializado
if not inicializado:
# Led's
lr.off()
lg.off()
lb.off()
ly.off()
lo.off()
lw.off()
sleep(1)
buzzer.freq()
buzzer.duty_u16(0)
# Led's
lw.on()
buzzer.freq(440)
buzzer.duty_u16(440)
sleep(2)
lw.off()
sleep(2)
lo.on()
buzzer.freq(396)
buzzer.duty_u16(396)
sleep(2)
lo.off()
ly.on()
buzzer.freq(352)
buzzer.duty_u16(352)
sleep(2)
ly.off()
lb.on()
buzzer.freq(330)
buzzer.duty_u16(330)
sleep(2)
lb.off()
lg.on()
buzzer.freq(297)
buzzer.duty_u16(297)
sleep(2)
lg.off()
lr.on()
buzzer.freq(264)
buzzer.duty_u16(264)
sleep(2)
lr.off()
inicializado = True
bot_green.irq(handler = Leds_leges_1, trigger = Pin.IRQ_RISING)
bot_red.irq(handler = Leds_leges_2, trigger = Pin.IRQ_FALLING)
while True:
buzzer.duty_u16(0)