Search code examples
carduinoesp32

ESP32 Analog pin not reading when bluetooth is connected


I have been using ESP32 and writing code in Arduino. However, when I enable Bluetooth, GPIO4 and GPIO15 does not work to read analog inputs. I have connected IR LED's on both pins and reading analog signals. If Bluetooth code is not used, ESP32 is reading the analog signals and displaying it on serial monitor. If the below Bluetooth code is used, the reading is shown as 255 on both pins (reading 5v. Yes, they are 5v for now and will be level shifted to 3.3v).

Can someone please check and suggest a solution?

I have switched the sensors, removed them and whatever I do, the reading is the same when Bluetooth is read

Bluetooth code:

void init_bluetooth() {
      ESP_BT.begin("EKA Robot"); //Name of your Bluetooth Signal
      Serial.println("Bluetooth Device is Ready to Pair");
}

IR code:

    // Read Infrared LED on GPIO4. Similar function exists to read GPIO15
    int readIR() {
      int sensorValue = analogRead(oaPinL);
      delay(5);
      sensorValue = map(sensorValue, 0, 4095, 0, 255);
      return (sensorValue);
    }

I expect to read the sensor values. However, all it shows is 255. Does it mean it is somehow pulled high?


Solution

  • There are two A/D converters in the ESP32 chip, ADC1 and ADC2. ADC2 pins can not be used when Wi-Fi or Bluetooth is used. Pins connected to ADC1 do work. These are GPIO32-36 and GPIO39.