ЖК экран подменю
Мне нужно сделать приложение, которое выполняет различные функции, связанные с ИК-сигналами (похоже на дистанционное управление). Мне нужно создать подменю, чтобы получить доступ к нескольким функциям.
Arduino-Uno-Menu-Template
Я использовал ссылку выше, чтобы создать меню, и оно отлично работает! Проблема в том, что я не могу сделать подменю, не возясь с циклом, отображающим исходное . Есть идеи?
Это код, который я получил на данный момент:
https://pastebin.com/Vh5R2JVp
Я пытаюсь добавить в функцию menuItem1() подпрограмму для создания подменю. Я пытался использовать переменную, которая изменяется вместе с меню, но это не сработало.
@Teofil Sandu, 👍-2
Обсуждение1 ответ
Лучший ответ:
Что вы можете сделать (но есть много решений):
- Оставьте переменную (например,
subMenu
, в которой выбрано состояние текущего параметра меню (сделайте этоenum
). - Каждый раз при входе в подменю присваивайте переменной
subMenu
текущее значение подменю. - Используйте
switch
вокруг текущего оператораswitch
для первого переключения подменю (для ясности сделайте разные функции).
Так будет выглядеть псевдокод
enum ESubMenu { MainMenu, Page1, Page2 };
ESubMenu subMenu;
void setup()
{
subMenu = MainMenu;
}
void loop()
{
switch (subMenu)
{
case MainMenu : showMainMenu() ; break;
case Page1Menu: showPage1Menu(); break;
case Page2Menu: showPage2Menu(); break;
}
}
void showMainMenu()
{
if (`sub menu 1 selected`)
{
subMenu = Page1Menu;
}
else if (`sub menu 2 selected')
{
subMenu = Page2Menu;
}
else
{
// Показать/обработать главное меню
}
}
void ShowPage1()
{
if `back'
{
subMenu = MainMenu;
}
else
{
// Показать/обработать пункты меню страницы 1
}
}
Я попробую это. Надеюсь, я понял концепцию. я новичок в ардуино, @Teofil Sandu
Какого типа должна быть моя переменная?, @Teofil Sandu
Типа ESubMenu, @Michel Keijzers
Это не сработало. Я думаю, это, вероятно, из-за того, как работает цикл, @Teofil Sandu
Это не полный код, вам нужно добавить код для получения кнопок самостоятельно; также я не мог проверить это; это больше похоже на шаблон псевдокода, @Michel Keijzers
Я знаю, я пытался адаптировать его к шаблону меню. По какой-то причине он не позволяет мне вернуться на первую страницу меню. Думаю, это из-за петли., @Teofil Sandu
Если подменю - это MainMenu, оно должно отображать главное меню, возможно, вы можете добавить некоторые операторы печати, чтобы распечатать значение подменю, чтобы увидеть, имеет ли оно ожидаемое значение. Также в подменю при возврате обязательно назначьте MainMenu для subMenu, чтобы вернуться обратно в главное меню., @Michel Keijzers
Могу я как-нибудь показать код?, @Teofil Sandu
Добавьте его к своему вопросу (чтобы любой мог ответить), @Michel Keijzers
- mcufriend 2.4 tft мега 2560
- Библиотека Arduino Mega Shield для Eagle CAD
- Arduino Ethernet Shield при использовании контактов Arduino Mega
- Кнопка двойного состояния Nextion
- Arduino GSM Shield GSM_READY никогда не готов
- ЖК-дисплей 16x2, показывающий блоки под текстом
- Печать содержимого файла SD - карты на ЖК-дисплее
- Arduino Ethernet Shield 2: Как автоматически определить MAC-адрес?
Можете ли вы показать нам код, который вы уже написали?, @VE7JRO
Код тот же, что и по ссылке, которую я предоставил. Я просто изменил элементы, чтобы они соответствовали потребностям моего меню. Ссылка выше представляет собой простой шаблон, но не имеет подменю. Это то что мне нужно !, @Teofil Sandu
Я добавил код!, @Teofil Sandu