試圖做一個簡單的Arduino加法器,但我遇到了編程的麻煩。我不確定我犯了什麼錯誤。任何幫助將非常感激。如何編程Arduino以將兩個鍵盤輸入保存在不同的變量中?
用戶必須在鍵盤上輸入兩個數字,它們的總和纔會顯示在LCD上。用戶輸入的兩個數字中的每一個都分別存儲在它們的變量中。問題在於,在輸入第一個數字後,程序會自動插入0(因爲那時沒有按鍵)。我嘗試過'如果','while'和'do while'語句來消除NO_KEY,但這些似乎都不起作用。
問題是,如果有一種方法可以將用戶輸入的數字存儲在一個變量中,並且不讓程序用0覆蓋它,因爲此時沒有鍵被按下。或者,也不要讓Arduino在按下某個按鍵後接收到任何更多輸入(可能會禁用鍵盤)...
如果您願意花一些時間查看代碼,網站鏈接here包含代碼和整個實驗室設置。
#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd (7,8,9,10,11,12);
int backLight(13);
int Addition(int x, int y){
int z;
z = x+y;
lcd.setCursor(8,0);
lcd.write(z);
}
void setup() {
}
const byte rows =4;
const byte cols =3;
char keys[rows][cols]={
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[rows] = {0,1,2,3};
byte colPins[cols] = {4,5,6};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);
void loop(){
int a;
int b;
a = keypad.getKey();
if (a != NO_KEY){
do {
b = keypad.getKey();
}while (b == NO_KEY);
pinMode (backLight, OUTPUT);
digitalWrite(backLight, HIGH);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.write(a);
lcd.setCursor(2,0);
lcd.write("+");
lcd.setCursor(4,0);
lcd.write(b);
lcd.setCursor(6,0);
lcd.write("=");
Addition(a,b);
delay(10000);
}
}
該電路可能不相關,但代碼不是,所以請編輯您的問題以包含實際的代碼。鏈接到代碼的問題是毫無價值的,因爲誰知道鏈接何時會消失。請花些時間和[閱讀關於如何提出好問題](http://stackoverflow.com/help/how-to-ask),並學習如何創建[最小,完整和可驗證示例](http: //stackoverflow.com/help/mcve)。 –