ЖК экран подменю

Мне нужно сделать приложение, которое выполняет различные функции, связанные с ИК-сигналами (похоже на дистанционное управление). Мне нужно создать подменю, чтобы получить доступ к нескольким функциям.

Arduino-Uno-Menu-Template

Я использовал ссылку выше, чтобы создать меню, и оно отлично работает! Проблема в том, что я не могу сделать подменю, не возясь с циклом, отображающим исходное . Есть идеи?

Это код, который я получил на данный момент:

https://pastebin.com/Vh5R2JVp

Я пытаюсь добавить в функцию menuItem1() подпрограмму для создания подменю. Я пытался использовать переменную, которая изменяется вместе с меню, но это не сработало.

, 👍-2

Обсуждение

Можете ли вы показать нам код, который вы уже написали?, @VE7JRO

Код тот же, что и по ссылке, которую я предоставил. Я просто изменил элементы, чтобы они соответствовали потребностям моего меню. Ссылка выше представляет собой простой шаблон, но не имеет подменю. Это то что мне нужно !, @Teofil Sandu

Я добавил код!, @Teofil Sandu


1 ответ


Лучший ответ:

0

Что вы можете сделать (но есть много решений):

  • Оставьте переменную (например, 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