# Construa um circuito composto de dois botões (vermelho e amarelo),
# três LEDs (vermelho, amarelo e azul) com respectivos resistores,
# um potenciômetro, um DHT e um buzzer.
# O botão deve ser conectado ao resistor interno da raspberry em pull up.
# Depois de construir seu circuito, programe-o para que:
# AO INICIAR E ANTES DE EXECUTAR QUALQUER INTERRUPÇÃO, o circuito:
# Acende o led azul e mantenha os leds vermelho e amarelo apagados.
# Mantém o buzzer em silêncio.
# Imprime na tela a mensagem "Pressione um dos botões".
# AO PRESSIONAR O BOTÃO AMARELO, ATIVA-SE UMA INTERRUPÇÃO QUE:
# Acende o LED amarelo;
# Coloca o DHT em modo leitura;
# Pergunta se o usuário quer ler a temperatura ou a umidade;
# Realiza a leitura desejada e a imprime na tela;
# Ative o buzzer na frequência 296 Hz, nível do som em 150.
# AO PRESSIONAR O BOTÃO VERMELHO, ATIVA-SE UMA INTERRUPÇÃO QUE:
# Acende o LED vermelho;
# Realiza a leitura do potenciômetro;
# Imprime na tela o valor lido;
# Ativa o buzzer na frequência 496 Hz, nível do som em 150.
# Observação:
# Dois ou mais leds não acendem ao mesmo tempo.
# O buzzer só é ativado por uma interrupção.
# Utilize temporização.
from machine import Pin,ADC,PWM
from dht import DHT22
from time import sleep
bot_red = Pin(15,Pin.IN,Pin.PULL_UP)
bot_yellow = Pin(16,Pin.IN,Pin.PULL_UP)
lr = Pin(0,Pin.OUT)
ly = Pin(5,Pin.OUT)
lb = Pin(9,Pin.OUT)
pot = ADC(28)
sensor = DHT22(Pin(27))
buzzer = PWM(21)
def nome_funcao_1(args):
# Acende o LED amarelo;
# Coloca o DHT em modo leitura;
# Pergunta se o usuário quer ler a temperatura ou a umidade;
# Realiza a leitura desejada e a imprime na tela;
# Ative o buzzer na frequência 296 Hz, nível do som em 150.
ly.on()
lr.off()
lb.off()
sleep(1)
try:
sensor.measure()
U = sensor.humidity()
T = sensor.temperature()
except:
print(f"ERRO DHT!!!")
print(f"\n1- TEMPERATURA\n2- UMIDADE")
Pergunta_usuario = int(input(f"\nENTRE COM O QUE DESEJA LER:\t"))
if Pergunta_usuario == 1:
print(f"TEMPERATURA:\t{T:.1f}°C")
if Pergunta_usuario == 2:
print(f"UMIDADE:\t{U:.1f}°%")
# else:
# print(f"DIIGITE O N. CORRETO\n{Pergunta_usuario}")
# buzzer.freq(296)
# buzzer.duty_u16(150)
def nome_funcao_2(args):
# Acende o LED vermelho;
# Realiza a leitura do potenciômetro;
# Imprime na tela o valor lido;
# Ativa o buzzer na frequência 496 Hz, nível do som em 150.
lr.on()
sleep(1)
ly.off()
lb.off()
x = pot.read_u16()
print(f"o valor lido:\t{x}")
# buzzer.freq(496)
# buzzer.duty_u16(150)
# AO PRESSIONAR O BOTÃO AMARELO, ATIVA-SE UMA INTERRUPÇÃO QUE:
bot_red.irq(handler = nome_funcao_2, trigger = Pin.IRQ_FALLING)
# AO PRESSIONAR O BOTÃO VERMELHO, ATIVA-SE UMA INTERRUPÇÃO QUE:
bot_yellow.irq(handler = nome_funcao_1, trigger = Pin.IRQ_FALLING)
while True:
# AO INICIAR E ANTES DE EXECUTAR QUALQUER INTERRUPÇÃO, o circuito:
# Acende o led azul e mantenha os leds vermelho e amarelo apagados.
# Mantém o buzzer em silêncio.
# Imprime na tela a mensagem "Pressione um dos botões".
lb.on()
sleep(1)
lr.off()
ly.off()
buzzer.freq()
buzzer.duty_u16(0)
print("--------------------------------------------------")
print(f"\n1- BOTAO AMARELO:\n2- BOTAO VERMELHO:")
print(f"\nPRESSIONE UM DOS BOTOES")
sleep(10)