SSブログ

Arduinoでボタンの制御(ポーリング方式編) [Arduino入門編]

おはようございます。

今日はArduinoを使ってボタンの制御を行っていきます。
ボタンの制御方法は以下の2種類があります。
 1)ボタンの状態をArduinoから確認しに行く方法
 2)ボタンが押されたらArduinoに通知してもらう方法

組込み用語としては前者をポーリング方式
後者を割込み方式と言ったりします。

今回は前者のポーリング方式編です。
ポーリング方式はArduino側からハードウェア(今回はボタン)の状態を
定期的に読みに行って適宜状態を確認する方法です。

回路はこんな感じ~
button_sample2.jpg
[ブレッドボード側]
 青ボタン:片方をプラス側、もう片方を抵抗10Kでマイナス側につなぐ
 赤ボタン:片方をプラス側、もう片方を抵抗10Kでマイナス側につなぐ
 LED:マイナス側を抵抗1KΩでマイナス側につなぐ

[Arduino側]
 2番ピン:青ボタンのプラス側につなぐ
 3番ピン:赤ボタンのプラス側につなぐ
 4番ピン:LEDのプラス側につなぐ
 5Vピン:ブレッドボードのプラス側につなぐ
 GNDピン:ブレッドボードのマイナス側につなぐ

ソースコードはこんな感じ
#define PIN_NO_BTN_ON 2
#define PIN_NO_BTN_OFF 3
#define PIN_NO_LED 4

void setup() {
  // 1)ボタンは値を読み込む側なのでINPUTで設定
  pinMode(PIN_NO_BTN_ON, INPUT);
  pinMode(PIN_NO_BTN_OFF, INPUT);

  // 2)LEDは値を書き込む側なのでOUTPUTで設定
  pinMode(PIN_NO_LED, OUTPUT);
}

void loop() {
  // 3)ボタンの値を取得するための変数を宣言
  int btn_on_check=0;
  int btn_off_check=0;

  // 4)赤、青の各ボタンの状態を取得
  btn_on_check=digitalRead(PIN_NO_BTN_ON);
  btn_off_check=digitalRead(PIN_NO_BTN_OFF);

  // 5)青ボタン、赤ボタンのどっちが押された(HIGH)かチェック 
  if( btn_on_check == HIGH ) {
    // 6)青ボタンが押されたらLEDをON(HIGH) 
    digitalWrite(PIN_NO_LED, HIGH);
  }else if( btn_off_check == HIGH ) {
 // 7)赤ボタンが押されたらLEDをOFF(LOW)
    digitalWrite(PIN_NO_LED, LOW);
  }
  delay(50);
}


今回はsetup()でピンの設定をINPUT,OUTPUTの両方を使用しました。

[値の読み込み方法]
コメントの1)でボタンなどの値を読み込む側はINPUTを設定しています。
コメントの4)でdigitalRead関数を使ってINPUTに設定した
ピンから接続先ハードウェアの状態を取得しています。
digitalWriteと違って書き込む値がないので引数は読み込むピン番号のみです。

[値の判定方法]
コメントの5)で青・赤ボタンの状態をチェックしています。
チェックにはif文という構文を使います。
基本構文に関してはまた別の機会に紹介しますね[バッド(下向き矢印)]

これでloop()関数にて毎回、青・赤ボタンの状態をチェックしにいき、
状態に応じてLEDの点灯・消灯を行います。
これがポーリング方式でしたぁ~[わーい(嬉しい顔)]

次回は割込み方式でボタンを制御してみたいと思います[手(グー)]

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。