シリアルモニターはbuttonStateがLOWであることを知らせる、100ミリ秒ごとに "0" を印刷しています。
しかし、ユーザーが赤いドームボタンRed Dome Buttonを押した場合、buttonStateがHIGHであり、シリアルモニタでは、赤いドームボタンが再び押されるまで、100msごとに「1」が印刷されるはずです。 buttonStateがLOWでシリアルモニタが "0"を出力していることを通知します。
問題:
シリアルモニタが最初に100ms毎に「0」を出力している、と私は赤いドームボタンを押したとき、buttonStateはHIGHを返し、シリアルモニタに出力している「1 "ただし、シリアル "1"は保持されず、直ちに "0"に戻ります。
ボタンを連続して押すと、シリアル "1"はシリアルモニタでのみ表示されます。
意味:
正しい挙動:
初期状態 - > 0のすべてのシリアルシリアルモニタ意志出力ユーザがボタンを押すまで、ユーザはシリアルモニタ意志出力を全てシリアル1のボタンを押すまで私は
:再び出力はシリアル0
現在の行動に変更されますシリアルモニタはユーザがボタンを押すまでシリアル0を出力し、シリアルモニタはシリアル1を出力しますが、シリアルは0に戻ります。
したがって、シリアル状態を私はボタンを押した後にシリアル1と私は再びボタンを押すときにシリアル0が表示されますか?私はそれにいくつかの助けが必要です。ありがとう
コード:
const int buttonPin = 2; // the number of the pushbutton pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
Serial.begin(9600); // Open serial port to communicate
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
Serial.println("1");
}
else {
Serial.println("0");
}
delay(100);
}
一度ユーザーによって押されたスイッチのような2つの状態ボタンの行為は、それが回路を閉じ、もう一度押されると、それは回路を開きます:あなたのコードで
は次のようなものでなければなりません。私はそうであるのですか?だから明らかに私が持っている物理的なボタンは、割り込みボタンです。私は正しい? – Luke
あなたのボタンはあなたが言っているようだと思います。コードは機能しましたか? – dubafek
はい、しました。ありがとう – Luke