初体験はボードのチェックを兼ねたLEDが点滅するスケッチでしたが、
さらに一歩進めてスイッチの入り切りでLEDを点滅する配線とスケッチに進みます。
配線は別図の通りで、スイッチ回路が増設になりピン7に接続されます。
スイッチがONの時ピン7はHIGHに、スイッチがOFFの時はLOWになります。
これをdigitalRead()の命令で読み取ります。
digitalRead()はカッコの中で指定したピンに電圧がかかっているかどうかをチェックし
結果をHIGHかLOWで返します。
その値を if文で判断しdigitalWrite()でLEDをオン/オフします。
接続図
スケッチは次のようになります。
//スイッチによりLEDを点滅させる
#define LED 13 //ピン13にLED
#define SW 7 //ピン7にスイッチ
int val = 0; //SWの状態を記録する変数
void setup() {
pinMode(LED, OUTPUT); //ピン7を出力に設定
pinMode(SW, INPUT); //ピン7を入力に
}
void loop() {
val = digitalRead(SW);//スイッチの状態をvalに読み込む
if (val == HIGH) { //スイッチの状態がONならば
digitalWrite(LED, HIGH); //LEDを点灯する
}else { //スイッチがOFFならば
digitalWrite(LED, LOW); //LEDを消灯する
}
}
スイッチの代わりに光センサ(cdsセル)を入れて、スケッチの
LEDがON/OFFする部分を次の通り書き換えると、暗くなるとLEDが
点灯し明るくなると消灯します。
csdセルは周囲が暗いと抵抗値は高くなりスイッチとしてはOFFの状態、
周囲が明るくなると抵抗値は下がりスイッチとしてはONの状態になります。
digitalWrite(LED, LOW); //LEDを消灯する
}else { //スイッチがOFFならば
digitalWrite(LED, HIGH); //LEDを点灯する
明るい状態(LED消灯) 暗い状態(LED点灯)黒いテープでcdsを覆っている
ブログ楽しく拝見させていただいています。
上記のつなぎ方を試してみたのですが、どうしてもCDSセンサではうまくいきません。
通常、CDSセンサはanalogピンに接続して使用するものだと思っていたのですが、どうやったらdigitalピンに接続して使えるでしょうか?
CDSにレーザーを照射してみたところ、LEDに変化がみられました!
おそらく抵抗値の変化が少なかったのが原因と思われます。
★意外と知られていない?INPUT_PULLUP
URL:http://mag.switch-science.com/2013/05/23/input_pullup/