analogRead()
ADC変換を実行するために使用されます。
書式
uint16 analogRead(uint8 pin)
ピンからアナログ値を読み出します。この機能はADC変換時にブロックされ、12ビットの分解能を持ちます。
ピンのモードはINPUT_ANALOGに設定する必要があります。
引数
pin : 読み込むピン
戻り値
変換された電圧(0〜4095の範囲)(すなわち、12ビットADC変換)。
解説
指定されたアナログピンから値を読み込みます。 Mapleボード(Arduino STM32対応ボード)には、16チャネル、12ビットのアナログ/デジタルコンバータが含まれています。 これは、コンバータが0〜3.3Vの入力電圧を0〜4095の整数値にマッピングすることを意味します。しかし、多くの要因が完全な精度と精度を得るのを妨げています。 詳細については、ADCを参照してください。 ピンを使うanalogRead()を呼び出す前に、まずそのピンをpinMode()を使用してアナログ入力用に構成する必要があります。 これは一度だけ行う必要があるので、通常はsetup()で実行されます。 引数についての解説
pinパラメータは、読み出すアナログ入力ピンの番号です。 アナログ/デジタル変換をサポートするピンはボードによっては、シルクスクリーン上の番号の下にAIN等が表示されています。 これらのピン番号は、ボードADDボード固有の配列でプログラムで使用できます。 ボード上でアナログ/デジタル変換が可能なピンの数は、BOARD_NR_ADC_PINS定数によって与えられます。 これらの値は、Board Hardware Documentationページの各ボードについて文書化されています。 注意
Maple Rev 5のシルクスクリーン上のピン3はAINとマークされていません。 ただし、アナログ入力ピンとして機能します。
アナログ入力ピンが何かに接続されていないと、analogRead()によって返された値は、さまざまな理由(他のアナログ入力の値、ボードへの手の近さなど)によってランダムに変動します。
利用しているArduino STM32対応ボードで利用出来るアナログ入力ピンが分からない場合、ドキュメント「ピン割り付けを調べる」を参照するよよいかもしれません。 利用例
code:sample.ino
int analogPin = 3; // Potentiometer wiper (middle terminal) connected
// to analog pin 3. outside leads to ground and +3.3V.
// You may have to change this value if your board
// cannot perform ADC conversion on pin 3.
int val = 0; // variable to store the value read
void setup() {
pinMode(analogPin, INPUT_ANALOG); // set up pin for analog input
}
void loop() {
val = analogRead(analogPin); // read the input pin
SerialUSB.println(val); // print the value, for debugging with
// a serial monitor
}
Arduinoとの互換性
Arduinoボードには、入力電圧範囲が0V〜5Vの6チャンネル(MiniおよびNanoでは8チャンネル、Megaでは16チャンネル)、10ビットアナログ/デジタルコンバータが含まれています。 これは、入力電圧を0〜5ボルト(メープルの0V〜3.3Vの範囲よりも大きい)から0〜1023(0〜4095のメープルの範囲よりも小さい)の整数値にマッピングすることを意味します。
これは、Arduino基板上の単位当たり5ボルト/ 1024ユニットまたは0.0049ボルト(4.9mV)の読み取り間の理論分解能をもたらし、これはメープルの0.0008ボルト(0.8mV)よりも大きく、それほど正確ではありません。
あなたのプログラムがArduinoスタイルの10ビットADCを期待している場合は、Maple(Arduino STM32)の読み値を2だけ右にシフトすることで対応出来ます。
code:sample2.ino
// right shift means that the result will be between 0 and 1023;
// be aware that you're losing a lot of precision if you do this
int adc_reading = analogRead(pin) >> 2;
Arduinoでは、analogReference()関数を使用して入力範囲と解像度を変更できます。 ハードウェアの制限のため、この機能はMaple(Arduino STM32)およびMaple RET6 Editionでは使用できません。 あなたの入力が0V〜3.3Vとは異なる電圧範囲にある場合、analogRead()を使用する前に、その範囲内に入力する必要があります。 詳細については、ADCリファレンスを参照してください。 関連項目
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。