Software i2c
GigiG62 opened this issue · 4 comments
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
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.