"""
Sprint 3
Raspberry Pi Pico / MicroPython
Hardware necessário:
- LED Verde → GPIO 15
- LED Amarelo → GPIO 14
- LED Vermelho → GPIO 13
- Resistores 220Ω para cada LED
- Fios de conexão
- Protoboard
"""
from machine import Pin
import time
# Configuração dos pinos de saída
led_verde = Pin(15, Pin.OUT)
led_amarelo = Pin(14, Pin.OUT)
led_vermelho = Pin(13, Pin.OUT)
# Limites de decisão
LIMITE_AUTORIZADA = 1000
LIMITE_REDUZIDA = 0
# Funções
def apagar_todos():
led_verde.value(0)
led_amarelo.value(0)
led_vermelho.value(0)
def representacao_numerica(valor):
print("\n== Representação ==")
print(f" Decimal: {valor}")
print(f" Binário: {bin(valor)}")
print(f" Hexadecimal: {hex(valor).upper()}")
def calcular_status(geracao, consumo):
disponivel = geracao - consumo
if disponivel >= LIMITE_AUTORIZADA:
return disponivel, "RECARGA AUTORIZADA", "verde"
elif disponivel >= LIMITE_REDUZIDA:
return disponivel, "RECARGA REDUZIDA", "amarelo"
else:
return disponivel, "RECARGA BLOQUEADA", "vermelho"
def ligar_led(led_ativo):
apagar_todos()
if led_ativo == "verde":
led_verde.value(1)
elif led_ativo == "amarelo":
led_amarelo.value(1)
else:
led_vermelho.value(1)
def exibir_resultado(geracao, consumo, disponivel, status, led_ativo):
print("\n" + "=" * 48)
print(f" GERACAO: {geracao:>6} W")
print(f" CONSUMO: {consumo:>6} W")
print(f" DISPONIVEL: {disponivel:>6} W")
print(f" STATUS: {status}")
print("=" * 48)
# Representação numérica da energia disponível
representacao_numerica(abs(disponivel))
def executar_situacao(numero, geracao, consumo, descricao):
print(f"\n\n{'#' * 48}")
print(f" SITUAÇÃO {numero} – {descricao}")
print(f"{'#' * 48}")
disponivel, status, led_ativo = calcular_status(geracao, consumo)
ligar_led(led_ativo)
exibir_resultado(geracao, consumo, disponivel, status, led_ativo)
# LED pisca 3× para chamar atenção
for _ in range(3):
apagar_todos()
time.sleep(0.3)
ligar_led(led_ativo)
time.sleep(0.3)
time.sleep(3)
# Programa principal
def main():
print("\n")
print(" ╔══════════════════════════════════════╗")
print(" ║ CONTROLE INTELIGENTE DE RECARGA ║")
print(" ║ Sprint 3 – Raspberry Pi Pico ║")
print(" ╚══════════════════════════════════════╝")
print("\n Iniciando demonstração em 2 segundos...")
time.sleep(2)
while True:
# Situação 1: Energia suficiente → LED VERDE
executar_situacao(
numero=1,
geracao=4000,
consumo=1500,
descricao="Energia suficiente"
)
time.sleep(1)
# Situação 2: Energia limitada → LED AMARELO
executar_situacao(
numero=2,
geracao=1800,
consumo=1500,
descricao="Energia limitada"
)
time.sleep(1)
# Situação 3: Energia insuficiente → LED VERMELHO
executar_situacao(
numero=3,
geracao=1000,
consumo=1800,
descricao="Energia insuficiente"
)
time.sleep(1)
# Antes de reiniciar, pisca os 3 LEDs em sequência
print("\nReiniciando ciclo...")
for led in [led_vermelho, led_amarelo, led_verde]:
apagar_todos()
led.value(1)
time.sleep(0.4)
apagar_todos()
time.sleep(1)
if __name__ == "__main__":
main()