2016-07-04 100 views
1

我想用Arduino爲我的液晶顯示器創建一個菜單。我想使用2個按鈕 - 一個用於向下滾動,另一個用於選擇項目。再次按下第一個按鈕將回到菜單。問題是,如果我在我的代碼中插入該行:while(digitalRead(menu) == LOW); 我的程序只等待第一個按鈕被按下,所以第二個按鈕不起作用。但如果我不插入該行,兩個按鈕都可以正常工作,但液晶顯示屏上的文本正在閃爍。 僞代碼將是這樣的:爲液晶顯示器創建2個按鈕菜單Arduino

如果先按下按鈕:(?interrput)

- - >去第一個菜單項

>如果第二個按鈕按下:

- - >顯示內容

如果先按下按鈕:

- >去第二個菜單項

- >如果第二次按下的按鈕(打斷):

--->顯示內容

我怎麼能寫我的程序等待中斷,而不是等待和無所作爲?

回答

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