ポテンショメーターを使い、LEDの点滅を制御します。
この例では、可変抵抗器(ポテンショメーターあるいはフォトレジスター)を使います。Arduinoボードの一つのアナログ入力からその値を読み、内蔵LEDの点滅間隔を変更させます。抵抗のアナログ値は電圧として読み取ります。これはアナログ入力がそのように動作するからです。
このチュートリアルでは、Arduino UNO R4 WiFiボードのアナログデジタル変換器(ADC)の分解能を変更する方法を学びます。デフォルトでは、分解能は10ビットに設定されています。アナログ入力の精度を改善するために、12ビット(0-4095)と14ビット(0-16383)の分解能に変更することができます。
必要なハードウェア
- Arduinoボード
- ポテンショメーター あるいは
- 10kΩのフォトレジスターと10kΩの抵抗
- 内蔵LED(13番ピン) あるいは
- 220Ωの抵抗と赤色LED
回路
ポテンショメーターを使う場合
フォトレジスターを使う場合
3本の電線をArduinoボードに接続します。1本目は、ポテンショメーターの外側のピンとGNDを接続します。2本目は別の外側のピンと5Vを接続します。3本目は、アナログ入力0とポテンショメーターの真ん中のピンを接続します。
この例では、13番ピンに接続されているボードの内蔵LEDを利用できます。追加のLEDを使うには、LEDの長い方の足(プラス側、あるいはアノード)をデジタルピンの13番と、220Ωの抵抗を直列に接続し、短い方の足(マイナス側、あるいはカソード)を13番ピンの横にあるGNDに接続します。
フォトレジスターの回路では、分圧抵抗を使い高インピーダンスのアナログ入力で電圧を測定できるようにします。これらの入力はほとんど電流を引き込みません。このため、オームの法則により、5Vに接続されている抵抗のもう一方の端で測定される電圧は、抵抗の値に関係なく常に5Vです。フォトレジスターの値に比例した電圧を取得するには、分圧抵抗が必要です。この回路では可変抵抗と固定抵抗を使い、測定点は抵抗の中間地点です。測定電圧は以下の公式に従います。
$$V_{out} = V_{in} * (R2 / (R1 + R2))$$ここで、Vinは5Vで、R2は10kΩ、R1はフォトレジスターの値で、暗い場合は1MΩから、日中(10ルーメン)で10kΩ、強い光や太陽光下(100ルーメン以上)で1kΩ以下です。
回路図
ポテンショメーターを使う場合
フォトレジスターを使う場合
コード
このスケッチの最初の方で、変数sensorPinをアナログピンの0に設定します。これは、ポテンショメーターを接続したピンです。ledPinを13番ピンに設定します。もう一つ別の変数sensorValueを作成し、センサーから読んだ値を格納します。
analogRead()は、入力の電圧範囲である0Vから5Vを0~1023のデジタル値に変換します。これは、マイクロコントローラー内のアナログ・デジタル変換器(ADC)という回路で実行されます。
ポテンショメーターのつまみを回し、ポテンショメーターの中央ピン(ワイパー)の両側の抵抗値を変更します。これにより中央ピンと両端のピンの間の相対抵抗が変更され、アナログ値として異なる電圧が取得されます。つまみを片側に全て回すと、中央ピンとGNDに接続されているピンとの間の抵抗が0になります。このとき、中央ピンの電圧は0Vになり、analogRead()は0を返します。つまみを反対側に全て回すと、中央ピンと5Vに接続しているピンとの間の抵抗が0になります。このとき、中央ピンの電圧は5Vになり、analogRead()は1023を返します。その間では、analogRead()は、0と1023の間の値を返し、その値はピンにかかる電圧に比例します。
sensorValueに格納されている値は、点滅周期を決めるdelay()の設定に使われます。値が大きくなると周期は長くなり、値が小さくなると終期は短くなります。値は繰り返しの最初に読まれるので、点灯・消灯の時間はいつも同じです。
|
|
さらに学ぶ
付属のスケッチ例に、さらに多くの基本的なチュートリアルがあります。
Arduinoプログラミング言語の詳細を集めた、言語リファレンスを調べることもできます。
Last revision 2015/07/28 by SM
オリジナルのページ
https://docs.arduino.cc/tutorials/uno-rev3/AnalogInput/
最終更新日
August 16, 2026