子供と一緒に始める マイコンプログラム Arduino 入門 ポテンショメータ編 Lesson 12

Arduino-lesson12-00 学習
スポンサーリンク
「子供と一緒に始める マイコンプログラム Arduino 入門 ポテンショメータ編 Lesson 12」

「Arduino」を使ったマイコンプログラミングを子供と一緒に学習するブログ。

少しずつ、子供と一緒に楽しみながら気長にアップしてく予定です。

本日はLesson 12 ポテンショメータ編です。
※いわゆる可変抵抗器のことです。

analogRead()関数の使い方を説明していないことに気づき・・・。

何かの電子部品を使って簡単に説明でないか?と考えました。

そこで思いついたのがポテンショメータです。

 

本Lesson解説で使用しているのはArduino互換品です。

互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

スポンサーリンク

はじめに

ポテンショメータは可変抵抗器です。

ボリュームと呼ばれることもあります。

今回利用するのは回転式のポテンショメータです。

 

私が使用しているものと見た目は異なりますが下記がポテンショメータとなります。

 

Lesson 12目標

「ポテンショメータ」の使い方を理解します。

あわせて、analogRead()関数についても理解します。

そして、電圧値をArduino UNOで測定してみましょう!
※シリアルモニタでモニタしましょう。

 

最後に、本Lessonも、遊ぶというところが一番大事なところです。

 

準備

ではLessonの準備に取り掛かりましょう。

今回も部品は多くないので、すぐに実践に移ることができます。

 

必要なもの

 

使用部品説明

ポテンショメータについて説明していきます。

実は、すでにLesson 09のサーボモータ編で使用しています。

そこで説明しているのですが、おさらいも兼ねてもう一度説明します。

 

ポテンショメータ 実物写真

下の写真が、ポテンショメータです。

今回購入したELEGOO UNO キットに合わせて梱包されています。

ポテンショメータは可変抵抗器です。

ボリュームと呼ばれることもあります。

今回利用するのは回転式のポテンショメータです。

中には抵抗素子が入っています。

端子は全部で3つあります。

抵抗の両端の端子2つと、可変した抵抗値の電圧値を取り出す端子の1つです。

今回は下側2つの端子を電源とGNDに、上側中央の端子をアナログ入力端子につなぎます。

Arduino-lesson09-03

 

手持ちがない方は以下からどうぞ。

見た目は異なりますが使い方は同じです。

なかなか、単品での購入はできないです。

そのため、購入される場合は種類が異なる物が入ったセットをおすすめします。

後々使い勝手が良いです。
※下記は帯電防止ピンセットがついていお得です。

 

ポテンショメータ 原理

ポテンショメータ自体の原理は単純です。

内蔵されている抵抗の両端に電圧をかけた状態でツマミを回すことで抵抗値の比率が変わります。

それによって、端子から取り出せる電圧が変わります。

取り出した電圧はアナログ入力端子に入れることによってデジタル値に変換することで制御信号として利用することができます。

詳しく知りたい方は下記が参考になります。

ボリュームの説明ですが同じです。

ボリューム | マルツオンライン

 

ポテンショメータ使い方

ポテンショメータの中央端子をアナログ入力に接続します。

つないだ端子の情報をanalogRead(pin)関数で読み取ります。

analogRead(pin)は読み取った電圧値を0~1023の整数値を戻り値として返します。

ようするに、読み取った0V~5Vの電圧値を0~1023のデジタル値に変換することができるわけです。

ポテンショメータのツマミを動かすことによって、電圧は変化します。
その変化をanalogRead(pin)関数によってデジタル値に変換するということです。

AD変換するということですね。
※analog to digital converter

 

アナログ入力に関しては下記で詳しく説明しています。

 

実践 回路作成とコード作成

最初に回路図を確認してください。

次に、回路図に合わせて部品を接続します。

最後にコードを書いて、ポテンショメータを動かしていきましょう。

 

Arduinoのピン配置を確認したい方は番外編02を参照してください。

 

回路図

回路図がこちら。

Arduino-lesson12-01

 

こちらがブレッドボード図。
※M-M jumper wireのみで結線できます。

Arduino-lesson12-02

 

回路図は「fritzing」を利用しています。

「fritzing」の使い方は下記を参照してください。

 

接続

下図に示すように、用意した部品を使用して接続しましょう。

部品はポテンショメータのみです。

ブレッドボードを使用していますが、F-M Wireを利用すればブレッドボードなしでも接続できます。

M-M jumper wireを使用してUNOと接続しましょう。

使用するポートは、アナログ入力ピンの「A3」、電源の「5V」、「GND」です。

穴に挿入しづらいときは、ラジオペンチなどを使用してください。

Arduino-lesson12-06

 

