説明
analogReadで、アナログ入力を行う場合の基準電圧を引数 type で設定します。
analogReadで読み取った電圧が、ここで指定した基準電圧と同じ場合、analogReadで読み取るデータは1023を返します。
※EXTERNAL指定する場合、AREFピンに接続される電圧値はボード電圧の上下に影響されない電圧を供給する必要があります。
書き方 | analogReference(type) |
戻り値 | なし |
引数 | type ボードによって異なる(下記を参照) |
Arduino AVRボード(Uno、Mega、Leonardoなど)
type | 内容 |
---|---|
DEFAULT | ボード動作電圧(5Vもしくは3.3V) |
INTERNAL | ATmega168またはATmega328Pでは1.1V ATmega32U4およびATmega8では2.56V Arduino Megaでは使用不可 |
INTERNAL1V1 | Arduino Mega専用 内蔵1.1V |
INTERNAL2V56 | Arduino Mega専用 内蔵2.56V |
EXTERNAL | AREFピンに印加される電圧(0〜5Vのみ)が基準として使用されます |
Arduino SAMDボード(Zeroなど)
type | 内容 |
---|---|
AR_DEFAULT | 3.3Vのデフォルトのアナログリファレンス |
AR_INTERNAL | 組み込みの2.23Vリファレンス |
AR_INTERNAL1V0 | 組み込みの1.0Vリファレンス |
AR_INTERNAL1V65 | 内蔵1.65Vリファレンス |
AR_INTERNAL2V23 | 組み込みの2.23Vリファレンス |
AR_EXTERNAL | AREFピンに印加された電圧が基準として使用されます |
Arduino megaAVRボード(Uno WiFi Rev2)
type | 内容 |
---|---|
DEFAULT | 内蔵0.55Vリファレンス |
INTERNAL | 内蔵0.55Vリファレンス |
VDD | ATmega4809のVdd。Uno WiFiRev2で5V |
INTERNAL0V55 | 内蔵0.55Vリファレンス |
INTERNAL1V1 | 内蔵1.1Vリファレンス |
INTERNAL1V5 | 内蔵1.5Vリファレンス |
INTERNAL2V5 | 内蔵の2.5Vリファレンス |
INTERNAL4V3 | 内蔵4.3Vリファレンス |
EXTERNAL | AREFピンに印加される電圧(0〜5Vのみ)が基準として使用されます |
Arduino SAM Boards (Due)
type | 内容 |
---|---|
AR_DEFAULT | 3.3Vのデフォルトのアナログリファレンス。これは、Dueでサポートされている唯一のオプションです。 Arduino mbed対応ボード(Nano 33 BLEのみ): Arduino mbed対応ボードプラットフォーム、またはArduino nRF528xボード(Mbed OS)プラットフォームバージョン1.1.6以降を使用している場合に使用可能 |
AR_VDD | デフォルトの3.3Vリファレンス> |
AR_INTERNAL | 内蔵0.6Vリファレンス |
AR_INTERNAL1V2 | 1.2 Vリファレンス(2倍ゲインの内部0.6 Vリファレンス) |
AR_INTERNAL2V4 | 2.4 Vリファレンス(4倍ゲインの内部0.6 Vリファレンス) |
注意
引数 type を変更後は、analogReadの戻り値が何回か不正確になることがあるので安全のために何回か空読みをしておく。
外部基準電圧は、0Vよりも低い、もしくは、5Vよりも高い電圧をAREFピンに入力すると、マイクロコントローラを壊す可能性があるので気を付けること。
AREFピンの外部参照電圧を利用するときは、必ず analogRead を呼ぶ前に本関数でEXTERNALに設定すること。そうしないと、内部で発生させている参照電圧とAREFピンとがショートし、Arduinoボードのマイクロコントローラを破壊することがある。
5kΩの抵抗を通して外部基準電圧をAREFに接続すると、外部の参照電圧と内部を切り替えながら使えるようになります。AREFピンには内部32K抵抗があるため、抵抗はリファレンスとして使用される電圧を変更することに注意してください。
この2つは分圧器として機能するため、たとえば、抵抗を介して2.5Vを印加すると、AREFピンで2.5 * 32 /(32 + 5)= 〜2.2Vになります。
クムクムロボットロボットでは
クムクムロボットロボット(R3J)では、電池やUSBからの5VをDCDCコンバータを使い安定した3.3Vに変換した電圧をAREFに接続することで安定した基準電圧を外部から供給しています。
またそのため、電池電圧は抵抗によって分圧した2.5Vをアナログピンに接続し analogReadで電圧監視をしています。