Ввод информации с матрицы 4x4

Пишу код на Micropython для Raspberry pi Pico. Подключил экран 16х2 символа и матрицу с кнопками размером 4х4. Код работает следующим образом: 1)Вводим переменную a клавишами на матрице. 2) Вводим таким же образом переменную znac и переменную b, для выполнения дальнейших действий.

Проблема в следующем: Когда выполняется команда a = buttonings(), все работает нормально и сохраняется значение в переменной "a", но потом идёт выполнение znac = buttonings() и b = buttonings(), но нет возможности ввести какие-либо значения, так как метод быстро проходит. В итоге получаются следующие значения:

a = "какое-то число"  
znac = ""  
b = ""

Ну и как следствие - при запуске метода clear_number() на переменную b выходит ошибка ValueError, потому что нет никакого числа для этого действия.

Ниже прилагаю код.
lcd.putstr() - вывод текста на экран 16x2.
sleep() - ожидание в миллисекундах.

KEY_UP   = const(0)
KEY_DOWN = const(1)

keys = [['1', '2', '3', '/'], ['4', '5', '6', '*'], ['7', '8', '9', '-'], ['.', '0', '=', '+']]

# Pin names for Pico
rows = [8,7,6,5]
cols = [4,3,2,10]

# set pins for rows as outputs
row_pins = [Pin(pin_name, mode=Pin.OUT) for pin_name in rows]

# set pins for cols as inputs
col_pins = [Pin(pin_name, mode=Pin.IN, pull=Pin.PULL_DOWN) for pin_name in cols]

def init():
    for row in range(0,4):
        for col in range(0,4):
            row_pins[row].low()

def scan(row, col):
    
    # set the current column to high
    row_pins[row].high()
    key = None

    # check for keypressed events
    if col_pins[col].value() == KEY_DOWN:
        key = KEY_DOWN
    if col_pins[col].value() == KEY_UP:
        key = KEY_UP
    row_pins[row].low()

    # return the key state
    return key

def buttonings():
    a = ""
    lol = ""
    init()
    while lol != "=":
        for row in range(4):
            for col in range(4):
                key = scan(row, col)
                if key == KEY_DOWN:
                    lol = keys[row][col]
                    if lol != "=":
                        last_key_press = keys[row][col]
                        a += last_key_press
                        lcd.putstr(last_key_press)
                        sleep(0.3)
    return a
#---------------------buttons------------------------
# Приводит число к понятному для пользователя результату
def clear_number(a):
    if a - round(a) == 0:
        return round(a) 
    else:
        return a    
#------------------------------------------

a = ""
lol = None

while True:
    a = buttonings()
    print(a)
    a = clear_number(float(a))
    znac = buttonings()
    print(znac)
    b = buttonings()
    print(b)
    b = clear_number(float(b))

Ответы (0 шт):