コードの書き込み

接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。

本記事のコードを参考に書いてみてください。

実際書いてみた方が慣れるのに良いです。

コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。

 

コマンド説明

新しく出てきたコマンドの説明をしていきます。
※復習も兼ねて、一部以前に説明したコマンドも記載しています。

コマンド説明
float浮動小数点を持つ数値のためのデータ型。
※小数が扱えます。
整数よりも分解能が高いアナログ的な値が必要なときに使用。
使用可能な値の範囲:3.4028235E+38~-3.4028235E+38
※32ビット(4バイト)のサイズ
例 TrigPin変数を不動小数点のデータ型にする。
float TrigPin;
Serial.begin(speed)シリアル通信のデータ転送レートをbpsで指定。
※bpsはビット/秒
speed:転送レート(int)
analogRead(pin)アナログ値を読み取るアナログ入力ピンを指定。
pin:0,1,2,3,4,5のいずれかを指定
例 アナログ入力ピンに3番を指定する。
analogRead(3);

 

サンプルコード

サンプルコードを下記に示します。

※サンプルコード内の計算をfloatを利用しています。
これは計算のオーバーフローを避けるためです。

//sample code lesson12 potentiometer
int analogPin =3; //アナログ入力ピンを3番に設定
int val = 0; //読み取り値の変数設定
float v_convert = 0.0f; //計算値の変数設定、オーバーフローしないようにflaot設定

void setup() {
Serial.begin(9600); //シリアル通信のデータ転送レートを9600bpsで指定。bpsはビット/秒。
}

void loop(){
val = analogRead( analogPin ); //ピンの値を読み取り
v_convert = (float)val / 1023.0f * 5.0f; //読み取った値を電圧に変換、floatで計算

Serial.print( "value / volt : " ); //表示をプリント
Serial.print( val ); //読み取り値を表示
Serial.print( " / " ); //表示をプリント
Serial.println( v_convert ); //計算した電圧値を表示、改行

delay(2000); //2秒ごとに表示させるための遅延
}

 

可変抵抗器の動きで電圧が変わるのをキャプチャーしやすくするためにdelayで2秒の遅延を与えています。

実際には2秒待つ必要はありません。

アナログ入力の読み取りには100マイクロ秒(0.0001秒)要します。
最大の読み取りレートは,1秒間に10000回(1万回)可能です。

 

動作確認

では、さっそく動作を確認していきます。

ポテンショメータをゆっくりと動かしてモニタで電圧値を確認します。

結果はこちら。
※IDEの「ツール」⇒「シリアルモニタ」を開いて確認してください。

つまみ測定値
最小Arduino-lesson12-03
最大Arduino-lesson12-04
ゆくりと回して
キャプチャ
Arduino-lesson12-05

 

可変抵抗器の動きで電圧か変わっているのを読み取れているのがわかります。

これがanalogRead()関数の使い方になります。

これを使えば、ある電圧を読み取って何かをさせるといったことができます。

扇風機をイメージするとわかりやすいでしょうか。

つまみ最小:OFF、つまみ最大:風力最大

といった使いかたができます。

 

下記にわかりやすい動作の解説があります。

動作原理・用途 | ロータリポジションセンサ | 村田製作所
村田製作所の製品情報、ロータリポジションセンサの動作原理・用途をご紹介します。

 

まとめ

今回は以下の内容について理解してもらいました。

今回も項目4の遊ぶことが一番の目標でした。

1.「ポテンショメータ」の使い方を理解する。
2.analogRead()関数について理解する。
3.シリアルモニタで電圧値を読み取る。
4.楽しんで遊ぶ。

 

いかがだったでしょうか。

Lesson 12 ポテンショメータ編はここまで。

ぜひ、みなさんも子供と一緒にやられてみることをお勧めします。

測定するって、なぜかわからないですが楽しいですよね!

疑問点、質問などありましたら気軽にコメントください。

 

次回Lesson 13は「ジョイスティック編」です。

ゲームのコントローラなどに使われています。

ジョイスティックの使い方を理解できれば色々と遊ぶことができそうです。

子供と一緒に始める マイコンプログラム Arduino 入門 ジョイスティック編 Lesson13
「Arduino」を使ったマイコンプログラミングを子供と一緒に学習するブログ。本日はLesson 13 ジョイスティック編です。2軸ジョイスティックを利用してX軸、Y軸、電圧値を読み取ることで2軸ジョイスティックの動作を理解します。ジョイスティックの基本を理解して応用につなげていきましょう!

 

本Lessonで使用しているUNOはAmazonにて購入可能です。

Amazon ベストセラーNo.1
ELEGOO UNO キット レベルアップ  チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用

 

上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。

コメント

タイトルとURLをコピーしました