ピックワールド(PIC World)

インフォメーション

この記事は 2013年05月02日 に以下のカテゴリに投稿されました Arduino Blog.


Arduino UNO 基本編 – 2(改造編-1) 外部に付けた LED をスイッチで制御してみる

1 2 3 4 5

まずは 7 行目で直前の LED の状態を格納しておく変数 old_val を宣言します。

int old_val = 0; // 入力ピンの直前の状態を格納する

ですね。
次にプログラムのメイン部分を書き換えます。

void loop()
 {
 val = digitalRead(BUTTON); // 入力を読み取り val に格納// 7番ピンの状態が HIGH (ボタンが押されたら)になったら、状態 status を変更する
 if ((val == HIGH) && (old_val == LOW)) {
 status = 1 - status;
 delay(10);
 }
 old_val = val ; // 現在の状態を old_val に格納
 if (status == 1) {
 digitalWrite(LED,HIGH);  // LED を点ける
 } else {
 digitalWrite(LED,LOW);   // LED を消す
 }
 }

まずは 22 行目の if 文です。現在の LED の状態(val)がオン(HIGH)でかつ、直前の LED の状態(old_val)がオフ(LOW)の時だけステータスを変更し、10ミリ秒待ちます。これにより、スイッチのばたつき1.の問題を解決できます。
old_val に現在の状態を格納しておき、27行目でステータスの状態が 1 の時には LED を点灯し、そうでない場合には、LED を消灯しています。
さて、ちゃんと動くでしょうか?

大丈夫でしたね。LED の制御はこれぐらいにして、次行きましょう。お楽しみに。


コメントを残す

最近の投稿

最近のコメント

アーカイブ