xeye_ atsu
/
SPIOLEDaitendo
Diff: main.cpp
- Revision:
- 0:2c787ad08fad
diff -r 000000000000 -r 2c787ad08fad main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jan 21 08:37:01 2011 +0000 @@ -0,0 +1,108 @@ +// ALO-095BWNN-J9 test program +// See also "http://www.aitendo.co.jp/product/2099" + + +#include "mbed.h" +#include "spioled.h" +#define countof(x) ( sizeof(x) / sizeof(x[0]) ) + +SPIOLED oled(p21, p22, p23, p5, p6, p7); //cs res dc mosi miso sck + +bool kstate = false; +unsigned int kbuf; +unsigned char x_locale = 0; +unsigned char y_locale = 0; + + +unsigned int findface(unsigned short c){ + unsigned int p = 0; + int i, sum; + for(sum = i = 0; i < countof(font8table); i++){ + if(font8table[i].start <= c && c <= font8table[i].end){ + p = (sum + c - font8table[i].start); + break; + } + sum += font8table[i].end - font8table[i].start + 1; + } + return p; +} + +void drawc(unsigned char c){ + if(kstate){ // 2nd byte of shift-jis + kstate = false; + unsigned int p = findface(kbuf << 8 | c); + oled.PutChar( x_locale , y_locale ,p); + // printf("%x %x\r\n",( kbuf << 8 | c),p); //for debug + x_locale += X_Witch; + if(x_locale + (X_Witch - 1) >= Dis_X_MAX){ + x_locale = 0; + y_locale += Y_Witch; + if(y_locale >= Dis_Y_MAX)y_locale=0; + } + + } else if((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)){ // 1st byte of shift-jis + kstate = true; + kbuf = c; + } else { + oled.PutChar_ABC( x_locale , y_locale ,c); + x_locale += 6; + if(x_locale + (X_Witch - 1) >= Dis_X_MAX){ + x_locale = 0; + y_locale += Y_Witch; + if(y_locale >= Dis_Y_MAX)y_locale=0; + } + } + +} + +void draws(unsigned char x, unsigned char y, char *s){ + unsigned char c; + x_locale = x; + y_locale = y; + while((c = *s++) != '\0')drawc(c); +} + + + +int main() { + LocalFileSystem local( "local" ); + char s[ 256 ]; + FILE *fp; + + printf( "\r\nreading a message file.\r\n" ); + + if ( NULL == (fp = fopen( "/local/test.txt", "r" )) ) { + printf( "\r\nError: The message file cannot be accessed\r\n" ); + return -1; + } + + fgets( s, 256, fp ); + fclose( fp ); + + + + +while(1){ + // OLED_Init(); + + oled.Full_Screen(0x0018); //full red color in OLED + // wait_ms(500); + oled.Full_Screen(0x07e0); //full green color in OLED + // wait_ms(500); + oled.Full_Screen(0xf800); //full blue color in OLED + // wait_ms(500); + oled.Full_Screen(0xffff); //full white color in OLED + wait_ms(500); + + + + + oled.ChangeFontColor(0); + draws(1,0,s); + wait_ms(5000); + oled.Full_Screen(0); + oled.ChangeFontColor(0xffff); + draws(1,0,s); + wait_ms(5000); + } +}