今回はGroveモジュールのポテンショメータをArduinoで使ってみます。ポテンショメータはいわゆる可変抵抗で、スライダーの位置によって抵抗値が変化します。その変化に応じて変わる電圧値をマイコンで測定するわけですが、電圧値の測定にはアナログ入力であるADコンバーターを使います。ADコンバーターはマイコンを使った電子工作でよく使うものなので、初心者の人には参考になるかと思います。今回は、ADコンバーターで測定した値をLCDに表示してみます。
サンプルプログラム
今回、書き込むプログラムはこちら。ポテンショメータの値を読み取って、その値をLCDに表示するプログラムです。ArduinoのADコンバーターは10ビットなので、計測される値の範囲は0~1023(210-1)になります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <Wire.h> #include "rgb_lcd.h" rgb_lcd slcd; int adcPin = A2; // select the input pin for the potentiometer int adcIn = 0; // variable to store the value coming from the sensor void setup() { slcd.begin(2, 16); slcd.setRGB(255, 255, 255); // background color } void loop() { slcd.clear(); slcd.setCursor(0,0); slcd.print("The value:"); adcIn = analogRead(adcPin); slcd.setCursor(0,1) ; slcd.print(adcIn, DEC); delay(500); } |
Groveシールドには4つのADコンバーター(A0, A1, A2, A3)がありますが、今回はA2ポートに接続しました。
実際に動かした映像はこちら。
プログラムの簡単な説明
Grove LCDを使用するので「Wireライブラリ」と「rgb_lcdライブラリ」を使用します。詳しくは以前の投稿を参照してください。
|
1 2 |
#include <Wire.h> #include "rgb_lcd.h" |
Grove LCDのオブジェクト(slcd)を作成したあと、アナログ入力のピン(int adcPin = A2)の定義と、読み取ったアナログ値を保存する変数(int adcIn)の宣言をしています。
|
4 5 6 |
rgb_lcd slcd; int adcPin = A2; // select the input pin for the potentiometer int adcIn = 0; // variable to store the value coming from the sensor |
初期化関数setup()ではGrove LCDを使うための処理をしています。これも以前の投稿を参考にしてください。
|
8 9 10 11 12 |
void setup() { slcd.begin(2, 16); slcd.setRGB(255, 255, 255); // background color } |
ループ関数loop()では、LCDをクリアした後、1行目に「The value: 」と表示しています。その後、アナログ入力値を読み取ったあと、その値をLCDの2行目に表示しています。最後に500ms待ち時間を設けています。
|
14 15 16 17 18 19 20 21 22 23 |
void loop() { slcd.clear(); slcd.setCursor(0,0); slcd.print("The value:"); adcIn = analogRead(adcPin); slcd.setCursor(0,1) ; slcd.print(adcIn, DEC); delay(500); } |
さいごに
今回、ポテンショメータを使ったADコンバーターの使い方の説明でした。誰かのお役に立てば幸いです。
- 投稿タグ
- マイコン・電子工作