WeMosを使ってみる

AnalogRead


今までずっと、WeMosのアナログ入力の最大値は1Vだとばっかり思い込んでいました。
プロダクトのページを見たら「1 analog input(3.2V max input)」としっかり明記されていました。
素のESP-12は最大1Vまでしか入力できないので、少し調べてみました。
こ ちらにWeMosの回路図が公開されています。
こちらに NodeMCUの回路図が公開されています。
どちらも、A0ポートからの入力を220Kと100Kの抵抗で100/320に分圧して、ESP-12のADCポートに入れています。
ESP-12のアナログ入力で調べてみると、analogRead()ではなく system_adc_read()を使うような記事がありましたので確認してみました。
3.3Vを入力とした可変抵抗の出力(1V/2V/3V)をそのままA0ポートに接続しています。

まずは system_adc_read()を使ったスケッチです。
// WeMos Analog Read Sample
extern "C" {
#include "user_interface.h"
}
#define RefV 3.3
 
void setup() {
 Serial.begin(9600);
}

void loop() {
 uint ADC_Value;
 float voltage;
 
 ADC_Value = system_adc_read();
 Serial.print("ADC_Value:");
 Serial.print(ADC_Value);
 Serial.print(" ");
 voltage=float(ADC_Value)/1023.0*RefV;
 Serial.print("voltage:");
 Serial.println(voltage);
 delay(1000);
}









次に analogRead()を使ったスケッチです。
// WeMos Analog Read Sample
#define RefV 3.3
 
void setup() {
 Serial.begin(9600);
}

void loop() {
 uint ADC_Value;
 float voltage;

 ADC_Value = analogRead(0);
 Serial.print("ADC_Value:");
 Serial.print(ADC_Value);
 Serial.print(" ");
 voltage=float(ADC_Value)/1023.0*RefV;
 Serial.print("voltage:");
 Serial.println(voltage);
 delay(1000);
}

結果は同じになりました。
アナログ入力は1ポートしかありませんが、それなりの精度で動きます。

続く...