Arduinoでボタンの制御(ポーリング方式編) [Arduino入門編]
おはようございます。
今日はArduinoを使ってボタンの制御を行っていきます。
ボタンの制御方法は以下の2種類があります。
1)ボタンの状態をArduinoから確認しに行く方法
2)ボタンが押されたらArduinoに通知してもらう方法
組込み用語としては前者をポーリング方式、
後者を割込み方式と言ったりします。
今回は前者のポーリング方式編です。
ポーリング方式はArduino側からハードウェア(今回はボタン)の状態を
定期的に読みに行って適宜状態を確認する方法です。
回路はこんな感じ~
[ブレッドボード側]
青ボタン:片方をプラス側、もう片方を抵抗10Kでマイナス側につなぐ
赤ボタン:片方をプラス側、もう片方を抵抗10Kでマイナス側につなぐ
LED:マイナス側を抵抗1KΩでマイナス側につなぐ
[Arduino側]
2番ピン:青ボタンのプラス側につなぐ
3番ピン:赤ボタンのプラス側につなぐ
4番ピン:LEDのプラス側につなぐ
5Vピン:ブレッドボードのプラス側につなぐ
GNDピン:ブレッドボードのマイナス側につなぐ
ソースコードはこんな感じ
今回はsetup()でピンの設定をINPUT,OUTPUTの両方を使用しました。
[値の読み込み方法]
コメントの1)でボタンなどの値を読み込む側はINPUTを設定しています。
コメントの4)でdigitalRead関数を使ってINPUTに設定した
ピンから接続先ハードウェアの状態を取得しています。
digitalWriteと違って書き込む値がないので引数は読み込むピン番号のみです。
[値の判定方法]
コメントの5)で青・赤ボタンの状態をチェックしています。
チェックにはif文という構文を使います。
基本構文に関してはまた別の機会に紹介しますね
これでloop()関数にて毎回、青・赤ボタンの状態をチェックしにいき、
状態に応じてLEDの点灯・消灯を行います。
これがポーリング方式でしたぁ~
次回は割込み方式でボタンを制御してみたいと思います
今日はArduinoを使ってボタンの制御を行っていきます。
ボタンの制御方法は以下の2種類があります。
1)ボタンの状態をArduinoから確認しに行く方法
2)ボタンが押されたらArduinoに通知してもらう方法
組込み用語としては前者をポーリング方式、
後者を割込み方式と言ったりします。
今回は前者のポーリング方式編です。
ポーリング方式はArduino側からハードウェア(今回はボタン)の状態を
定期的に読みに行って適宜状態を確認する方法です。
回路はこんな感じ~
[ブレッドボード側]
青ボタン:片方をプラス側、もう片方を抵抗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の点灯・消灯を行います。
これがポーリング方式でしたぁ~
次回は割込み方式でボタンを制御してみたいと思います
コメント 0