from machine import Pin, I2C
from pico_i2c_lcd import I2cLcd
from time import sleep
from keyPadFunction import scan_keypads, get_full_key_name
from filterkey import filter_operand
i2c = I2C(0, sda=Pin(20), scl=Pin(21), freq=400000)
I2C_ADDRESS = i2c.scan()[0]
lcd = I2cLcd(i2c, I2C_ADDRESS, 4, 20)
keypressed = ""
while True :
key = scan_keypads()
if key is not None :
value = get_full_key_name(key)
if value == "A":
if len(keypressed) > 0 and keypressed[-1] not in [" ", "+", "-", "/", "*"] :
keypressed += " + "
elif value == "B":
if len(keypressed) > 0 and keypressed[-1] not in [" ", "+", "-", "/", "*"] :
keypressed += " - "
elif value == "D":
if len(keypressed) > 0 and keypressed[-1] not in [" ", "+", "-", "/", "*"] :
keypressed += " / "
elif value == "*":
if len(keypressed) > 0 and keypressed[-1] not in [" ", "+", "-", "/", "*"] :
keypressed += " * "
elif value == "#" :
if len(keypressed) > 0 and any(c in keypressed for c in {"+", "-", "/", "*"}) :
lcd.move_to(cursor_x=0, cursor_y=3)
lcd.putchar(" ")
lcd.putstr(f"{eval(keypressed)}")
else :
lcd.move_to(cursor_x=0, cursor_y=3)
lcd.putchar(" ")
lcd.putstr(f"{keypressed}")
elif value == "C" :
if len(keypressed) > 0 :
keypressed = keypressed[0:len(keypressed) -1]
lcd.move_to(cursor_x = len(keypressed), cursor_y = 0)
lcd.putchar(" ")
else :
keypressed += value
lcd.move_to(cursor_x=0, cursor_y=0)
for x in range(len(keypressed)) :
lcd.putstr("")
lcd.putstr(keypressed)
sleep(0.01)