ESP32 (3) analogRead

Contents

目的

12bit A/Dは複数内蔵するので、活用したい。

スケッチはArduino Unoと同じような記述でできる。ただし読み取り値は0〜1023ではなく0〜4096で、入力電圧の範囲は0〜3.3Vのようだ。

結線

スケッチ

const int voutPin = 2;
const int VOLT = 3.3; // 3.3Vを電源とした場合
const int ANALOG_MAX = 4096; // ESP32の場合

void setup() {
  Serial.begin(115200);
}

void loop() {
  // R1の電圧を取得
  int reading = analogRead(voutPin);

  // AD値をmVに変換
  float voltage = ((long)reading * VOLT * 1000) / ANALOG_MAX;

  Serial.print(voltage);
  Serial.println(" mV, ");
  
  delay(1000);
}

シリアルモニタを立ち上げると1秒ごとに読み取った値が表示。

結果

電池の電圧を測ると、概ねに正常範囲の値出るが、値は常に変化するので、どうして?

AnaRead.png

参考

  1. http://rikoubou.hatenablog.com/entry/2017/06/29/135819 — 【ESP32】analogReadする方法