# P17: Utilizando dois push buttons e um buzzer,
# construa e programe um circuito que calcule e
# verifique o IMC de uma pessoa. O circuito deverá
# funcionar da seguinte forma:
# ▪ Ao ser executado, o programa imprime na tela
# uma solicitação para que o usuário digite o peso
# e a idade, devendo lê-los e armazená-los em
# variáveis;
# ▪ Em seguida, imprime na tela uma mensagem
# orientando o usuário a pressionar o botão;
# ▪ Ao pressionar o botão, ativa-se uma interrupção
# que calcule o IMC, dividindo a massa pelo
# quadrado da altura. Em seguida, o código da
# interrupção verifica o IMC e estabelece a
# classificação de risco conforme os critérios
# abaixo:
# ▪ Se 𝐼𝑀𝐶 < 18,5, imprima na tela “Abaixo do
# peso. Baixo risco de comorbidades”.
# ▪ Se 18,5 ≤ 𝐼𝑀𝐶 < 24,99, imprima na tela
# “Eutrófico. Risco médio de comorbidades”
# ▪ Se 24,99 ≤ 𝐼𝑀𝐶 < 29,99, imprima na tela
# “Sobrepeso. Risco pouco elevado de
# comorbidades”.
# ▪ Se 29,99 ≤ 𝐼𝑀𝐶 < 34,99, imprima na tela
# “Obesidade grau I. Risco elevado de
# comorbidades”.
# ▪ Se 34,99 ≤ 𝐼𝑀𝐶 < 39,99, imprima na tela
# “Obesidade grau II. Risco muito elevado de
# comorbidades”.
# ▪ Se 𝐼𝑀𝐶 ≥ 39,99, imprima na tela “Obesidade
# grau III. Risco muitíssimo elevado de
# comorbidades”.
from machine import Pin,PWM
from time import sleep
bot = Pin(16,Pin.IN,Pin.PULL_UP)
buzzer = PWM(21)
def nome_funcao(args):
calculo_imc = (massa/(altura)**2)
if calculo_imc < 18.5:
# ▪ Se 𝐼𝑀𝐶 < 18,5, imprima na tela “Abaixo do
# peso. Baixo risco de comorbidades”.
print(" ▪ Abaixo do peso. Baixo risco de comorbidades")
if calculo_imc >= 18.5 and calculo_imc < 24.99:
# ▪ Se 18,5 ≤ 𝐼𝑀𝐶 < 24,99, imprima na tela
# “Eutrófico. Risco médio de comorbidades”
# ▪ Se 24,99 ≤ 𝐼𝑀𝐶 < 29,99, imprima na tela
# “Sobrepeso. Risco pouco elevado de
# comorbidades”.
print(" ▪ Abaixo do peso. Baixo risco de comorbidades")
if calculo_imc >= 24.99 and calculo_imc < 29.99:
# ▪ Se 24,99 ≤ 𝐼𝑀𝐶 < 29,99, imprima na tela
# “Sobrepeso. Risco pouco elevado de
# comorbidades”.
print(" Sobrepeso. Risco pouco elevado de comorbidades.")
if calculo_imc >= 34.99 and calculo_imc < 39.99:
# ▪ Se 34,99 ≤ 𝐼𝑀𝐶 < 39,99, imprima na tela
# “Obesidade grau II. Risco muito elevado de
# comorbidades”.
print(" Obesidade grau II. Risco muito elevado de comorbidades.")
if calculo_imc >= 39.99:
# ▪ Se 𝐼𝑀𝐶 ≥ 39,99, imprima na tela “Obesidade
# grau III. Risco muitíssimo elevado de
# comorbidades”.
buzzer.freq(10)
buzzer.duty_u16(100)
print(f" Obesidade grau III. Risco muitíssimo elevado de comorbidades. ")
print(f"Sua massa: {massa}", f"IMC: {calculo_imc}")
bot.irq(handler = nome_funcao, trigger = Pin.IRQ_FALLING)
while True:
# ▪ Ao ser executado, o programa imprime na tela
# uma solicitação para que o usuário digite o peso
# e a idade, devendo lê-los e armazená-los em
# variáveis;
print("--------------------------------------------------")
massa = float(input(f"\nEntre com sua massa aferida por gentileza!!!\t"))
altura = float(input(f"\nEntre com sua altura aferida por gentileza!!!\t"))
sleep(1)
# ▪ Em seguida, imprime na tela uma mensagem
# orientando o usuário a pressionar o botão;
print(f"Pressione o botão!!!")
sleep(10)