#include <Arduino.h>
#include <U8g2lib.h> // u8g2 library for drawing on OLED display - needs to be installed in Arduino IDE first
#include <Wire.h> // wire library for IIC communication with the OLED display
const char s0[1024] PROGMEM = " _;;;;_ .;;:::::.::::::;. ,:::.:::::::........,. ,.,,..................- _.....,......:::::;;..- _.,.,.,.:***********:.- -.,,..,.****;***;;**:.- -.,.,.,.***;;****;**:._ -..,..,.;****;;:;***:._ -,....,.;***********:._ ,-_,.,.;***********:._ _, ,- -.,.:***********:._ .,- ,___.,.:******;;:::.._ -., ,_-_.,..:::.........._ ., ,,-_.,.......,...._.._ ., __--.,.._---__....,...::., ,.,,.,..............._... :.,--.,........._..,.., .,..,-,,.._......,,,,.., .,,,,,...,......_-_..., -.,,,..........-__..., ,.......,.,_..,,,..., _.....,........, ,, ,,,,, ,, ,, _, ,_ _,_ .,, ";
const char s1[1024] PROGMEM = " .;;:::::::;;- .;::::.:::::::::....:- _,....:...............- _.....,..........:::.._ -.,,..,..:::;;******:._ -.,.,.,.;********;**:._ -,.,,.,.;**;;***;;**:._ -,,,..,.;******;;***:._ ,....,.:****;;;****:._ ,,,..,.:***********:., ,---.,.:***********;., __ ,_--.,.:**********;:., .. __-_.,..;;:::::......, -.- _,--.,............,.., -._ _,--.,..,,,___...._... _._ _.,_.,..,,,,.........,:;.. _,__...........,..,.._,.. :..,_ ,....,....._,,,,., ,.,,_-...._:......_,.... ,.,,..........___,.., ,,,,.,........___..., ,...,.._..,......., -,...., ,,_ _, -;:,. _,- _,,,- _,- -, ,,- ,, ,,, ";
const char s2[1024] PROGMEM = " *;;:;;_ _;;;::::.::::::::;. -:...:::::::.........._ -,.,,.,..............., ,....,.....:::::;;*:., ,.,,.,.:***********;., ,,,..,.:**;;***;:**;., ,,.,.,.:**;;*******;., ,..,.,.:*****::;***;., ,....,.:************., __-_.,.:************., ,_- ,,.:************.. . _,__.,..*****;;::::.., ,,_ _,--,...::..........., .. _,--.........,...._,., ,, -,--,...,_____.......,. ,., -.,,.................,....- ::.,_ ,.,........_,.,,., ...,- ,.,.,.,....,,.,.., _.,,,..,.,......,-_,... ,.,,.,........___,... ,,,,.,..,,._,..,,..., ,.,..,....... ,, -,. ,, _,_ ,, ,.,_ ,_ _, ,_ ,., ,,,- ";
const char s3[1024] PROGMEM = " -*;;::::::;; ,;:::::.:::::::::...:- _,....:..............._ -.....,...........::.._ -..,..,..:::;;******:._ -.,.,.,.;********;**:._ -,.,,.,.;**;;***;:**:._ ,,.,.,.:*******;***:., ,....,.:****;;:****;., ,,,..,.:***********;., ,---.,.:***********;., .; ,_--.,.:**********;:., -., __-_.,..;;;::::......, -._ ,,--.,............,.., -.- _,--.,...,,___...._.., _.- _,,_....,,,,,........,::.. _,__...........,..,.., .. ;..,_ ,....,....._,.,,., ,.,,_-...._:......_,..., ,,,,.,..,.....___,.., ,.,,.,........___..., -,...,.._..,........ -,.....- ,,_ _, -;.,. _, _,,, _,- -, ,, ,,_ ,,_ ";
const char s4[1024] PROGMEM = " _;;;;_ .;;:::::.::::::;. ,:::.:::::::........,. ,.,,..................- _.....,......:::::;;..- _.,.,.,.:***********:.- -.,,..,.****;***;;**:.- -.,.,.,.***;;****;**:._ -..,..,.;****;;:;***:._ -,....,.;***********:._ ,-_,.,.;***********:._ _, ,- -.,.:***********:._ .,- ,___.,.:******;;:::.._ -., ,_-_.,..:::.........._ ., ,,-_.,.......,...._.._ ., __--.,.._---__....,...::., ,.,,.,..............._... :.,--.,........._..,.., .,..,-,,.._......,,,,.., .,,,,,...,......_-_..., -.,,,..........-__..., ,.......,.,_..,,,..., _.....,........, ,, ,,,,, ,, ,, _, ,_ _,_ .,, ";
const char s5[1024] PROGMEM = " .;;;;:::::::;; ,..:..:::::::::::::::. ,.,,................., ,..................... _.,,.,..::;;;;******.. ,,...,..************., ,...,,..**;:;***;;**., ,..,.,..*******;****., ,....,..*****;;;****., ,_-_.,..************., ,_- ,,..************., _,_-.,..************., _,--.,..:::::::::..... _,--.,..............., _,--.,..,_____....-..,, _..,,,...,,,........,,,::, _,-,,,.........,....._..., -,,-,,..,,....._,,,.., ,.,,.,.._:......,,,.., -,...,.........-__..., -....,......,..-__..., ,.,..,_.,,...,....- _..._ _,,_ _,_ -,, ,, .,- ,, .,,, ,_ -,_ ,.- ";
const char s6[1024] PROGMEM = " -;::::::::::::.::; ,,...:::::::::::::::; _....,,.............,.- ,.,...,...............- ,,..,...;***********.. ,..,,,..************.. ,..,.,..**;:;***;;**., ,....,.:*****;*;****., ,__..,.:*****;;;****., ,_--.,.:***********;., ,_--.,.:***********;., ,_-,.,.:***********:._ ,, _.,..::::::::.....- ,- _.,...............- .,_,,,..___--_...,_..:: ,_-,,,.................:, ,--,,,.........,..... _., ,,,.,,.,.,...._,._,.,:.. -,..,.,.,.......,,,.,..- -,,,...........___,.., ,......,..,..___.... ,...,..,........_ _,, _, -,, ,_ -;:,, _,_ _,_ _, -,- ,_ ,,_ _ ";
const char s7[1024] PROGMEM = " -::::::::::;;;;; _,,..:::::::::::::: ,....,,............:;- ,.,...,...............- ,,.,....:::::::::::...- ,.,,,,.:************., .,.,.,.:**;:****;;**., ,....,.:********:**;., -,-,..,.;****;;;;***:._ -,- _.,.;***********:.- _._-,.,.************:. _,-_....************.. ,.--.,..:::;;;;*****., ,_ -.,..............., ,.,,.,,.___,,,....,.._ ,_-,,.,..,,,,,...._...;: . -_,.................... -,_.,.,.,,,....,,..... .., -,.,..,.,:.....,,._,....- -,..,..........,__...,, _..,...,.....-__..._ -,..,,.,_..,__..._ ..,......... ,,,._ _, ,_-- ,,- ,_ ._ ,,,, _ ";
const char s8[1024] PROGMEM = " -*******; _,,..........:.::. _..,,......::::::::;- ,.,...,..............:- ,.,,.....:............- ,,,..,..*********;;:.. ,,.,,,.:**;;********., ...,.,.:**;:****:;*;._ -,,...,.:****;;*;***;._ -,--,.,.;*****;;;***:._ _.- _.,.************:.- _,-_,.,.************.. ,.- ,...;***********., ,,--.,........::::::., ,,_-.,,,,............, ,,_..,..____--....-.._ ,- _,.,...............;- ,-,_,,..,......,....._..- -,.,..,._:,...._,.,,., ..- -,..,,..........,,,.....- _.............___...,,_ -.,..,_.,_..-__..., ..........,....- ,, ,_ ,;,,, -,_ _, -,_ , ,, ._ _,,. _ ";
const char s9[1024] PROGMEM = " ,.:::::::::::::;- ,.,..:::::::::::::. ,....,,.............;_ ..,..,..............., -,,.,.,..;;;::::::::.., -,,,,.,.;***********:., _..,..,.;**;;***;;**:._ _.....,.********;;**:.- _,-,....*****;;:****.. ,_--,,..************., ,,_-.,.:************., ,_-_.,.:***********;., ,,-_.,..::::::;;;;;:._ ,- ,.,,,.............- -,.,,.,.,_____,....,.. -,--,.,,....,,....,,.., _,-_,,...............,.:_ _.,.,.,._......_..,.._ .. ,..,,,..,:.....,.,,..__., _....,........._-,..._., _..,..,.....,___...-,, -,..,..,,..,_,... -,_ -......_ -,, ,_ ,:,_ _,_ -,- ,, _, ,, ,_ -,,_ ";
const char s10[1024] PROGMEM = " -::::::::::;;;;; _,,..:::::::::::::: ,....,,............:;- ,.,...,...............- ,,.,....:::::::::::...- ,.,,,,.:************., .,.,.,.:**;:****;;**., ,....,.:********:**;., -,-,..,.;****;;;;***:._ -,- _.,.;***********:.- _._-,.,.************:. _,-_....************.. ,.--.,..:::;;;;*****., ,_ -.,..............., ,.,,.,,.___,,,....,.._ ,_-,,.,..,,,,,...._...;: . -_,.................... -,_.,.,.,,,....,,..... .., -,.,..,.,:.....,,._,....- -,..,..........,__...,, _..,...,.....-__..._ -,..,,.,_..,__..._ ..,......... ,,,._ _, ,_-- ,,- ,_ ._ ,,,, _ ";
const char s11[1024] PROGMEM = " .;;;;;:::::::::;: -.,.::::::::::::::.::; -,..,,................_ -,....,..............._ -,.,,.,..;;;********:._ -,,,,.,.;***********:._ -,,.,.,.;**;;***;:**:.- -,.,..,.;****;*;;***:.- -,,...,.;****;;;****:.- -, -,.,.;***********:.- -,- _.,.;***********:.- -,-_,.,.;***********:.- -,_ ,.,.:::::::::..... -,- ,.,............... -,_-,.,..____-,...__..;;*- -,,,..,..............,,,,.: -,--,.,.........,...., -. -_,-_,_.,,,...._,._,., ,, -,,,.,,.,:......,,,.., __ -,,,,.,........___,.., _.......,..,..___..., ,.,..,..,........_ ,..._ ,,- ,._ ., ,, -,_ ., -,_ ,,,_ _, ,_ _._ __ ";
const char s12[1024] PROGMEM = " .;;;;;:::::::::;: -.,.::::::::::::::.::; -,..,,................_ -,....,..............._ -,.,,.,..;;;********:._ -,,,,.,.;***********:._ -,,.,.,.;**;;***;:**:.- -,.,..,.;****;*;;***:.- -,,...,.;****;;;****:.- -, -,.,.;***********:.- -,- _.,.;***********:.- -,-_,.,.;***********:.- -,_ ,.,.:::::::::..... -,- ,.,............... -,_-,.,..____-,...__..;;*- -,,,..,..............,,,,.: -,--,.,.............., -. -_,-_,_.,,,...._,._,., ,, -,,,.,,.,:......,,,.., __ -,,,,.,........___,.., _.......,..,..___..., ,.,..,..,........_ ,..._ ,,- ,._ ., ,, -,_ ., -,_ ,,,_ _, ,_ _._ __ ";
const char s13[1024] PROGMEM = " -__- --__,,..::::.,__- ,::..:::::::........,, ,,,,.................. ,.....,.....:::::;;;.. _.,.,...;***********.. _.,,....****;***;;**:. -.,.,.,.***;;*******:. -..,..,.*****;;:;***:. -.....,.************:. -,-_,.,.;***********:. ,- -.,.;***********:. _ ,___.,.:******;::::..- -_ ,_-_.,..:::..........- _- ,,-_.,.......,....-..- _- __--.,.._---__.......,__,- _.,,.,...............-.._ -;.,--.,........._.,,..- :,..,-.,.._......,,,...- -,.,,,..,......_-_...- -..,...........-__...- ,.......,.,_..,,,...- _.....,.......,_ ,, __,, _- ,_-, -- -- _ -,, ";
const char s14[1024] PROGMEM = "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------____----------------------------____----------------------------.___----------------------------:...----------------------------::::----------------------------;:::----------------------------;;;;----------------------------:;;;----------------------------::::----------------------------.:::----------------------------,...----------------------------,,,,----------------------------,,,,----------------------------_,,,----------------------------.___----------------------------.,__----------------------------,-------------------------------------------------------------------------------------------------------------------------------------------------------------------";
const char s15[1024] PROGMEM = "----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------";
const char* storage[] = {s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15};
static int currentFrame = 0;
char buffer[1024];
U8G2_SH1107_128X128_1_HW_I2C oled(U8G2_R0);
void setup() {
oled.begin();
oled.setContrast(255);
oled.setFont(u8g2_font_u8glib_4_tr);
oled.setDrawColor(1);
}
void loop() {
oled.firstPage();
memcpy_P(buffer, (PGM_P)storage[currentFrame],1024); //Copy frame from PROGMEM to local buffer. TODO: Make buffer smaller to preserve GLOB mem.
if (currentFrame == (sizeof(storage)/sizeof(storage[0]))-1){
currentFrame=0;
}
else{
currentFrame++;
}
do {
int buffSize = strlen(buffer);
int xpos = 0;
int ypos = 0;
char c;
for (int i = 0; i < buffSize; i++) {
if (i % 64 == 0) {
ypos += 8;
xpos = 0;
}
c = buffer[i];
if (c == ' ') {
xpos += 4;
continue;
}
oled.drawGlyph(xpos, ypos, c);
xpos += 4;
}
} while (oled.nextPage());
delay(0);
}