Как отобразить символ рядом из списка строк - PullRequest
0 голосов
/ 10 января 2019

Я делаю кодирование клавиатуры на python, где одна кнопка назначается 3-4 символам, и при каждом нажатии кнопки должны отображаться назначенные ей символы. Снова, когда нажата следующая кнопка (которой также назначено 3-4 символа), курсор должен быть перемещен на следующую позицию на ЖК-дисплее. Я могу отображать символы при нажатии кнопки, но не могу установить курсор на следующую позицию на ЖК-дисплее при нажатии другой кнопки.

Я использую матричную клавиатуру и RPI 3

enter code here

import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
gpio.setwarnings(False)

alpha="1!@.,:?ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 *#"
x=0
y=0

MATRIX = [
        ['1','2','3','A'],
        ['4','5','6','B'],
        ['7','8','9','C'],
        ['*','0','#','D']
     ]
ROW = [21,20,16,12]
COL = [26,19,13,6]

for j in range(4):
    gpio.setup(COL[j], gpio.OUT)
    gpio.setup(COL[j],1)

for i in range (4):

    gpio.setup(ROW[i],gpio.IN ,pull_up_down=gpio.PUD_UP)

def keypad():
   for j in range(4):
       gpio.setup(COL[j], gpio.OUT)
       gpio.output(COL[j], 0)
       ch=0
       for i in range(4):
           if gpio.input(ROW[i])==0:
               ch=MATRIX[i][j]

               return ch
               while (gpio.input(ROW[i]) == 0):
                   pass
       gpio.output(COL[j],1)


def getChar(Key, ind, maxInd):

    ch=0
    ch=ind
    Char=''
    count=0
    global x
    global y
    while count<20:
        key=keypad()
        if key== Key:
            Char=alpha[ch]
            print(Char)
            ch=ch+1

            if ch>maxInd:
                ch=ind
            count=0
        count=count+1
        time.sleep(0.2)
    x=x+1
    if x>15:
        x=0
        y=1

def alphaKeypad():
    key=0
    count=0
    key=keypad()

    if key == '1':
        ind=0
        maxInd=6
        Key='1'
        getChar(Key, ind, maxInd)

    elif key == '2':
        ind=7
        maxInd=10
        Key='2'
        getChar(Key, ind, maxInd)

    elif key == '3':
        ind=11
        maxInd=14
        Key='3'
        getChar(Key, ind, maxInd)

    elif key == '4':
        ind=15
        maxInd=18
        Key='4'
        getChar(Key, ind, maxInd)

    elif key == '5':
        ind=19
        maxInd=22
        Key='5'
        getChar(Key, ind, maxInd)

    elif key == '6':
        ind=23
        maxInd=26
        Key='6'
        getChar(Key, ind, maxInd)

    elif key == '7':
        ind=27
        maxInd=31
        Key='7'
        getChar(Key, ind, maxInd)

    elif key == '8':
        ind=32
        maxInd=35
        Key='8'
        getChar(Key, ind, maxInd)

    elif key == '9':
        ind=36
        maxInd=40
        Key='9'
        getChar(Key, ind, maxInd)

    elif key == '0':
        ind=41
        maxInd=42
        Key='0'
        getChar(Key, ind, maxInd)

    elif key == '*':
        ind=43
        maxInd=43
        Key='*'
        getChar(Key, ind, maxInd)

    elif key == '#':
        ind=44
        maxInd=44
        Key='#'
        getChar(Key, ind, maxInd)

    elif key== 'D':
        return

while 1:
    alphaKeypad()
...