OLED SSD1316 por I2C con Arduino UNO R3

Pantalla OLED I2C SSD1316

Tutorial para utilizar la pantalla OLED SSD1316 con el protocolo de comunicación I2C y con un Arduino UNO. Este ejemplo se basa en las bibliotecas creadas por Adafruit para 2 tipos de pantallas, las que tienen ya el pin de I2C directo y las que tienen selector de protocolo que tienen todos los pines del controlador OLED SSD1316 externos. Para comenzar la biblioteca la podemos descargar del siguiente enlace:

https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples

OLED

Pantalla OLED I2C.

Diagrama de la pantalla OLED SSD1316.

Diagrama

Diagrama de la pantalla de 4 pines.

Diagrama de conexiones OLED SSD1316 – Arduino.

A continuación se muestra el diagrama esquemático de conexión entre la pantalla OLED SSD1316 y un Arduino, si se tiene la pantalla OLED SSD1316 que tiene mas pines ir a la parte inferior donde encontrara mas información.

DIBUJO

Diagrama esquemático de la pantalla con el Arduino en I2C.

Código de ejemplo OLED SSD1316, para Arduino.

Para pantallas con los pines SSD1306 completos.

Para las pantallas que tienen todos los pines funcionan igual las mismas bibliotecas debido a que tienen el mismo controlador, solo hay que tomar varias consideraciones. En caso de utilizarla con el protocolo I2C tendremos que seguir los siguientes pasos.

  1. Soldar un puente de estaño con cautín en el jumper BS1, prestando mucha atención a que es un jumper con 3 contactos tratar de no cubrir los 3 pads si no solo el central con uno de los 2. Para I2C tiene que quedar como en la figura inferior.
  2. Conectar el pin de RST Reset, a el microcontrolador para controlarlo desde el mismo o si se desea tenerla siempre activada, podemos dejarlo conectado a 3.3V.
  3. Conectar el pin de DC para seleccionar la dirección, 0x3C cuando esta en 3.3V y 0x3D cuando esta en GND.

 

OLED SSD1316

Jumpers para I2C.

OLED SSD1316

OLED SSD1316.

OLED SSD1316

OLED SSD1316.

OLED SSD1316

