/* The upload speed for Start Screen and User font is about 7s/1K bytes This demo code show you how to upload start screen and user fonts, the user fonts have 4 sections-0,1,2,3, each section has 4096 bytes you can upload your user font to any section, and you also can combine adjacent sections together for large font data. the font identify number for each sections are: 200 to 203. if you upload your font to section #2, use setFont(202) to use it. NOTE: once you uploaded start screen or user font, you don't need upload it again if unchanged, the adapter will store it in flash memory the DATA structure of user font is same as U8Glib */ #define _Digole_Serial_UART_ //To tell compiler compile the special communication only, //all available are:_Digole_Serial_UART_, _Digole_Serial_I2C_ and _Digole_Serial_SPI_ //if you need up data to flash, you need to connect the read pin (eg. RX, SDI) //un-comment the next line if your serial module has 2M bytes flash memory on board //#define _Digole_2M_Flash_ #define Ver 34 //if firmware version is not V3.3, remove this line #include //--------UART setup #if defined(_Digole_Serial_UART_) DigoleSerialDisp mydisp(&Serial, 9600); //UART:Arduino UNO: Pin 1(TX)on arduino to RX on module #endif //--------I2C setup #if defined(_Digole_Serial_I2C_) #include DigoleSerialDisp mydisp(&Wire,'\x27'); //I2C:Arduino UNO: SDA (data line) is on analog input pin 4, and SCL (clock line) is on analog input pin 5 on UNO and Duemilanove #endif //--------SPI setup #if defined(_Digole_Serial_SPI_) DigoleSerialDisp mydisp(8,9,10); //SPI:Pin 8: data, 9:clock, 10: SS, you can assign 255 to SS, and hard ground SS pin on module #endif const unsigned char myfont[] PROGMEM = { 0,32,60,0,0,60,0,0,0,0,32,52,0,0,0,60 ,0,0,0,0,28,0,60,255,255,255,255,255,255,255,255,255 ,255,255,255,255,255,255,30,59,236,32,0,0,0,3,128,0 ,0,7,224,0,0,15,240,0,0,15,240,0,0,15,240,0 ,0,15,240,0,0,7,240,0,0,7,224,0,0,15,224,0 ,0,15,128,0,0,15,128,0,0,31,128,0,0,31,192,0 ,0,63,224,0,0,63,224,0,0,63,224,0,0,63,224,0 ,0,63,240,0,0,55,240,0,0,119,240,0,0,127,240,0 ,0,127,240,0,0,127,240,0,0,127,240,0,0,255,252,0 ,0,255,255,0,0,255,255,192,0,255,231,224,0,255,225,224 ,0,255,225,224,0,255,240,0,1,223,240,0,3,223,248,0 ,3,223,248,0,3,255,248,0,1,191,252,0,0,63,252,0 ,0,63,252,0,0,127,254,0,0,126,254,0,0,126,126,0 ,0,124,62,0,0,252,31,0,1,248,31,0,3,248,31,0 ,7,240,31,0,7,224,31,0,7,192,15,0,15,192,15,0 ,15,128,15,128,31,0,15,128,30,0,15,128,56,0,7,128 ,248,0,7,128,240,0,3,128,240,0,3,192,248,0,3,192 ,120,0,3,224,56,0,3,252,24,59,177,29,0,0,0,63 ,0,0,63,128,0,127,128,0,127,128,0,127,128,0,63,192 ,0,63,128,0,63,128,0,63,0,0,62,0,0,62,0,0 ,127,0,0,127,128,0,255,128,0,255,128,0,255,192,0,255 ,128,0,255,192,0,255,192,0,255,192,0,255,192,0,255,192 ,0,255,192,0,255,192,0,255,192,0,255,192,0,255,192,0 ,255,224,0,255,240,0,255,248,0,255,252,1,255,252,3,191 ,216,3,255,224,3,223,224,1,159,224,0,31,224,0,31,224 ,0,31,224,0,15,240,0,15,240,0,15,240,0,63,240,0 ,127,240,0,255,240,1,253,240,3,249,240,7,241,240,7,193 ,240,15,129,240,63,0,240,252,0,240,248,0,240,120,0,112 ,56,0,112,56,0,112,56,0,120,28,0,124,0,0,127,16 ,60,120,25,0,0,0,248,1,252,1,254,3,254,3,252,1 ,254,1,252,1,252,1,252,3,240,3,240,3,240,7,248,7 ,252,7,252,7,252,7,252,7,252,3,254,3,254,3,254,3 ,254,3,252,3,252,3,252,3,252,3,252,7,252,7,252,15 ,248,15,248,7,252,7,252,3,252,3,252,3,252,3,254,3 ,254,1,254,1,254,1,254,1,255,1,255,0,255,1,254,3 ,248,7,248,7,224,15,240,31,240,63,240,249,240,249,224,240 ,224,240,224,112,224,120,224,56,240,24,248,0,254,23,59,177 ,25,0,0,1,248,0,3,252,0,3,252,0,3,252,0,3 ,252,0,3,252,0,1,252,0,1,252,0,1,248,0,3,224 ,0,3,224,0,7,240,0,15,248,0,15,248,0,15,252,0 ,15,252,0,15,252,0,15,252,0,15,252,0,15,252,0,15 ,252,0,15,252,0,31,254,0,31,255,128,31,255,192,31,255 ,240,31,251,252,31,248,124,31,240,60,63,248,0,63,252,0 ,127,254,0,255,255,0,255,255,0,239,255,128,79,255,128,15 ,255,128,15,223,192,15,143,224,31,135,224,31,3,224,31,3 ,224,31,3,224,62,3,224,62,3,224,62,3,224,126,3,224 ,124,3,224,124,3,192,124,3,192,124,3,192,56,1,192,56 ,1,192,56,1,192,120,1,240,120,1,254,124,1,254,126,1 ,240,127,128,128,28,60,240,28,0,0,0,8,0,0,0,63 ,0,0,0,127,0,0,0,127,0,0,0,127,0,0,0,127 ,128,0,0,127,128,0,0,63,128,0,0,63,0,0,0,127 ,0,0,0,124,0,0,0,252,0,0,0,254,0,0,0,254 ,0,0,1,255,0,0,1,255,0,0,1,255,128,0,1,255 ,128,0,3,255,128,0,3,255,128,0,3,255,128,0,3,255 ,128,0,3,255,128,0,3,255,240,0,7,255,255,0,7,255 ,255,128,7,255,63,128,15,255,7,128,15,254,0,0,15,254 ,0,0,15,254,0,0,31,255,0,0,31,255,0,0,63,255 ,128,0,63,255,128,0,59,255,192,0,3,255,192,0,3,255 ,192,0,3,255,192,0,3,239,192,0,3,231,192,0,7,199 ,224,0,7,195,224,0,7,195,224,0,15,129,240,0,31,129 ,240,0,31,1,240,0,30,1,248,0,62,1,248,0,62,0 ,248,0,62,0,252,0,60,0,124,0,60,0,60,0,56,0 ,62,0,56,0,30,0,112,0,15,240,120,0,7,240,248,0 ,7,240,252,0,7,128,126,0,7,0}; /*---- Free Universal fonts: 17,20 and 42 names: u8g_font_fur17r,u8g_font_fur20r,u8g_font_fur42n //3146, 3976, 2194 bytes Free Universal bold fonts 17,20,42 names u8g_font_fub17r,u8g_font_fub20r,u8g_font_fub42n //3222, 4022, 2270 bytes ----*/ unsigned char dx[]={0,7,15,22,25}; #define Flash_Address 0x100000 void setup() { delay(4000); mydisp.begin(); mydisp.displayStartScreen(0); //disable welcome screen mydisp.displayConfig(0); //disable show module config mydisp.clearScreen(); unsigned char section=0; mydisp.clearScreen(); mydisp.print("uploading user font now...#1 size:"); mydisp.print(sizeof(myfont)); #if defined(_Digole_2M_Flash_) mydisp.flashErase(Flash_Address,8192); mydisp.flashWrite(Flash_Address,sizeof(myfont),myfont); delay(500); mydisp.clearScreen(); mydisp.setFlashFont(Flash_Address); #else delay(1000); //this delay is very important, it will let module to clear the receive buffer mydisp.downloadUserFont(sizeof(myfont),myfont,section); delay(500); mydisp.clearScreen(); mydisp.setFont(200+section); #endif mydisp.setColor(1); // mydisp.drawStr(2,3,"01234"); mydisp.setMode('~'); unsigned int x=0; unsigned char dx[]={0,7,15,22,25}; while(1) { for(unsigned char i=0;i<5;i++) { mydisp.setTextPosAbs(x+dx[i],60); mydisp.print((char)(i+48)); delay(200); mydisp.setTextPosAbs(x+dx[i],60); mydisp.print((char)(i+48)); } x+=30; if(x>200) x=0; } } void loop() { }