Hello,
I started to play with a ssd1306 and thought it could be funny to play on it some animations.
Because XMBs use a lot of memory pictures arrays should go in PROGMEM.
I have followed a example found on google but I have a strange result displayed.
What am I missing ?
#include <U8g2lib.h>
#include <avr/pgmspace.h>
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, 5, 4); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7
#define u8g_logo_width 64
#define u8g_logo_height 64
static const unsigned char frame00[] PROGMEM = {
0xff, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x1f, 0xff, 0xff,
0xff, 0xff, 0xf8, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff,
0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xf8, 0xff,
0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0x43,
0x80, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xe0, 0x00, 0xfe, 0xc7, 0xff,
0xff, 0xe3, 0x7f, 0x30, 0x00, 0xfc, 0x8f, 0xff, 0xff, 0xf1, 0x3f, 0x10,
0x30, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x10, 0x30, 0xf0, 0x3f, 0xfe,
0x7f, 0xfc, 0x0f, 0x20, 0x02, 0xe0, 0x7f, 0xfc, 0x3f, 0xfe, 0x07, 0x20,
0x00, 0xe0, 0xff, 0xf8, 0x1f, 0xff, 0x07, 0x20, 0x00, 0xcc, 0xff, 0xf1,
0x8f, 0xff, 0x0b, 0x20, 0x00, 0xce, 0xff, 0xe3, 0xc7, 0xff, 0x3b, 0x02,
0x00, 0x86, 0xff, 0xc7, 0xe3, 0xff, 0x13, 0x00, 0x00, 0x80, 0xff, 0x8f,
0xf1, 0xff, 0x33, 0x00, 0x00, 0x80, 0xff, 0x1f, 0xf8, 0xff, 0x33, 0x00,
0x00, 0x80, 0xff, 0x3f, 0xfc, 0xff, 0x0f, 0x02, 0x60, 0xc0, 0xff, 0x3f,
0xfc, 0xff, 0x67, 0x0e, 0x70, 0xc0, 0xff, 0x3f, 0xfc, 0xff, 0x37, 0x98,
0x3c, 0xfc, 0xff, 0x3f, 0xfc, 0xe3, 0x1f, 0x00, 0x03, 0xf8, 0x8f, 0x3f,
0xfc, 0xe3, 0x9f, 0x03, 0x03, 0xf0, 0x87, 0x3f, 0xfc, 0xc1, 0xcf, 0x0f,
0xf3, 0xe3, 0x07, 0x3f, 0xfc, 0xc0, 0xcf, 0x3f, 0xf9, 0xe3, 0x01, 0x3f,
0xfc, 0x00, 0xcf, 0xff, 0xff, 0xf3, 0x00, 0x3e, 0xfc, 0x00, 0xce, 0xff,
0xfd, 0x73, 0x10, 0x3e, 0xfc, 0x19, 0xcc, 0x37, 0x7d, 0x73, 0x3c, 0x3f,
0xfc, 0x7f, 0xcc, 0x91, 0xbb, 0x71, 0xff, 0x3f, 0xfc, 0xff, 0x07, 0x8c,
0xe7, 0xe1, 0xff, 0x3f, 0xfc, 0xff, 0x0f, 0xc0, 0x07, 0xe0, 0xff, 0x3f,
0xfc, 0xff, 0x0f, 0xe0, 0x0f, 0xf0, 0xff, 0x3f, 0xfc, 0xff, 0x1f, 0xe0,
0x0e, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xe0, 0x0e, 0xfe, 0xff, 0x3f,
0xfc, 0xff, 0xff, 0xe1, 0x06, 0xfe, 0xff, 0x3f, 0xfc, 0xff, 0xbf, 0x81,
0x83, 0xf9, 0xff, 0x3f, 0xfc, 0xff, 0x7f, 0x00, 0x03, 0xfe, 0xff, 0x3f,
0xfc, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x01,
0x30, 0xfb, 0xff, 0x3f, 0xfc, 0xff, 0xbf, 0xd9, 0xa6, 0xfb, 0xff, 0x3f,
0xfc, 0xff, 0xbf, 0xb7, 0x2d, 0xf9, 0xff, 0x3f, 0xfc, 0xff, 0x7f, 0xff,
0xff, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x6f, 0xfe, 0xff, 0xce, 0xff, 0x3f,
0xf8, 0x3f, 0xe4, 0x78, 0x5a, 0x8f, 0xf1, 0x3f, 0xf1, 0x1f, 0xe0, 0xe1,
0x8d, 0x0f, 0xe0, 0x1f, 0xe3, 0x1f, 0xf0, 0xa7, 0xc4, 0x1f, 0xe0, 0x8f,
0xc7, 0x1f, 0xf8, 0x0f, 0xe0, 0x3f, 0xf0, 0xc7, 0x8f, 0x3f, 0xf8, 0x1f,
0xf8, 0xff, 0xe0, 0xe3, 0x1f, 0x7f, 0xf8, 0xff, 0xff, 0x7f, 0xe0, 0xf1,
0x3f, 0x7e, 0xfc, 0xff, 0xff, 0xff, 0xf0, 0xf8, 0x7f, 0xfc, 0xfe, 0xff,
0xff, 0xff, 0x79, 0xfc, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe,
0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xe3, 0xff, 0xff,
0xff, 0xff, 0x8f, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff,
0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0x1f, 0xff, 0xff,
0xff, 0xff, 0xf1, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xf8, 0xff,
0xff, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xf8, 0xff,
0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x03, 0x00, 0x00, 0x80, 0xff, 0xff };
static const unsigned char frame01[] PROGMEM = {
0xff, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00,
0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x1f, 0xff, 0xff,
0xff, 0xff, 0xf8, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff,
0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xf8, 0xff,
0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0x43,
0x80, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xe0, 0x00, 0xfe, 0xc7, 0xff,
0xff, 0xe3, 0x7f, 0x30, 0x00, 0xfc, 0x8f, 0xff, 0xff, 0xf1, 0x3f, 0x10,
0x30, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x10, 0x30, 0xf0, 0x3f, 0xfe,
0x7f, 0xfc, 0x0f, 0x20, 0x02, 0xe0, 0x7f, 0xfc, 0x3f, 0xfe, 0x07, 0x20,
0x00, 0xe0, 0xff, 0xf8, 0x1f, 0xff, 0x07, 0x20, 0x00, 0xcc, 0xff, 0xf1,
0x8f, 0xff, 0x0b, 0x20, 0x00, 0xce, 0xff, 0xe3, 0xc7, 0xff, 0x3b, 0x02,
0x00, 0x86, 0xff, 0xc7, 0xe3, 0xff, 0x13, 0x00, 0x00, 0x80, 0xff, 0x8f,
0xf1, 0xff, 0x33, 0x00, 0x00, 0x80, 0xff, 0x1f, 0xf8, 0xff, 0x33, 0x00,
0x00, 0x80, 0xff, 0x3f, 0xfc, 0xff, 0x0f, 0x02, 0x60, 0xc0, 0xff, 0x3f,
0xfc, 0xff, 0x67, 0x0e, 0x70, 0xc0, 0xff, 0x3f, 0xfc, 0xff, 0x37, 0x98,
0x3c, 0xfc, 0xff, 0x3f, 0xfc, 0xe3, 0x1f, 0x00, 0x03, 0xf8, 0x8f, 0x3f,
0xfc, 0xe3, 0x9f, 0x03, 0x03, 0xf0, 0x87, 0x3f, 0xfc, 0xc1, 0xcf, 0x0f,
0xf3, 0xe3, 0x07, 0x3f, 0xfc, 0xc0, 0xcf, 0x3f, 0xf9, 0xe3, 0x01, 0x3f,
0xfc, 0x00, 0xcf, 0xff, 0xff, 0xf3, 0x00, 0x3e, 0xfc, 0x00, 0xce, 0xff,
0xfd, 0x73, 0x10, 0x3e, 0xfc, 0x19, 0xcc, 0x37, 0x7d, 0x73, 0x3c, 0x3f,
0xfc, 0x7f, 0xcc, 0x91, 0xbb, 0x71, 0xff, 0x3f, 0xfc, 0xff, 0x07, 0x8c,
0xe7, 0xe1, 0xff, 0x3f, 0xfc, 0xff, 0x0f, 0xc0, 0x07, 0xe0, 0xff, 0x3f,
0xfc, 0xff, 0x0f, 0xe0, 0x0f, 0xf0, 0xff, 0x3f, 0xfc, 0xff, 0x1f, 0xe0,
0x0e, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xe0, 0x0e, 0xfe, 0xff, 0x3f,
0xfc, 0xff, 0xff, 0xe1, 0x06, 0xfe, 0xff, 0x3f, 0xfc, 0xff, 0xbf, 0x81,
0x83, 0xf9, 0xff, 0x3f, 0xfc, 0xff, 0x7f, 0x00, 0x03, 0xfe, 0xff, 0x3f,
0xfc, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x01,
0x30, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xd9, 0xa6, 0xff, 0xff, 0x3f,
0xfc, 0xff, 0xff, 0xb7, 0x2d, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
0xff, 0xfb, 0xff, 0x3f, 0xfc, 0xff, 0xaf, 0xff, 0xff, 0xcb, 0xff, 0x3f,
0xf8, 0x3f, 0xa4, 0xff, 0xff, 0x89, 0xf1, 0x3f, 0xf1, 0x1f, 0x60, 0xff,
0xff, 0x0c, 0xe0, 0x1f, 0xe3, 0x1f, 0x70, 0xfe, 0xff, 0x1e, 0xe0, 0x8f,
0xc7, 0x1f, 0xf8, 0x78, 0x5a, 0x3f, 0xf0, 0xc7, 0x8f, 0x3f, 0xf8, 0xe1,
0x8d, 0xff, 0xe0, 0xe3, 0x1f, 0x7f, 0xf8, 0xa7, 0xc4, 0x7f, 0xe0, 0xf1,
0x3f, 0x7e, 0xfc, 0x0f, 0xe0, 0xff, 0xf0, 0xf8, 0x7f, 0xfc, 0xfe, 0x1f,
0xf8, 0xff, 0x79, 0xfc, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe,
0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xe3, 0xff, 0xff,
0xff, 0xff, 0x8f, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff,
0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0x1f, 0xff, 0xff,
0xff, 0xff, 0xf1, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xf8, 0xff,
0xff, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xf8, 0xff,
0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x03, 0x00, 0x00, 0x80, 0xff, 0xff };
void setup() { // put your setup code here, to run once:
u8g2.begin();
u8g2.clearBuffer();
u8g2.setDrawColor(0);
}
void loop() { // put your main code here, to run repeatedly:
u8g2.firstPage();
do
{
u8g2.drawXBM( 32, 0, u8g_logo_width, u8g_logo_height, frame00);
} while ( u8g2.nextPage() );
delay(500);
u8g2.firstPage();
do
{
u8g2.drawXBM( 32, 0, u8g_logo_width, u8g_logo_height, frame01);
} while ( u8g2.nextPage() );
delay(500);
}