Open GigiG62 opened 1 year ago
Looks like the default I2C pins are used internally on ESP32-Cam. You can select alternate pins with bool begin(int sda=-1, int scl=-1, uint32_t frequency=0);
.
Try changing this:
SSD1306AsciiWire oled;
void setup() {
Wire.begin();
Wire.setClock(400000L);
To:
SSD1306AsciiWire oled;
// select your pin choice here
#define I2C_SDA 14
#define I2C_SCL 15
void setup() {
Wire.begin(I2C_SDA , I2C_SCL , 400000L);
The ESP32 has two I2C ports.
You can use the second port like this
SSD1306AsciiWire oled(Wire1);
// select your pin choice here
#define I2C_SDA 14
#define I2C_SCL 15
void setup() {
Wire1.begin(I2C_SDA , I2C_SCL , 400000L);
I compiled the above but didn't test them on an ESP32. Let me know if this works. Its been years since I used an alternate port.
It works just fine! Thanks Bill. For my project, the ESP32-Cam pins are all used (Camera, SD and two external sensors) so I set the only two remaining free pins, RX and TX (1 and 3 on ESP32), as SDA and SCL. After uploading the firmware to the board, they can be used as I2C pins. Thanks again.
No the SD1306 controller only supports up to 128x64.
Hi, is it possible to initiate the oled.begin on pins different from the hardware i2c pins? I'm trying to use the library on a ESP32-Cam