このサンプルコードでは、内部のプルアップ抵抗を使用して、押しボタンスイッチが開いているときはHighに、押すとLowになるようにバイアスをかける方法を示しています。また、プルアップまたはプルダウン抵抗を使用することで、スイッチ信号のフローティングを防ぐことができます。 スイッチが 「フロート」の状態では、0Vと+5Vの間を自由に行き来することができます。回路内に何らかのノイズがあると、スイッチの信号がバウンドして誤入力のトリガとなったり、発振して入力が実際に使えなくなったりすることさえあります。これを防ぐためには、抵抗をグランドに接続してローに引き下げるか、または+5Vに接続してハイに引き上げ、スイッチをハイまたはローにバイアスしなければなりません。この回路では、内蔵のプルアップ抵抗を使ってスイッチをバイアスしています。
最初のサンプルコード
void setup() { //Start the serial connection Serial.begin(9600);
// set pin 2 as an input and use internal pullup resistor pinMode(2, INPUT_PULLUP); // set pin 13 as an output pinMode(13, OUTPUT);
}
void loop() {
//set up a variable to hold value of the pushbutton
int sensorVal = digitalRead(2);//print the value of the variable to the serial monitor Serial.println(sensorVal); // check the variable to see if the button is pressed. Remember if HIGH the button has not been pressed, LOW when it is being pressed if (sensorVal == HIGH) { digitalWrite(13, LOW); // Turn LED off } else { digitalWrite(13, HIGH); //turn LED on }
}
初期コードの配線図
拡張コード
これにもう少しフラッシュを加えてみましょう。11番ピンと12番ピンに2つのLEDと抵抗を追加します。そして、ボタンを押すたびに3つのLEDが順番に点滅するようにします。ボタンを押したままにすると、連続して点滅を繰り返します。.
void setup() { //start serial connection Serial.begin(9600);
//configure pin2 as an input and enable the internal pull-up resistor pinMode(2, INPUT_PULLUP); // Set pins 11, 12, and 13 to ouputs pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT);
}
void loop() {
int sensorVal = digitalRead(2); //read the pushbutton value into a variableSerial.print(sensorVal); //print out the value of the pushbutton on the Serial moniter if (sensorVal == HIGH) { // Remember that the buttons logic is inverted. When it is high it is not pressed. digitalWrite(13, LOW); // Being button is not pressed turn off all LED's digitalWrite(12, LOW); digitalWrite(11, LOW); } else { // This is when the pushbutton is pressed digitalWrite(13, HIGH); // turn on the LED attached to pin 13 delay(200); // pause for 200 milliseconds before moving on digitalWrite(13, LOW); //turn off the LED attached to pin 13 digitalWrite(12, HIGH); // turn on the LED attached to pin 12 delay(200); // delay again digitalWrite(12, LOW); //turn off pin 12 digitalWrite(11, HIGH); // turn on pin 11 delay(200); // delay again digitalWrite(11, LOW); //turn off pin 11 digitalWrite(12, HIGH); // turn on pin 12 delay(200); // delay again digitalWrite(12, LOW); //turn off pin 12 digitalWrite(13, HIGH); // turn on pin 13 delay(200); // delay if the button is still held }
}
ライトチェイスの効果を速くしたり遅くしたりしたい場合は、delayを変更します。それぞれのdelayを1000に設定すると、点滅の間隔が1秒になることを覚えておいてください。
拡張コードの配線図
部品表
カートへのリンク:Digi-Key - Fast Add