ЖК-меню, в котором опции могут взаимодействовать с кнопками на R-Pi-3 Python - PullRequest
0 голосов
/ 19 октября 2018

Я хочу создать меню, с которым можно взаимодействовать кнопками.В настоящее время я программирую на Python на R-Pi 3 Model 3 и 16x2 LCD.

Программа, с которой я столкнулся, выглядит так, как показано ниже.Я сделал первый слой меню, но вы можете помочь мне выбрать один из них и создать другое меню внутри обоих этих основных меню.Как другой слой под одним вариантом.

Мне нужна помощь на стороне программирования.Что я спрашиваю, так это то, что если у меня есть два основных меню, таких как: Фрукты и овощи, и когда мой курсор указывает на овощи, и я нажимаю другую кнопку, то это приводит меня в подменю овощей, таких как отображение разных овощей, таких как горох и капуста, шпинат и т. д. и еще одну кнопку, чтобы вернуться в главное меню.

У меня максимум четыре кнопки для взаимодействия с меню.

from RPLCD import CharLCD, cleared, cursor
import RPi.GPIO as GPIO
import time
from gpiozero import Button
GPIO.setmode(GPIO.BCM)
GPIO.setup(5, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(12, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(19, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

lcd = CharLCD(numbering_mode=GPIO.BCM, cols=16, rows=2, pin_rs=13, 
pin_e=6, pins_data=[5,22,17,27,12,25,24,23])

def level0():
    #main menu
    lcd.cursor_pos = (0, 2)
    lcd.write_string('Vegetables')
    lcd.cursor_pos = (1, 2)
    lcd.write_string('Fruits')
def level1():
    #sub menu for cursor(0,0)
    lcd.cursor_pos = (0, 2)
    lcd.write_string('Cabbage')
    lcd.cursor_pos = (1, 2)
    lcd.write_string('Spinach')
def level2():
    #sub menu for cursor(1,0)
    lcd.cursor_pos = (0, 2)
    lcd.write_string('Apple')
    lcd.cursor_pos = (1, 2)
    lcd.write_string('Mango')

button = Button(21, pull_up=False, bounce_time=0.001)#down
button2 = Button(26, pull_up=False, bounce_time=0.001)#up
button3 = Button(19, pull_up=False, bounce_time=0.001)#next
button4 = Button(20, pull_up=False, bounce_time=0.001)#back

try:
    while 1:
        for position in range(0,1):
            level0()

            b = button2.wait_for_press()
                if b == 1:
                lcd.clear()
                level0()
                print(position)
                lcd.cursor_pos = (position, 0)
                lcd.write_string('>')

            a = button.wait_for_press()
            if a == 1:
                position = position + 1
                print(position)
                lcd.clear()
                level0()
                lcd.cursor_pos = (position, 0)
                lcd.write_string('>')
                time.sleep(0.3)
except:
    pass

finally:
    lcd.clear()
    GPIO.cleanup()

Любая помощь приветствуется.

...