\ AmazonにてArduino UNO R4 発売中!! /

Arduino 入門 Lesson 12 【ポテンショメータ編】

Arduino-lesson12-00 Arduino入門編
記事に広告(アフィリエイト広告)が含まれています。
スポンサーリンク
子供と一緒に始める マイコンプログラム
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を利用しています。
これは計算のオーバーフローを避けるためです。

//Lesson12 Potentiometer(可変抵抗器)
//https://omoroya.com/

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、つまみ最大:風力最大

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

 

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

SV|ロータリポジションセンサ|センサ|製品検索|村田製作所
村田製作所のロータリポジションセンサの検索結果です。スペック、用途、生産ステータス等から検索可能です。検索条件:SV(ではじまる)…

 

まとめ

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

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

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

 

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

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

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

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

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

 

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

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

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

Arduino 入門 Lesson 13 【ジョイスティック編】(1)
「Arduino」を使ったマイコンプログラミングを子供と一緒に学習するブログ。本日はLesson 13 ジョイスティック編です。2軸ジョイスティックを利用してX軸、Y軸、電圧値を読み取ることで2軸ジョイスティックの動作を理解します。ジョイス…

 

最後に

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

この電子部品の解説をしてほしい!などなどなんでもOKです。

リンク切れ、間違いなどあればコメントいただけると助かります。

 

Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。

 

Arduino入門編で使用しているUNOはAmazonにて購入可能です。

互換品とは言え、Arduinoはオープンソース。

複製して販売するのもライセンス的に問題なし。

 

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

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

 

学習用、遊び用、お試し用には安価な互換品がおすすめです。

 

 

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

 

Amazonでお得に買う方法

Amazonでお得に購入するなら、Amazonギフト券がおすすめです。

現金でチャージするたびに、チャージ額に応じたポイントが付与されます。

最大2.5%!!!(Amazonプライム会員ならさらにお得)

チャージ額(一回分) 一般 プライム会員
5,000円~19,999円 0.5% 1.0%
2,0000円~39,999円 1.0% 1.5%
40,000円~89,999円 1.5% 2.0%
90,000円~ 2.0% 2.5%

さらに、初回チャージで1000ポイントもらえるキャンペーンも実施中!

\Amazonギフト券 1000ポイントキャンペーン/
Amazonチャージ 初回購入で1000ポイントキャンペーン

 

補足情報
コンビニ・ATM・ネットバンクが対象
購入は1円単位で可能

コメント

  1. 小暮友太 より:

    初めまして。大学の課題で初めてArduinoを使っていて、ブログを参考にさせていただいております。とてもわかりやすく、初心者でもできそうな気がしてきます。
    ところで本題なのですが、複数台のポテンションメーター の出力を受け取ることはできるのでしょうか。
    困っているので返信いただけると嬉しいです!!

    • omoroya omoroya より:

      コメントありがとうございます。
      アナログ入力がA0~A5の6個あります。
      単純に読み取りたいだけであれば6個受け取ることが可能です。
      それ以上必要な場合は、一工夫ひつようとなります。

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