diff --git a/examples/i2c_oled/i2c_oled.c b/examples/i2c_oled/i2c_oled.c index a882f07822256aef286603eaf5c5ea56befcf42a..8181ea9abfd36c0c3ec0c7f9b87c00de99e494ee 100644 --- a/examples/i2c_oled/i2c_oled.c +++ b/examples/i2c_oled/i2c_oled.c @@ -13,8 +13,7 @@ int main() { - uint32_t count = 0; - + // 48MHz internal clock SystemInit48HSI(); // start serial @ default 115200bps @@ -27,49 +26,72 @@ int main() printf("initializing i2c oled..."); if(!oled_init()) { - //memset(oled_buffer, 0, sizeof(oled_buffer)); - - //for(int i=0;i<sizeof(oled_buffer);i++) - // oled_buffer[i] = i; - - //for(int i=0;i<OLED_W;i++) - //{ - // oled_drawPixel(i, i>>2, 1); - // oled_drawPixel(i, OLED_H-1-(i>>2), 1); - //} - - //uint8_t y= 0; - //for(uint8_t x=0;x<OLED_W;x+=16) - //{ - // oled_drawLine(x, 0, OLED_W, y, 1); - // oled_drawLine(OLED_W-x, OLED_H, 0, OLED_H-y, 1); - // y+= 4; - //} - - //for(uint8_t x=0;x<OLED_W;x+=16) - // if(x<64) - // oled_drawCircle(x,16, 15, 1); - // else - // oled_fillCircle(x,16, 15, 1); - - oled_drawstr(0,0, "This is a test", 1); - oled_drawstr(0,8, "of the emergency", 1); - oled_drawstr(0,16,"broadcasting", 1); - oled_drawstr(0,24,"system.",1); - - oled_xorrect(64, 0, 64, 32); - - oled_refresh(); printf("done.\n\r"); + + printf("Looping on test modes..."); + while(1) + { + for(uint8_t mode=0;mode<5;mode++) + { + // clear buffer for next mode + oled_setbuf(0); + + switch(mode) + { + case 0: + for(int i=0;i<sizeof(oled_buffer);i++) + oled_buffer[i] = i; + break; + + case 1: + for(int i=0;i<OLED_W;i++) + { + oled_drawPixel(i, i>>2, 1); + oled_drawPixel(i, OLED_H-1-(i>>2), 1); + } + break; + + case 2: + { + uint8_t y= 0; + for(uint8_t x=0;x<OLED_W;x+=16) + { + oled_drawLine(x, 0, OLED_W, y, 1); + oled_drawLine(OLED_W-x, OLED_H, 0, OLED_H-y, 1); + y+= 4; + } + } + break; + + case 3: + for(uint8_t x=0;x<OLED_W;x+=16) + if(x<64) + oled_drawCircle(x,16, 15, 1); + else + oled_fillCircle(x,16, 15, 1); + break; + + case 4: + oled_drawstr(0,0, "This is a test", 1); + oled_drawstr(0,8, "of the emergency", 1); + oled_drawstr(0,16,"broadcasting", 1); + oled_drawstr(0,24,"system.",1); + + oled_xorrect(64, 0, 64, 32); + break; + + default: + break; + } + oled_refresh(); + + Delay_Ms(2000); + } + } } else printf("failed.\n\r"); - printf("looping...\n\r"); - while(1) - { - count++; - count &= 255; - Delay_Ms( 5 ); - } + printf("Stuck here forever...\n\r"); + while(1); }