I2C, Display alfanumérico // I2CDisplay gráfico?

Buenos días.
He hecho varios montajes con displays:

Display alfanumérico conectado a Arduino Pro micro → conexiones en Paralelo (muchos cables)
Buscando por internet y por el foro, vi que existen unas placas que, con solo usar 4 pines: GND, VCC, SDA y SCL puedes hacer la conexión en paralelo y te ahorra mucho lío de cables y conetividad.
Link. Pero en todos los ejemplos que he visto suelen usar el LMC1602. con el LMB162A (link) se podría usar? no encuentro los pines de conexión entre esa placa y los displays, y no sé si coincidirían los pines.

Con el display gráfico LM12864, he realizado conexiones al arduino pro micro en paralelo (con muchísimos cables). no he tenido problemas a la hora de configurar librerías ni pines y las imágenes se ven perfectamente.

Para ahorrar en problemas que puedan surgir con tantos cables, quería algo parecido a lo anterior pero para este tipo de gráficas. He visto que se puede hacer la conexión vía I2C (que el Arduino Pro micro la acepta). Pero tengo dudas de si funcionará o no porque no logro entender bien cómo se programaría. La opción SPI la he descartado porque este display no admite (o eso creo, ese controlador no he visto la opción por ningun lado)

¿cómo creeis que debería hacer las conexiones / sería posible con el arduino pro micro?

Dejo una serie de datos:


El display utiliza la librería: S6B0108 que es compatible con KS0108
Por lo que habría que he añadido estas lineas definiendo pines y librería:

#include “U8glib.h”

U8GLIB_KS0108_128 u8g(0, 1, 10, 9, 8, 6, 5, 3, 20, 19, 18, 21, 4 ); // D0 y D1, D2, D3, D4, D5, D6, D7, EN, CS1, CS2, DI (RS), RW)

La librería KS0108 tiene unas tablas con diferentes conexiones dependiendo del display, en mi caso, las conexiones serían las de PinoutD → link del archivo

Arduino Pins Function Pinout D Comments
5V +5 volts 4
Gnd GND 3
n/a Vo (Contrast in) 5 Wiper of contrast pot
8 D0 9
9 D1 10
10 D2 11
11 D3 12
4 D4 13
5 D5 14
6 D6 15
7 D7 16
14 (alog0) CSEL1 1 Chip 1 select
15 (alog1) CSEL2 2 Chip 2 select
  Reset   Reset pin
16 (alog2) R_W 7 Read/write
17 (alog3) D_I (RS) 6 Data/Instruction
18 (alog4) EN 8 Enable
n/a Vee/Vout (Contrast out) 20 10k or 20k pot
n/a Backlight +5 17 See datasheet
Gnd Backlight Gnd 18 See datasheet

FIchas técnicas:

Arduino Pro Micro (datasheet)

Display gráfico 12864 (datasheet)


He sacado con conexión paralelo sacar la imagen de un caballo al display.

Conexiones realizadas:

LCD Arduino
Pin 1 GND
Pin 2 VCC
Pin 3 (al potenciómetro)
Pin 4 pin 21 (analog)
Pin 5 pin 4
Pin 6 pin 20 (analog) /td]
Pin 7 pin 0
Pin 8 pin 1
Pin 9 pin 10 (pwm)
Pin 10 pin 9 (pwm)
Pin 11 pin 8
Pin 12 pin 6(pwm)
Pin 13 pin 5 (pwm)
Pin 14 pin 3 (pwm)
Pin 9 pin 10 (pwm)
Pin 15 pin 19 (analog)
Pin 16 pin 18 (analog)
Pin 17 pin VCC
Pin 18 (al potenciometro)
Pin 19 VCC
Pin 20 GND

Código:

#include "U8glib.h"

U8GLIB_KS0108_128 u8g(0, 1, 10, 9, 8, 6, 5, 3, 20, 19, 18, 21, 4 ); // D0 y D1, D2, D3, D4, D5, D6, D7, EN, CS1, CS2, DI (RS), RW)


static unsigned char u8g_logo_bits[] U8G_PROGMEM = {

// Imagen caballo

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFC, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0xFE, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF,
0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00,
0x07, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFB, 0x00, 0x00,
0x1F, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFB, 0x03, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xEF, 0xF3,
0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xF2, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xC7, 0xE0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0xE0, 0x7F, 0xCF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x83, 0xE0, 0x7F, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0xE0, 0x7F, 0x9F, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0xF0, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0xE0, 0xFF,
0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xC0, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
0x00, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xC0, 0x00, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0xFF, 0xDF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xCF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00,
0xFF, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFC, 0x00, 0x7F, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xCF, 0xFF, 0xFC, 0x7F,
0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF,
0xF8, 0x00, 0x1F, 0xFF, 0x07, 0x00, 0x7F, 0xFF, 0x0F, 0xF0, 0x00, 0x1F, 0x80, 0x03, 0x00, 0x7F,
0xF8, 0x1F, 0xC0, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x7F, 0xF8, 0x1F, 0x80, 0x00, 0x0F, 0x00, 0x03,
0x80, 0x3F, 0xDC, 0x3F, 0x80, 0x00, 0x0F, 0x00, 0x01, 0x80, 0x3F, 0xCE, 0x7F, 0x00, 0x00, 0x0F,
0x00, 0x01, 0x80, 0x3F, 0x8F, 0xFE, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x3F, 0x87, 0xFC, 0x00,
0x00, 0x07, 0x00, 0x01, 0xC0, 0x3F, 0x07, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x3F, 0x07,
0xF8, 0x00, 0x00, 0x07, 0x00, 0x00, 0xC0, 0x3C, 0x03, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0,
0x20, 0x0F, 0x38, 0x00, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x07, 0x00,
0x01, 0x80, 0x00, 0x0E, 0x1C, 0x00, 0x00, 0x07, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x1C, 0x00, 0x00,
0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F,
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00,
0x00, 0x03, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00,
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x00

};
   

void draw(void) {
  u8g.drawBitmapP( 0, 0, 9, 60, u8g_logo_bits);
 // u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, u8g_logo_bits); // posición x, posición y, anchuradibujo, alturadibujo, dibujofunción)

}

void setup(void) {
}

void loop(void) {
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
  
  // rebuild the picture after some delay
  delay(1000);
}

otra opción era utilizar el LM6059B que tiene el controlador ST7565 (equivalente al KS0713) pero no encuentro la librería para arduino. La de éste no serviría…