【詳しい状況の説明】
M5Stack Reflective IR モジュールを接続し、アナログ値(analogRead(36))を取得しようとしても 常に 0 のまま になってしまう。
【環境情報】
•使用モジュール:
・M5Stack Basic v2.7
・M5Stack Reflective IR(反射型赤外線センサ)
•開発環境:
・Arduino IDE 2.3.4
・CH9102_VCP_SER_Windows
•使用ボード:M5Core
•配線:
•VCC → 5V(または 3.3V)
•GND → GND
•Analog OUT → GPIO36(VP)
•Digital OUT → GPIO26
【再現可能なコード】
#include <M5Unified.h>
// ピン設定(M5Stack Basic の場合)
#define IR_ANALOG_PIN 36 // 反射強度(アナログ)
#define IR_DIGITAL_PIN 26 // デジタル出力(HIGH/LOW)
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
// ピンの初期設定
pinMode(IR_ANALOG_PIN, INPUT);
pinMode(IR_DIGITAL_PIN, INPUT);
// 画面の初期化
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextSize(2);
M5.Lcd.setTextColor(WHITE);
}
void loop() {
M5.update();
// センサの値を取得
int analogValue = analogRead(IR_ANALOG_PIN);
int digitalValue = digitalRead(IR_DIGITAL_PIN);
// 画面を更新
M5.Lcd.fillScreen(BLACK);
// タイトル
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(3);
M5.Lcd.setCursor(40, 10);
M5.Lcd.print("Unit-Reflective IR");
// 波形アイコン(簡易的な描画)
M5.Lcd.drawFastHLine(50, 60, 60, CYAN);
M5.Lcd.drawFastVLine(80, 50, 20, CYAN);
M5.Lcd.drawFastHLine(80, 70, 60, CYAN);
M5.Lcd.drawFastVLine(110, 50, 20, CYAN);
// アナログ値
M5.Lcd.setTextColor(CYAN);
M5.Lcd.setTextSize(4);
M5.Lcd.setCursor(140, 80);
M5.Lcd.printf("%d", analogValue);
// デジタル出力のラベル
M5.Lcd.drawFastHLine(50, 150, 120, GREEN);
M5.Lcd.drawFastVLine(90, 140, 20, GREEN);
M5.Lcd.drawFastHLine(90, 160, 80, GREEN);
M5.Lcd.drawFastVLine(130, 140, 20, GREEN);
// デジタルのHIGH/LOW 表示
M5.Lcd.setTextSize(4);
if (digitalValue == HIGH) {
M5.Lcd.setTextColor(GREEN);
M5.Lcd.setCursor(140, 170);
M5.Lcd.print("HIGH");
} else {
M5.Lcd.setTextColor(RED);
M5.Lcd.setCursor(140, 170);
M5.Lcd.print("LOW");
}
delay(200);
}
【試したこと】
1.シリアルモニタで確認(ボーレート 115200bps)
・Serial.println(analogRead(36)); を実行
・値が 0 のまま変化しない
2.センサーの前に手をかざしてみた
•アナログ値(0-4095)が変化するか確認
•何も変化なし
3.センサーの配線チェック
•VCC → 5V または 3.3V に正しく接続
•GND → GND に接続
•Analog OUT → GPIO36(ESP32のADCピン) に接続
•配線に間違いなし
4.センサーの電圧測定(マルチメーターでチェック)•VCC-GND 間の電圧:5V(または 3.3V)
•Analog OUT-GND 間の電圧:0V のまま(手をかざしても変化なし)
5.シンプルなコードで動作確認
•analogRead(36) の値が 0 のまま
•analogReadResolution(12); を追加 → 変化なし
•pinMode(36, INPUT); を明示的に設定 → 変化なし
6.デジタル出力(GPIO26)の確認
•digitalRead(26) でチェック → LOW のまま
•センサー自体が反応していない可能性
【相談したいこと】
1.M5Stack Reflective IR の Analog OUT が 0V のままなのは正常なのか?
2.センサーの反射感度(可変抵抗)を調整しても変化がない場合、故障の可能性はあるか?
3.COM3のポートが”LilyGo T-Display”と表示されるのはなぜか、ここが原因か?
💡 同じセンサーを使用している方がいれば、Analog OUT の正常な動作電圧範囲や、手をかざしたときの挙動を教えていただけると助かります!