Arduino初心者です。

C言語関連 | プログラミング28閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

あと、 > while(count = 1){ > if(count2 = 1){ これは、変数に1を代入する事になるから駄目ね。 ちゃんと「==」にしないと。

ThanksImg質問者からのお礼コメント

みなさんとても参考になる回答ありがとうございます。 簡潔でわかりやすく丁寧だったのでベストアンサーにさせていただきます。

お礼日時:3/3 23:21

その他の回答(3件)

0

いかにもシロウトっぽく、敢えて「最悪一秒間スイッチを押し続けなきゃいけない」なんていうところを残して int dly=500; void loop(){ if(digitalRead(SWITCH) == HIGH){ dly = 500; } if(digitalRead(RESET) == HIGH){ dly = 0; } digitalWrite(LED,HIGH); delay(500); digitalWrite(LED,LOW); delay(dly); } 点滅が止まったら、その時のLEDの状態はどうなんだろう、というのは思いながら勝手に「点灯」にしました。(プログラムを組む上ではそういうのが気にならないといけません) もひとつ、スイッチを「押すとHIGH」なのは、回路上の処理はちゃんとされているかなぁ? というのがちょっと気になるところ。

0

色々方法があります。 こんな方法では如何でしょうか。 delay()関数は極力使わない方法を考えて下さい。 (動かして無いので、間違っていたらごめんなさい) char blink = 0; char SW = 0 ; void loop(){ if(digitalRead(SWITCH) == HIGH){ SW = 1; } if(digitalRead(RESET) == HIGH){ SW = 0; blink = 0; } if( (millis() % 500) == 0 ){ blink ^= SW ; } digitalWrite(LED,blink); }

0

>ひとつを1度押すとLEDが点滅し続け(何回押してもそのまま)、もうひとつを押すと点滅がとまる こんなのでどうでしょうか int state = 0; void loop(){ switch(state){ case 0: if(digitalRead(SWITCH) == HIGH){ state = 1; } break case 1: digitalWrite(LED,HIGH); delay(500); digitalWrite(LED,LOW); delay(500); if(digitalRead(RESET) == HIGH){ state = 0; } break; } }