§3. アナログ信号の入出力(可変抵抗とPWM出力)
ここでは、アナログ信号を扱う方法を学びます。Arduinoを使うと、アナログ信号を読み取ったり、それをもとにLEDの明るさを調整したりできます。この章では、可変抵抗を使ってLEDの明るさを変えるプログラムを作ります。
アナログ信号とデジタル信号
はじめにアナログ信号、デジタル信号について学びましょう。
前回の実験では、スイッチを「押した」「押していない」の2つの状態だけで信号をやりとりしました。このように、2つの値だけで表される信号のことを「デジタル信号」といいます。
今回のテーマは、「どのくらい押したか」という強さを入力できるアナログ信号を扱うことです。
また、LEDについても、前回は「点灯」か「消灯」の2パターンしかありませんでしたが、今回は「明るさ50%」のような中間の明るさを設定できるようにします。
ポイント1
可変抵抗は、「ボリューム」とも呼ばれます。いろいろな形がありますが、基本的には3本の端子があります。
・両端の端子には、0V(GND)と5Vを接続します。
・つまみを回すことで、中央の端子から0V~5Vの間の電圧を取り出せます。
これを使うことで、アナログ信号を簡単に作り出すことができます!
1. 配線をしてみよう
以下の手順で回路を組み立てます:
・電源配線
可変抵抗の両端に5V(プラス)とGND(マイナス)を接続します。
・信号配線
可変抵抗の中央端子(信号線)をArduinoのA0ピンに接続します。
・LED配線
LEDの長い足(アノード)を3番ピンに、短い足(カソード)をGNDピンに接続します。
これで、可変抵抗のつまみを回すと信号が変化し、その信号を使ってLEDの明るさを変えられるようになります。
2. プログラムを書いてみよう
次に、以下のプログラムをArduino IDEに入力してください。
int val = 0; // アナログ信号の値を保存する変数
void setup() {
// 特に初期設定は不要です
}
void loop() {
val = analogRead(A0); // A0ピンのアナログ信号を読み取る
analogWrite(3, val / 4); // 信号値を4で割って3番ピンに出力
delay(100); // 少し待つ
}
3. プログラムの意味を解説
・analogRead()関数
指定したピン(ここではA0ピン)のアナログ信号を読み取ります。読み取った
値は0~1023の範囲で取得されます。
・analogWrite()関数
指定したピンにPWM信号(疑似アナログ信号)を出力します。出力値は0~255
の範囲です。
・値の変換
val / 4の部分は、アナログ信号(0~1023)をPWM信号(0~255)の範囲に変
換するための処理です。
4. 実行してみよう
Arduinoをパソコンに接続し、プログラムを書き込みます。
可変抵抗のつまみを回してみましょう。
つまみを回すとLEDの明るさが変わるはずです!
ポイント2
・PWM信号とは?
Arduinoのデジタルピンでは、PWM(Pulse Width Modulation: パルス幅変
調)という方法で疑似アナログ信号を作り出します。例えば、LEDの明るさを調
整したり、モーターの速度を制御したりするときに使います。
・ピンの制限
PWM信号を出力できるピンは限られています(Arduinoでは「~」マークがつい
た3, 5, 6, 9,10, 11番ピン)。
これで、アナログ信号を使ったLEDの明るさ調整プログラムが完成です!
私が代表を務める山形県のジオアルピーヌ合同会社では、多様な回路の設計および試作製造を承っております。
企業様向けのサービスはもちろん、学校教材としての電子回路設計・製作にも対応しております。
さらに、「ロボット」を例に挙げれば、回路設計や機械設計、部品調達からパッケージングまで、ワンストップでサポートいたします。
まずは、弊社のホームページよりお気軽にお問い合わせください。皆さまからのご連絡を心よりお待ちしております(^-^