from machine import Pin, I2C
from time import sleep, ticks_ms, ticks_diff
from pico_i2c_lcd import I2cLcd
botao1 = Pin(14, Pin.IN, Pin.PULL_DOWN)
botao2 = Pin(15, Pin.IN, Pin.PULL_DOWN)
led_verde = Pin(17, Pin.OUT)
led_vermelho = Pin(16, Pin.OUT)
i2c = I2C(1, sda=Pin(2), scl=Pin(3), freq=100000)
lcd = I2cLcd(i2c, 39, 2, 16)
verde_ligado = False
vermelho_ligado = False
botao1_anterior = 0
botao2_anterior = 0
kwh_total = 0.0
ultima_atualizacao = ticks_ms()
while True:
botao1_atual = botao1.value()
botao2_atual = botao2.value()
if botao1_atual == 1 and botao1_anterior == 0:
verde_ligado = not verde_ligado
led_verde.value(verde_ligado)
if botao2_atual == 1 and botao2_anterior == 0:
vermelho_ligado = not vermelho_ligado
led_vermelho.value(vermelho_ligado)
botao1_anterior = botao1_atual
botao2_anterior = botao2_atual
if ticks_diff(ticks_ms(), ultima_atualizacao) > 1000:
if verde_ligado:
kwh_total += 1.0
if vermelho_ligado:
kwh_total += 5.0
lcd.clear()
lcd.putstr("Consumo: " + str(round(kwh_total, 2)) + "kWh")
ultima_atualizacao = ticks_ms()
sleep(0.1)