単純なArduino加算器を作ろうとしていますが、プログラミングに問題があります。私はどこでミスをしたのか分かりません。どんな助けでも大歓迎です。2つのキーパッド入力を別々の変数に取り込んで保存する方法をArduinoにプログラムする方法はありますか?
ユーザーはキーパッドで2つの数字を入力する必要があり、その合計はLCDに表示されます。ユーザーが入力した2つの数字は、それぞれ変数に格納されます。問題は、最初の数値を入力した後に、2番目の変数に対して、プログラムは自動的に0(その時点でキーが押されていないため)を差し込みます。私はNO_KEYを排除するために 'if'、 'while'および 'do while'ステートメントを試しましたが、これらのどれも動作していないようです。
ユーザーが入力した数値を変数に格納し、その時点でキーが押されていないため、プログラムが変数を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)。 –