プロジェクト11:ボリュームで電圧制御
このプロジェクトで学ぶこと: ポテンショメーター(可変抵抗)を回してアナログ入力の値を変化させ、
map()関数でその値を別の範囲に変換する方法を学びます。
完成イメージ
[ノブを回すとLEDの明るさが変化する動画を挿入]
必要な部品
| 部品名 | 数量 |
|---|---|
| Arduino Uno R3 | 1 |
| ポテンショメーター(可変抵抗ノブ) | 1 |
| 赤色LED | 1 |
| 抵抗 220Ω | 1 |
| ブレッドボード | 1 |
| ジャンパー線 | 数本 |
回路図と配線
[回路図画像を挿入]
配線手順
- ポテンショメーターの 左端ピン をGNDに接続する
- ポテンショメーターの 右端ピン を5Vに接続する
- ポテンショメーターの 中央ピン(ワイパー) をArduinoの A0ピン に接続する
- LEDのアノードを220Ω抵抗を通じて 9番ピン(PWM) に、カソードをGNDに接続する
Arduinoスケッチ(プログラム)
// ポテンショメーターでLEDの明るさを制御
const int POT_PIN = A0;
const int LED_PIN = 9;
void setup() {
Serial.begin(9600);
}
void loop() {
int potValue = analogRead(POT_PIN); // 0〜1023を読み取る
// analogReadの0〜1023をanalogWriteの0〜255に変換
int brightness = map(potValue, 0, 1023, 0, 255);
analogWrite(LED_PIN, brightness); // LEDの明るさに反映
Serial.print("ノブ: ");
Serial.print(potValue);
Serial.print(" 明るさ: ");
Serial.println(brightness);
delay(50);
}
コードのポイント解説
map(値, 入力最小, 入力最大, 出力最小, 出力最大) ある範囲の値を別の範囲にスケーリングします。analogReadの0〜1023をanalogWriteの0〜255に変換するときに非常に便利です。センサー値を角度・速度・音量などに変換するとき頻繁に使います。
ポテンショメーターの仕組み 内部には一定の抵抗体があり、ノブ(ワイパー)が端から端までの位置によって、引き出す電圧が0V〜5Vの間で変化します。構造上は電圧分割回路と全く同じです。
動作確認
- スケッチをアップロードする
- ノブを左右に回すとLEDの明るさが変われば成功
- シリアルモニタで数値の変化を確認してみましょう
このプロジェクトで学んだこと
map()関数: 数値の範囲を別の範囲に変換するスケーリング処理を習得しました- ポテンショメーターの原理: アナログノブが電圧を変化させる仕組みを理解しました
- 入出力の連動: アナログ入力をリアルタイムにアナログ出力に反映させる応用力がつきました
次のプロジェクト「超音波測距センサー」では、時間の計測で距離を算出する方法を学びます。
深掘り:技術の背景と社会への広がり
ポテンショメーターの歴史:ラジオのボリュームから
ポテンショメーターは1800年代にホイートストンブリッジ(精密な電気抵抗測定回路)の部品として使われていたのが起源です。民生品としての普及は1920〜30年代のラジオ受信機で、音量・チューニングをアナログノブで調整するために広く使われました。「音量(ボリューム)を上げる」という日常的な行為が、この部品の応用そのものです。デジタル化が進んだ現在も、オーディオ機器・楽器・医療機器など、アナログの操作感が求められる分野で現役です。
ヒューマンインターフェースと操作性の研究
産業用機械や航空機のコックピットでは、デジタル入力よりもアナログノブやレバーの方が操作ミスが少ないとする研究があります。人間が手の感覚(触覚フィードバック)を通じて精密なコントロールを行う能力は、デジタルスクリーンのタッチ操作より高い場合があります。近年の家電・自動車・医療機器設計では、物理的なノブとデジタル制御を組み合わせたハイブリッドUI設計が注目されており、ポテンショメーターとArduinoの組み合わせはその原型と言えます。
← プロジェクト10:サーミスタ | 全プロジェクト一覧 | 次のプロジェクト:超音波測距センサー →

