Libreria Adafruit para la pantalla SSD1306 128x64 de 4 pines ( i2c )

Saludos a todos.. y espero la comunidad pueda ayudarme con esto

tengo esta pantalla

En cierto modo o nose si es por mi poca experiencia pero encuentro la libreria "u8g" algo limitada... y me gustaria usar esta pantalla con la libreria Adafruit.

He estado intentando usar la libreria Adafruit con mi pantalla SSD1306 de 128x64 (i2c) obviamente de 4 pines GND-VCC-SCL-SDA como se ve en la imagen.... y usando el Codigo de ejemplo de la libreria llamado ssd1306_128x64_i2c.ino ya configure el Ancho de pantalla como solicita el codigo:

#define SSD1306_I2C_ADDRESS 0x3D //<<< Seleccion de 128x64
// Address for 128x32 is 0x3C
// Address for 128x64 is 0x3D (default) or 0x3C (if SA0 is grounded)

#define SSD1306_128_64 //<<< Seleccion de 128x64
// #define SSD1306_128_32
// #define SSD1306_96_16

Compilo el codigo y no arroja errores ni nada parecido pero igual en la pantalla no muestra nada y con la libreria "u8g" si trabaja sin problema..

entonces me pregunto q estoy haciendo mal...

Podrian ayudarme con esto?

Gracias de antemano...

Prueba esto:

When we loaded Adafruit library we need to modify it.

Go to the folder where Arduino libraries are loaded,

C:\Users<em>your pc name\Documents\Arduino\libraries\Adafruit_SSD1306

On this folder, find Adafruit_SSD1306.h file, click on it or press F2 to rename, rename it as Adafruit_SSD1306.h.txt then find this sentences in the middle of the codes, seems like:

//#define SSD1306_128_64 #define SSD1306_128_32 //#define SSD1306_96_16

Comment the 32, and uncomment the 64 as

#define SSD1306_128_64 // #define SSD1306_128_32 // #define SSD1306_96_16

CTRL + S to save this text. Go to the library folder and find Adafruit_SSD1306.h.txt to rename as Adafruit_SSD1306.h then return to Arduino IDE.

De aquí:

Amigo como notaras en mi pregunta... esos pasos ya los habia realizado... pero de todos modos gracias

adicionalmente ya consegui cual fue el problema ya pude hacer funcional la libreria...

era la direccion de la oled;

en el codigo de ejemplo dice lo siguente....

display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // initialize with the I2C addr 0x3D (for the 128x64)

es decir initiar el I2C con la direccion 0x3D para la OLDE 128x64

y en la libreria "Adafruit_SSD1306.h" dice esto;

#define SSD1306_I2C_ADDRESS 0x3D // 011110+SA0+RW - 0x3C or 0x3D
// Address for 128x32 is 0x3C
// Address for 128x64 is 0x3D (default) or 0x3C (if SA0 is grounded)

Osea:

para la pantalla de 128x32 usar la direccion 0x3C
y para la pantalla de 128x64 usar la direccion 0x3D (por defecto) o 0x3C (si SA0 esta a Tierra)

entonces me doy la solucion a mi mismo jeje pues simplemente use la direccion 0x3C, eso quiere decir q mi OLED de 128x64 usa el SA0 a tierra. aunq penosamente digo q no se q es el SA0 imagino q debe de ser un pin de la pantalla en el circuito interno.

asi q cambien el valor y listo ya la pantalla funciona normalmente...

De todos modos Gracias por responder SALUDOS. :wink: