Arduino Unoのサンプルスケッチ:デジタル入力のプルアップ

このサンプルコードでは、内部のプルアップ抵抗を使用して、押しボタンスイッチが開いているときは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
}

}

初期コードの配線図

InputPUllup%20Schemeit

拡張コード

これにもう少しフラッシュを加えてみましょう。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 variable

Serial.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秒になることを覚えておいてください。

拡張コードの配線図

InputPullup2

部品表

カートへのリンク:Digi-Key - Fast Add




オリジナル・ソース(英語)