Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为lcd Arduino创建2按钮菜单_Arduino_Interrupt_Lcd - Fatal编程技术网

为lcd Arduino创建2按钮菜单

为lcd Arduino创建2按钮菜单,arduino,interrupt,lcd,Arduino,Interrupt,Lcd,我想用Arduino为我的lcd创建一个菜单。我想使用两个按钮-一个用于向下滚动,一个用于选择项目。再次按下第一个按钮将返回菜单。问题是,如果我在代码中插入该行:while(digitalRead(menu)==LOW) 我的程序只等待按下第一个按钮,所以第二个按钮不起作用。但是,如果我不插入这一行,两个按钮都可以正常工作,但lcd上的文本正在闪烁。 伪代码如下所示: 如果按下第一个按钮: ->转到第一个菜单项 -->如果按下第二个按钮(输入?): --->显示内容 如果按下第一个按钮: ->转

我想用Arduino为我的lcd创建一个菜单。我想使用两个按钮-一个用于向下滚动,一个用于选择项目。再次按下第一个按钮将返回菜单。问题是,如果我在代码中插入该行:
while(digitalRead(menu)==LOW)
我的程序只等待按下第一个按钮,所以第二个按钮不起作用。但是,如果我不插入这一行,两个按钮都可以正常工作,但lcd上的文本正在闪烁。
伪代码如下所示:

如果按下第一个按钮:

->转到第一个菜单项

-->如果按下第二个按钮(输入?):

--->显示内容

如果按下第一个按钮:

->转到第二个菜单项

-->如果按下第二个按钮(中断?):

--->显示内容

如何编写程序来等待中断,而不是等待什么也不做

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;
  }
}
}
如果不需要,请不要更改显示器。 大概是这样的:

#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;
  }
}
}