OLED SSD1316 conexión con un microcontrolador.

 

 

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  1. Después de corregir algunos detalles manda los sigiuientes errores al compilar:

    OLE_Test1.ino: In function ‘void printBigNumber(char, int, int)’:
    OLE_Test1:174: error: ‘bigNumbers’ was not declared in this scope
    OLE_Test1.ino: In function ‘void sendCharXY(unsigned char, int, int)’:
    OLE_Test1:209: error: ‘myFont’ was not declared in this scope
    OLE_Test1.ino: In function ‘void sendStr(unsigned char*)’:
    OLE_Test1:243: error: ‘myFont’ was not declared in this scope
    OLE_Test1.ino: In function ‘void sendStrXY(char*, int, int)’:
    OLE_Test1:260: error: ‘myFont’ was not declared in this scope

  2. buenas noches, hace unos dias adquiri 2 de sus pantallas, una es como la mostrada, la otra contiene mas pines (se puede seleccionar la comunicacion por SPI), tendra el codigo completo con librerias que uso en este ejemplo? veo que ahi selecciono la direccion 3C, pero la pantalla dice que es la 78, agradesco su ayuda

    • La que tiene mas pines es la nueva versión, lo que hace es que se puede comunicar con varios protocolos, solo cambia la dirección en tu programa y no olvides seleccionar el protocolo que necesitas con el jumper de soldadura trasero.

      • ya lo hize, e incluso probe la comunicacion serial de 4 hilos, el OLED de 4 pines si se comunica correctamente, pero el que tiene los distuintos protocolos no. ya revise los “jumpers” y todo es correcto, sin embargo no se comunica, tampoco enciende ni nada.

    • Francisco, ese problema suele ser debido a que no esta configurado el puerto correctamente del arduino, checa el administrador de dispositivos y verifica que tengas el mismo “COM” que en el arduino.

  3. En este momento estamos así:
    *Tengo la pantalla de 16 pines
    *Los programas de Adafruit compilan sin errores, aparentemente se cargan al Arduino pero no aparece nada en la pantalla
    *El programa que está como ejemplo en la página de HETPRO, manda errores por no encontrar “printBigNumber” y “myFont”; *Estas bibliotecas no las he localizado en https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples
    *Resultado: no he logrado hacer funcionar la pantalla

  4. Hola, yo tengo el mismo problema llevo varios días leyendo los manuales y foros pero no logro resolverlo, he logrado conectar la pantalla via SPI, pero no logro hacerlo por IIC que es lo que necesito.
    Después de cambiar los jumpers no logro encender la pantalla.

    • Gonzalo, te voy a copiar los puntos más importantes del tutorial si tienes la pantalla multi-protocolo para ver si los revisaste a detalle:
      Soldar un puente de estaño con cautín en el jumper BS1, prestando mucha atención a que es un jumper con 3 contactos tratar de no cubrir los 3 pads si no solo el central con uno de los 2. Para I2C tiene que quedar como en la figura inferior.
      Conectar el pin de RST Reset, a el microcontrolador para controlarlo desde el mismo o si se desea tenerla siempre activada, podemos dejarlo conectado a 3.3V.
      Conectar el pin de DC para seleccionar la dirección, 0x3C cuando esta en 3.3V y 0x3D cuando esta en GND.

      • U8glib es una librería muy buena que consume mucho menos ram que adafruit, es excelente, fácil e intuitiva con muchos ejemplos. Solo modifique un poco para que tenga menos consumo de ram y salio funcionando.
        Como te comente adafruit consume al menos 1k de memoria y el atmega 328 uno solo tiene 2k. Con solo declarar unos sensores como dth, solo unos strings sin progem o algunos buffer la memo se llena en el acto incluso sobrepasando los 2 k. Y sabemos que si dejamos con menos de un 25-30% de ram libre es muy probable que tenga un comportamiento inadecuado.

        • Martin, muchas gracias por el dato, vamos a tomar en consideración para ver si generamos otro tutorial con esta otra librería que mencionas. Saludos y gracias por compartir ese dato.

          • Al contrario, gracias a vos por estos tutoriales de facil comprension y bien explicados!!!!

  5. Hola que puedo si me marca este tipo de error:

    #error(“Height incorrect, please fix Adafruit_SSD1306.h!”);

    espero que me ayudes, gracias

  6. Hola, Tengo un problema con las pantallas OLED SSD1316, que ya no se como solucionarlo.El problema no se presenta siempre y es muy difícil su diagnostico. No es conexión ni cableado. Lo tengo instalado en mas de 10 equipos y en todos sucede lo mismo. En ocasiones, al encender el equipo, no aparece visualización, lo apago y enciendo unas 10 o 15 veces y se puede encender 3 , 4 o quizás mas. Sin realizar ningún cambio, hay ocasiones que en 10 intentos no falla. Esta anomalía la he relacionado con otros dispositivos que están conectados a la misma fuente, pero no por el consumo, sino por estar estos conectado al chasis del equipo a través del negativo. Una vez separado del chasis, tampoco aparece la anomalía. Me pueden dar una pista. Muchas gracias

  7. y si la placa tiene SCK y SDA? podria ver un diagrama o foto de como montar eso? se que se tiene que hacer un pullup pero no se bien como

    • Me pasa lo mismo compañero…¿has dado con la solución?…un abrazo desde Las Islas Canarias (España)..

  8. Estimado amigo: quisiera rogarle sea tan amable de indicarme y orientarme en un problema que tengo con mi pequeño display chino 128X64 I2C SSD1306. El caso, es que después de subir las bibliotecas oportunas y cargar el sketch de forma correta, no me aparece en pantalla información alguna. ¿A qué será debido?. A la espera de sus noticias, reciba un cordial saludo….

    fmdo.: J.M. Ramírez

    • Juan, la pregunta es muy abierta, tendrias que comenzar a trabajara para ir acortando la lista de posibles cosas que pueden fallar. Las conexiones están bien realizadas? el módulo si tiene bien configurada la dirección I2C? la pantalla tiene bien ajustado el contraste? el codigo compila bien?..

  9. Buenas tardes de nuevo. El caso es que copiando vuestro sketch y pegándolo me da un error al compilar que es el siguiente…… (El nombre del proyecto debe ser modificado. El nombre del proyecto debe consistir solo de caracteres ASCII y números (pero no puede comenzar con un número).
    Ademas debe contener menos de 64 caracteres.)…..
    ¿qué significa todo ello compañeros?….el caso es que soy un novato en estos nuevos campos del Arduino….un abrazo y gracias por todo….