ESP32でanalogReadをしたことがないことに気づいたので、調べてやってみました。ついでに照度センサーの値の読み取りも行いました。
1:ESP32でanalogReadする方法
結論から言うと、以下のようにArduinoUnoなどの時と同じような記述でできます。
int PIN_NUM = 25;
int reading = analogRead(PIN_NUM);
ただし読み取り値は0〜1023ではなく0〜4096で、入力電圧の範囲は0〜3.3Vのようです。
またどのピンでもanalogReadできるわけではないらしく、ざっと試してみたところ以下の図の「ADCと記述のあるピンのみanalogReadできる」ようです。
(※ちゃんと検証したわけではないので、間違っている可能性もあります)
以上のいくつか注意点はありますが、ESP32でもanalogReadができることがわかりました。
2:ESP32で照度センサーを使ってみる
フォトICダイオードS9648(5個入): センサ一般 秋月電子通商 電子部品 ネット通販
この照度センサーの値をanalogReadで読み込みます。プログラムは以下の通りです。
・ESP32_photoIC
const int voutPin = 25;
const int VOLT = 3.3;
const int ANALOG_MAX = 4096;
void setup() {
Serial.begin(115200);
}
void loop() {
int reading = analogRead(voutPin);
float voltage = ((long)reading * VOLT * 1000) / ANALOG_MAX;
Serial.print(voltage);
Serial.print(" mV, ");
float microamp = (voltage * 1000) / 1000;
Serial.print(microamp);
Serial.print(" uA, ");
float lx = microamp / (290 / 100);
Serial.print(lx);
Serial.println(" lx");
delay(1000);
}
回路図は参考記事の「Arduinoで遊ぼう - フォトICダイオード S9648-100 を使って明るさを求める」の回路を参考にして繋いでください。
シリアルモニタを立ち上げると1秒ごとに読み取った値が表示されます。センサーの上を手で覆うなりすると数値が低く変動するはずです。
以上、ESP32でanalogReadする方法でした。
・参考記事
・Arduino 言語における ESP-WROOM-32 の入出力関数 | なんかしてるえかいくん
・Arduinoで遊ぼう - フォトICダイオード S9648-100 を使って明るさを求める - なんでも作っちゃう、かも。