ピックワールド(PIC World)

インフォメーション

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


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

1 2 3 4 5

さて、問題は何となくわかりましたが、どうすれば修正できるでしょうか?

1. の問題は、スイッチの状態を確認した後、少し待つ(ディレイ)を入れることで解決できそう。
2. の問題は、前の状態を格納する変数を使い、それと現在の状況を比較することで解決ができそうです。

はい。コードを修正したのが下記のスケッチです。

// 7番ピンに接続したスイッチが押されている間、12番ピンに接続した LED を点灯する

const int LED = 12; // LED が接続されているピン
 const int BUTTON = 7; // スイッチが接続されているピン

int val = 0; // 入力ピンの状態を val に格納する
 int old_val = 0; // 入力ピンの直前の状態を格納する
 int status = 0; // LED の状態を示す (0 = OFF / 1 = ON)

void setup()
 {
 pinMode(LED,OUTPUT); // 12番のピンは出力
 pinMode(BUTTON,INPUT); // 7 番のピンは入力

}

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 を消す
 }
 }

コメントを残す

最近の投稿

最近のコメント

アーカイブ