Создание 2-кнопочного меню для LCD Arduino

Я хотел бы создать меню для моего ЖК-дисплея с помощью Arduino. Я хочу использовать 2 кнопки - одну для прокрутки вниз и одну для выбора элементов. Повторное нажатие первой кнопки вернет вас в меню. Проблема в том, что если я вставлю эту строку в свой код: while(digitalRead(menu) == LOW); моя программа ожидает только нажатия первой кнопки, поэтому вторая кнопка не работает. Но если я не ввожу эту строку, обе кнопки работают нормально, но текст на ЖК-дисплее мигает. Псевдокод будет таким:

если первая кнопка нажата:

-> перейти к первому пункту меню

--> если нажата вторая кнопка (прерывание?):

---> отображать содержимое

если первая кнопка нажата:

-> перейти ко второму пункту меню

--> если нажата вторая кнопка (прерывание?):

---> отображать содержимое

Как я могу написать свою программу для ожидания прерывания вместо того, чтобы ждать и ничего не делать?


person nela    schedule 04.07.2016    source источник


Ответы (1)


void setup
{
 //...
}

Только не меняйте дисплей, если в этом нет необходимости. Может что-то в этом духе:

#define NUM_ITEMS 5

int itemShown = -1;
int item2show = 0;

void loop()
{
  if (digitalRead(button1pin) == LOW)
  {
       item2show++;
       if(item2show>=NUM_ITEMS)
           item2show = 0;
  } else { 
    // if button2 do it
  }

  if (item2show != itemShown) 
  {
     showItem(item2show);
     itemShown = item2Show;
  }
}
}
person Georg Bisseling    schedule 11.07.2016