from machine import Pin
# Configuração dos LEDs
ledv = Pin(4, Pin.OUT)
leda = Pin(3, Pin.OUT)
ledm = Pin(2, Pin.OUT)
geracao = 0
consumo = 0
energia_disponivel = 0
sessao = True
carregando = False
print("Defina os valores")
def config_dados():
while True:
try:
geracao = round(float(input("Geração de energia do local: ")), 2)
consumo = round(float(input("Consumo por dispositivo: ")), 2)
if geracao < 0:
print("A geração não pode ser menor que 0")
elif consumo <= 0:
print("O consumo deve ser maior que 0")
else:
print("\n[INTERFACE DE ENTRADA]")
print("Dados recebidos pelo Raspberry Pi Pico.")
print("Geração armazenada na memória:", geracao, "W")
print("Consumo armazenado na memória:", consumo, "W")
break
except ValueError:
print("Valor inválido")
return geracao, consumo
geracao, consumo = config_dados()
def status_recarga(disponivel):
status = ""
ledv.value(0)
leda.value(0)
ledm.value(0)
print("\n[TOMADA DE DECISÃO - CPU]")
if disponivel > consumo:
status = "RECARGA AUTORIZADA"
ledv.value(1)
print("Processamento concluído: energia suficiente.")
elif disponivel > 0:
status = "RECARGA REDUZIDA"
leda.value(1)
print("Processamento concluído: energia limitada.")
else:
status = "RECARGA BLOQUEADA"
ledm.value(1)
print("Processamento concluído: energia insuficiente.")
return status
def representacao_dados(valor):
valor_decimal = int(valor)
print("\n[REPRESENTAÇÃO DE DADOS]")
print("Dado utilizado: Energia disponível")
print("Decimal:", valor_decimal)
print("Binário: {:0b}".format(valor_decimal))
print("Hexadecimal:", hex(valor_decimal))
def resultado(escolha):
global geracao, consumo, energia_disponivel, carregando
if escolha == 1:
print("\n[MEMÓRIA DE DADOS - SRAM]")
print("Lendo os valores armazenados...")
print("Geração:", geracao, "W")
print("Consumo:", consumo, "W")
print("\n[UNIDADE DE PROCESSAMENTO - CPU]")
print("Executando Operação")
print("\n[OPERAÇÃO ARITMÉTICA - ULA/ALU]")
energia_disponivel = round(geracao - consumo, 2)
print("Cálculo:", geracao, "-", consumo, "=", energia_disponivel, "W")
status = status_recarga(energia_disponivel)
print("\n[INTERFACE DE SAÍDA - GPIO]")
print("Controlando o LED correspondente ao estado da recarga.")
print("\n[SAÍDA DE DADOS - TERMINAL]")
print("GERAÇÃO:", geracao, "W")
print("CONSUMO:", consumo, "W")
if status != "RECARGA BLOQUEADA":
carregando = True
print("ENERGIA DISPONÍVEL:", energia_disponivel, "W")
else:
print("ENERGIA DISPONÍVEL PREVISTA:", energia_disponivel, "W")
print("ESTADO:", status)
representacao_dados(energia_disponivel)
elif escolha == 2:
print("Redefina os valores")
ledv.value(0)
leda.value(0)
ledm.value(0)
carregando = False
geracao, consumo = config_dados()
elif escolha == 0:
return False
else:
print("Operação inválida")
return True
while sessao:
print("=" * 30)
print("Simulador de sessão de recarga")
print("=" * 30)
print("1 - Carregar")
print("2 - Alterar dados")
print("0 - Encerrar simulação")
try:
op = int(input("Escolha a operação desejada: "))
sessao = resultado(op)
except ValueError:
print("Valor inválido.")
print("\n[ENCERRAMENTO]")
print("Energia disponível:", energia_disponivel if carregando else geracao, "W")
print("Simulação encerrada.")