Hi, first thanks a lot for the Bela platform and the community. It's a wonderful way for me to get into electronic and to continue to learn more stuff !
I just bought a 128x64 OLED screen 2.4" from Adafruit (https://www.adafruit.com/product/2719) which I'm trying to connect using I2C.
I tried following this topic : https://learn.bela.io/using-bela/bela-techniques/using-an-oled-screen/
and the instructions on how to set the screen in I2C mode here : https://learn.adafruit.com/1-5-and-2-4-monochrome-128x64-oled-display-module/wiring-and-test#i2c-wiring-2788112
First I soldered the back of the screen into I2C mode.
Then I hooked up on my breadboard in the following way :
You can notice I didn't wired the RST pin (unlike shown in the Adafruit tutorial, with the voltage dividing resistors : because I don't yet understand how it works and I've read it would only prevent me from printing sometimes, but it should at least display some noise. Also, as suggested in the Adafruit tutorial I added a 120ยตF capacitor to help smooth the voltage.
Then I grabbed this example (as suggested in the Bela topic on OLED screens) to test it : https://github.com/giuliomoro/O2O
In my case the driver chip is a 1305, so I changed this code
std::vector<Display> gDisplays = {
// use `-1` as the last value to indicate that the display is not behind a mux, or a number between 0 and 7 for its muxed channel number
{ U8G2_SH1106_128X64_NONAME_F_HW_I2C_LINUX(U8G2_R0, gI2cBus, 0x3c), -1},
// add more displays / addresses here
};
for this code
std::vector<Display> gDisplays = {
// use `-1` as the last value to indicate that the display is not behind a mux, or a number between 0 and 7 for its muxed channel number
{U8G2LinuxI2C(U8G2_R0, gI2cBus, 0x3c, u8g2_Setup_ssd1305_i2c_128x64_adafruit_f), -1},
// add more displays / addresses here
};
But when I try to run the example, nothing happens on the screen and I got the following error messages :
Running project ...
opened i2c file 3
set i2c addr 3c
can't write cmd 40: Remote I/O error
can't write cmd 40: Remote I/O error
can't write cmd 40: Remote I/O error
can't write cmd 0: Remote I/O error
can't write cmd 0: Remote I/O error
... // repeats continuously
When I try to check the I2C address on the cli, sometimes the adress is there, sometimes not (I didn't changed anything between the commands, just waited a few seconds) :
I'm really new to these topics so I'm a bit lost I must admit " would anyone have an idea on what could have I done wrong ?
Just for the context :
- I checked the pins of my screen with a multimeter, no issues
- I use the multiplexer in my project, so I wanna try with it directly
- My bela runs on v0.3.8g
- Because of the multiplexer I had to add a 3.3V 10k pull-ups on the SPI pins as suggested in various forum posts