@ -70,8 +70,11 @@ static uint8_t micro_oled_screen_current[LCDWIDTH * LCDHEIGHT / 8] = {0};
D6 D6 . . . . . . . . . . . . . D6 /
D7 D7 . . . . . . . . . . . . . D7 - - - -
*/
# if LCDWIDTH == 64
# ifdef NO_LCD_SPLASH
// do not initialize with a splash screen
static uint8_t micro_oled_screen_buffer [ LCDWIDTH * LCDHEIGHT / 8 ] = { 0 } ;
# else
# if LCDWIDTH == 64
# if LCDHEIGHT == 48
static uint8_t micro_oled_screen_buffer [ ] = {
// QMK Logo - generated at http://www.majer.ch/lcd/adf_bitmap.php
@ -80,7 +83,7 @@ static uint8_t micro_oled_screen_buffer[] = {
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x8C , 0x8C , 0x8C , 0x8C , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x8C , 0x8C , 0x8C , 0x8C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x31 , 0x31 , 0x31 , 0x31 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFC , 0xF8 , 0xF1 , 0xE3 , 0xE7 , 0xCF , 0xCF , 0xCF , 0xCF , 0x00 , 0x00 , 0xCF , 0xCF , 0xCF , 0xC7 , 0xE7 , 0xE3 , 0xF1 , 0xF8 , 0xFC , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x31 , 0x31 , 0x31 , 0x31 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x06 , 0x06 , 0x06 , 0x06 , 0x1F , 0x7F , 0x7F , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xF8 , 0xF8 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x7F , 0x7F , 0x1F , 0x06 , 0x06 , 0x06 , 0x06 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x0F , 0x0F , 0x00 , 0x00 , 0x00 , 0x0F , 0x0F , 0x00 , 0x00 , 0x00 , 0x0F , 0x0F , 0x00 , 0x00 , 0x00 , 0x0F , 0x0F , 0x00 , 0x00 , 0x00 , 0x0F , 0x0F , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } ;
# endif
# elif LCDWIDTH == 128
# elif LCDWIDTH == 128
# if LCDHEIGHT == 32
static uint8_t micro_oled_screen_buffer [ LCDWIDTH * LCDHEIGHT / 8 ] = {
// 128x32 qmk image
@ -100,9 +103,10 @@ static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {0x00, 0x00,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } ;
// TODO: generate bitmap of QMK logo here
# endif
# else
# else
// catchall for custom screen sizes
static uint8_t micro_oled_screen_buffer [ LCDWIDTH * LCDHEIGHT / 8 ] = { 0 } ;
# endif
# endif
void micro_oled_init ( void ) {
@ -145,7 +149,7 @@ void micro_oled_init(void) {
# endif
send_command ( MEMORYMODE ) ;
send_command ( 0x1 0 ) ;
send_command ( 0x02 ) ; // 0x02 = 10b, Page addressing mode
send_command ( SETCOMPINS ) ; // 0xDA
if ( LCDHEIGHT > 32 ) {
@ -250,13 +254,14 @@ void send_buffer(void) {
if ( micro_oled_screen_buffer [ i * LCDWIDTH + j ] ! = micro_oled_screen_current [ i * LCDWIDTH + j ] ) {
if ( page_addr ! = i ) {
set_page_address ( i ) ;
page_addr = i ;
}
if ( col_addr ! = j ) {
set_column_address ( j ) ;
col_addr = j + 1 ;
}
send_data ( micro_oled_screen_buffer [ i * LCDWIDTH + j ] ) ;
micro_oled_screen_current [ i * LCDWIDTH + j ] = micro_oled_screen_buffer [ i * LCDWIDTH + j ] ;
col_addr = j + 1 ;
}
}
}