【Arduino電子工作】スイッチを押している間だけLEDをじわっと光らせる
目的
LEDをタクトスイッチを押している間だけじわ~っと光らせる
途中で離したら光を消す
今回使うもの
過去記事と同じ
設計・計算
基本的には過去記事と同じ
異なる点はスイッチを押している間だけ、じわっと光らせる点
じわっと光らせるプログラムは過去にもfor文を用いてやったことがある
スイッチを押しているかどうかの判断をfor文に入る前にif文で処理する
さらに途中でスイッチを離したかどうかの判断をfor文内に書いておく
そしてスイッチを離していると判断できた場合にはfor文の処理を中断し、LEDの光を消す
といったプログラムを付け加えていく
回路
過去記事とまったく同じなので省く
プログラム
/*
目的:タクトスイッチを押している間だけじわっと光らせる
http://www.isopro91.com
2015/6/1
*/
int led1 = 13;
int sw1 = 7;
int flag = 0; //スイッチの状態格納用の変数
int val = 0; //for文での数値格納に使う
void setup() {
pinMode(sw1, INPUT); //ピンのモードを入力に
}
void loop() {
flag = digitalRead(sw1); //スイッチの状態を読み、flagに結果を代入する
if(flag==1){ //スイッチが押されていない場合LEDをOFF
analogWrite(led1, 0);
}
if(flag==0){ //スイッチが押されていた場合、for文の処理にはいる
for(int i=0; i<256; i++){
val = i;
analogWrite(led1, val);
delay(15);
flag = digitalRead(sw1); //スイッチの状態を読む
if(flag==1)break; //スイッチを離していた場合、ループから抜ける
}
}
}
プログラム内でスイッチ押されているか否かについてif文を二回つかっているが、一回でもよいことに気づいた
つまり
if(flag==1){ //スイッチが押されていない場合
・・・・ //LEDを消す
}else{ //スイッチが押されている場合
・・・・ //LEDをつける
}
といった書き方にすればすっきりするように思える
まあどの書き方でも動くので問題はない
実際の動作
おわり