| Exemples | Referència | Plaques | Recursos CITCEA | |
| Projectes | Programació | Perifèrics | Inici | |
| Enrere | ||||
Es poden representar imatges, ja sigui ocupant tota la pantalla o només una part. Per fer-ho, tenim les funcions ssd1306_drawBitmap, ssd1306_drawXBitmap i gfx_drawMonoBitmap. Les imatges es defineixen amb vectors. En la funció ssd1306_drawXBitmap cada component del vector correspon a vuit píxels en horitzontal, on el bit més significatiu correspon al píxem de més a la dreta d'aquell tros d'imatge. A les altres dues funcions, en canvi, cada component correspon a un bloc vertical de vuit bits. En l'exemple següent representarem aquesta imatge de 16 ⨯ 16 píxels:

Fixem-nos en el primer vector. A la primera filera els vuit bits de més a l'esquerra estan apagats, per tant la primera component del vector tindrà tots els bits a zero. Dels següents vuit bits només n'hi ha dos d'activats, el 5 i el 6; per tant, la component del vector tindrà a 1 els bits de les posicions 4 i 5. Amb la directiva PROGMEM li diem que guardi la imatge a la memòria de programa per evitar omplir innecessàriament la memòria de dades.
A les dues primeres funcions volem posar la imatge a la posició 16 en vertical però indiquem un 2 perquè la funció treballa per paquets de vuit bits verticals i, per tant, li posem el valor desitjat dividit per 8. A la tercera funció, en canvi, cal indicar la posició en píxels.
#include "ssd1306.h"
const uint8_t got[] PROGMEM = {
0b00000000, 0b00110000, // Fila 1
0b00000000, 0b00011000,
0b00000000, 0b00001100,
0b00000000, 0b00000110,
0b11111100, 0b00001111,
0b10000100, 0b00001001,
0b11000100, 0b00001000,
0b01100100, 0b00001000, // Fila 8
0b00110100, 0b00001000,
0b11111100, 0b00001111,
0b11111100, 0b00001111,
0b11111100, 0b00001111,
0b11111100, 0b00001111,
0b11111000, 0b00000111,
0b11111000, 0b00000111,
0b11111000, 0b00000111 // Fila 16
};
const uint8_t got2[] PROGMEM = {
0b00000000, 0b00000000, 0b11110000, 0b00010000, // Part superior cols. 1 a 4
0b00010000, 0b10010000, 0b11010000, 0b01110000,
0b00110000, 0b00011000, 0b00011100, 0b11110110,
0b00000011, 0b00000001, 0b00000000, 0b00000000,
0b00000000, 0b00000000, 0b00011111, 0b11111110, // Part inferior cols. 1 a 4
0b11111111, 0b11111111, 0b11111110, 0b11111110,
0b11111110, 0b11111110, 0b11111110, 0b00011111,
0b00000000, 0b00000000, 0b00000000, 0b00000000
};
void setup(){
ssd1306_128x64_i2c_init();
ssd1306_clearScreen();
ssd1306_setFixedFont(ssd1306xled_font6x8);
ssd1306_drawBitmap(40, 2, 16, 16, got2);
ssd1306_drawXBitmap(80, 2, 16, 16, got);
gfx_drawMonoBitmap(40, 40, 16, 16, got2);
ssd1306_printFixed(0, 0, "Vols un refresc?", STYLE_NORMAL);
}
void loop(){
}
Una altra manera de mostrar imatges a la pantalla és amb la funció ssd1306_drawBuffer o bé amb la ssd1306_drawBufferFast. En aquest cas cada byte representa vuit píxels en vertical. Fixem-nos que els dos dibuixos de l'exemple es mostren a la mateixa alçada però en una de les funcions hem d'indicar la posició en píxels mentre que a l'altra s'indica en blocs.

El vector que conté la imatge es pot modificar des del programa. Això no afectarà a les imatges que ja estiguin a la pantalla però sí a les que es presentin després.
#include "ssd1306.h"
uint8_t vaixell[] = {
0b00100000,
0b01100000,
0b11100000,
0b11111111,
0b11100010,
0b11100000,
0b11100000,
0b11100000,
0b01100000,
0b00100000
};
void setup(){
ssd1306_128x64_i2c_init();
ssd1306_fillScreen(0);
ssd1306_setFixedFont(ssd1306xled_font6x8);
}
void loop(){
ssd1306_drawBuffer(20, 3, 10, 8, vaixell);
ssd1306_drawBufferFast(60, 24, 10, 8, vaixell);
ssd1306_printFixed(0, 0, "Dibuixos", STYLE_NORMAL);
delay(1000);
ssd1306_clearScreen();
}
| Funció | Ús | Paràmetres | Comentaris |
| ssd1306_drawBitmap | Mostra una imatge fixa a la pantalla | Posició x Posició y en múltiples de 8 Amplada Alçada Vector de la imatge |
La imatge es guarda per blocs verticals de 8 píxels El vector es guarda a la memòria de programa |
| ssd1306_drawXBitmap | Mostra una imatge fixa a la pantalla | Posició x Posició y en múltiples de 8 Amplada Alçada Vector de la imatge |
El vector guarda la imatge per fileres El vector es guarda a la memòria de programa |
| gfx_drawMonoBitmap | Mostra una imatge fixa a la pantalla | Posició x Posició y en múltiples de 8 Amplada Alçada Vector de la imatge |
La imatge es guarda per blocs verticals de 8 píxels El vector es guarda a la memòria de programa |
| ssd1306_drawBuffer | Mostra una imatge fixa a la pantalla | Posició x Posició y en múltiples de 8 Amplada Alçada Vector de la imatge |
El vector es guarda a la memòria de dades |
| ssd1306_drawBufferFast | Mostra una imatge fixa a la pantalla | Posició x Posició y Amplada Alçada Vector de la imatge |
El vector es guarda a la memòria de dades |

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.