Bonjour, Labox est dotée d'un écran OLED de 0,96 pouce.(SSD1306)
Je souhaite un écran plus grand, le OLED SH1106 1,3 pouce.
Son mode d’affichage est différent et nécessite une autre librairie.
Cependant, il est plus simple de modifier la librairie existante (Adafruit_SSD1306.cpp)
Modifications logicielles à effectuer dans la librairie Adafruit_SSD1306.cpp
- Sur première ligne, écrire : #define SH1106
- Dans la fonction : void Adafruit_SSD1306::display(void) , après la ligne : uint8_t *ptr = buffer;
Insérer ce code :
#if defined (SH1106)
for (int8_t i = 7; i >= 0; i--){
ssd1306_command1(0xB0 + i); // Set row
ssd1306_command1(0x02); // Set lower column address
ssd1306_command1(SSD1306_SETHIGHCOLUMN); // Set higher column address
for (uint16_t j = SSD1306_LCDWIDTH; j > 0; j--){
Wire.beginTransmission(i2caddr);
WIRE_WRITE(0x40);
for (uint8_t x=0; x<16; x++) {
WIRE_WRITE(buffer[i * SSD1306_LCDWIDTH + SSD1306_LCDWIDTH - j]);
j--;
}
j++;
Wire.endTransmission();
}
}
TRANSACTION_END
return;
#endif
- Reste à ajuster l’offset verticale.
Dans : static const uint8_t PROGMEM init2[] Changer valeur 0 (// no offset) à 1
Modification matérielle.
D’origine, sur le SH1106, les Pins Gnd et Vcc sont inversées par rapport au SSD1306.
Il faut déplacer deux pontages au dos de l’afficheur pour que toutes les broches soient compatibles avec celles de Labox.