Shinichi Takayama / Mbed OS MIP8f_ThunderBoard2
Committer:
STakayama
Date:
Wed May 16 09:23:41 2018 +0000
Revision:
5:79dc134e6033
Parent:
4:588bc9618fff
Child:
6:aaba08f73be5
SPI->GPIO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
STakayama 0:dbc295c4383e 1
STakayama 0:dbc295c4383e 2
STakayama 0:dbc295c4383e 3 #include "mbed.h"
STakayama 4:588bc9618fff 4 #include "Si1133.h"
STakayama 3:79758cbd4a92 5 #include "SPI_MIP16.h"
STakayama 2:0585ae14d9a9 6 #include "data.h"
STakayama 5:79dc134e6033 7 #include "HGP23x29.h"
STakayama 5:79dc134e6033 8 #include "HGP15x19.h"
STakayama 5:79dc134e6033 9 //Si1133 uv_sensor(PC4, PC5);
STakayama 0:dbc295c4383e 10
STakayama 3:79758cbd4a92 11 WatchDisp WD(PK0,PK2,PF7,PA5); //PTC12); // mosi,miso,clk,cs,disp,power(EXTMODE)
STakayama 3:79758cbd4a92 12 DigitalOut _lcd_disp(PA8); // DISP
STakayama 3:79758cbd4a92 13 DigitalOut _lcd_extmod(PF6); // EXTMODE
STakayama 3:79758cbd4a92 14 //_lcd_reset(reset),_lcd_extcom(extcom)
STakayama 0:dbc295c4383e 15
STakayama 5:79dc134e6033 16 //InterruptIn UV_INT(PA6); // YV Interrupt
STakayama 5:79dc134e6033 17 //DigitalIn PushSW0(PD14); // Switch
STakayama 5:79dc134e6033 18 //DigitalIn PushSW1(PD15); // Switch
STakayama 0:dbc295c4383e 19
STakayama 0:dbc295c4383e 20 DigitalOut ledPJ14(PJ14);
STakayama 0:dbc295c4383e 21 DigitalOut led1(LED1);
STakayama 0:dbc295c4383e 22 DigitalOut ledPI0(PI0);
STakayama 0:dbc295c4383e 23 DigitalOut ledPI1(PI1);
STakayama 0:dbc295c4383e 24 DigitalOut ledPI2(PI2);
STakayama 0:dbc295c4383e 25 DigitalOut ledPI3(PI3);
STakayama 0:dbc295c4383e 26 DigitalOut ledR(PD11);
STakayama 0:dbc295c4383e 27 DigitalOut ledG(PD12);
STakayama 0:dbc295c4383e 28 DigitalOut ledB(PD13);
STakayama 0:dbc295c4383e 29
STakayama 3:79758cbd4a92 30 uint8_t ccolor_table[] = {Black,Gray,Blue ,LightBlue ,Green ,LightGreen ,Cyan ,LightCyan,
STakayama 3:79758cbd4a92 31 Red ,pink,Magenta,LightMagenta,Yellow,LightYellow,LightGray,White};
STakayama 0:dbc295c4383e 32 bool if16 = 0;
STakayama 0:dbc295c4383e 33 bool ifMargeTXT = 0;
STakayama 3:79758cbd4a92 34 int width =176;
STakayama 3:79758cbd4a92 35 int height=176;
STakayama 3:79758cbd4a92 36 int test_lcd(void)
STakayama 3:79758cbd4a92 37 {
STakayama 3:79758cbd4a92 38 int i;
STakayama 3:79758cbd4a92 39 // Power On Sequece
STakayama 3:79758cbd4a92 40 // _lcd_reset = 0;
STakayama 3:79758cbd4a92 41 // _lcd_reset = 1;
STakayama 3:79758cbd4a92 42 _lcd_extmod = 1;
STakayama 3:79758cbd4a92 43 _lcd_extmod = 0;
STakayama 3:79758cbd4a92 44 _lcd_disp = 1; // hontoha 0
STakayama 3:79758cbd4a92 45 // command(0);
STakayama 5:79dc134e6033 46
STakayama 3:79758cbd4a92 47 WD.setWH(width,height); // Default X/Y
STakayama 3:79758cbd4a92 48 bool if16 = 1;
STakayama 3:79758cbd4a92 49 WD.set16col(if16); // 0= RGB, 1=RGBW
STakayama 3:79758cbd4a92 50 WD.setmarge(1);
STakayama 3:79758cbd4a92 51 WD.background(White);
STakayama 3:79758cbd4a92 52 WD.foreground(LightGreen);
STakayama 3:79758cbd4a92 53 WD.clsBUF();
STakayama 3:79758cbd4a92 54 WD.fillrect(i*(width/16), height/2+1, (i+1)*(width/16)-1, height , ccolor_table[15-i]);
STakayama 5:79dc134e6033 55
STakayama 5:79dc134e6033 56 WD.writeDISP();
STakayama 5:79dc134e6033 57
STakayama 5:79dc134e6033 58 WD.foreground(Green);
STakayama 5:79dc134e6033 59 WD.set_font((unsigned char*) HGP23x29);
STakayama 5:79dc134e6033 60 WD.locate(2,2); WD.printf("ABCDEFGHIJK");
STakayama 5:79dc134e6033 61 WD.foreground(Red);
STakayama 5:79dc134e6033 62 WD.set_font((unsigned char*) HGP15x19);
STakayama 5:79dc134e6033 63 WD.locate(2,32); WD.printf("NOPQRSTUVWXYZ");
STakayama 5:79dc134e6033 64 WD.foreground(Blue);
STakayama 5:79dc134e6033 65 if(height>88){
STakayama 5:79dc134e6033 66 WD.set_font((unsigned char*) HGP15x19);
STakayama 5:79dc134e6033 67 WD.locate(10,80); WD.printf("abcdefghijklmnopqrstuvwxyz");
STakayama 5:79dc134e6033 68 WD.locate(10,115); WD.printf("0123456789");
STakayama 5:79dc134e6033 69 WD.locate(10,150); WD.printf("Hello world");
STakayama 5:79dc134e6033 70 }
STakayama 5:79dc134e6033 71 WD.writeDISP();
STakayama 5:79dc134e6033 72
STakayama 3:79758cbd4a92 73 _lcd_disp = 1;
STakayama 3:79758cbd4a92 74 return 0;
STakayama 5:79dc134e6033 75 /**/
STakayama 3:79758cbd4a92 76 }
STakayama 0:dbc295c4383e 77
STakayama 1:dfd9046278b7 78 void uv_init_proc(void)
STakayama 1:dfd9046278b7 79 {
STakayama 1:dfd9046278b7 80 ;
STakayama 1:dfd9046278b7 81 }
STakayama 1:dfd9046278b7 82
STakayama 5:79dc134e6033 83 DigitalOut _pk1(PK1,1);
STakayama 5:79dc134e6033 84
STakayama 5:79dc134e6033 85 DigitalOut _mosi(PK0,1);
STakayama 5:79dc134e6033 86 DigitalOut _clk(PF7,1);
STakayama 5:79dc134e6033 87 DigitalOut _cs(PA5,1);
STakayama 2:0585ae14d9a9 88
STakayama 0:dbc295c4383e 89 int main() {
STakayama 5:79dc134e6033 90 _pk1=1;
STakayama 5:79dc134e6033 91 printf("Start Program!\n");
STakayama 1:dfd9046278b7 92 ledPJ14 =1;
STakayama 0:dbc295c4383e 93 ledPI0 =1; ledPI1 =1; ledPI2 =1; ledPI3 =1;
STakayama 5:79dc134e6033 94 // UV_INT.fall(&uv_init_proc);
STakayama 3:79758cbd4a92 95 test_lcd();
STakayama 5:79dc134e6033 96 // if (!uv_sensor.open()) printf("Device Error detected!\n");
STakayama 4:588bc9618fff 97 int i;
STakayama 0:dbc295c4383e 98 while(1){
STakayama 4:588bc9618fff 99 i++;
STakayama 5:79dc134e6033 100 //_clk = (i%2==0)?(1):(0);
STakayama 5:79dc134e6033 101 //_mosi= (i%8==0)?(1):(0);
STakayama 5:79dc134e6033 102 //_cs = (i%16==0)?(1):(0);
STakayama 5:79dc134e6033 103
STakayama 5:79dc134e6033 104 led1 = (i%8==0)?(1):(0);
STakayama 4:588bc9618fff 105 printf("aaa %d\n\r",i);
STakayama 5:79dc134e6033 106 // float light_level = (float)uv_sensor.get_light_level();
STakayama 5:79dc134e6033 107 // printf("Lux = %.3f\n", (float)light_level);
STakayama 5:79dc134e6033 108 // //Print the current UV index
STakayama 5:79dc134e6033 109 // float uv_index = (float)uv_sensor.get_uv_index();
STakayama 5:79dc134e6033 110 // printf("UV index = %.3f\n", (float) uv_index);
STakayama 5:79dc134e6033 111 //Sleep for 0.5 seconds
STakayama 5:79dc134e6033 112 wait(0.01);
STakayama 0:dbc295c4383e 113 }
STakayama 0:dbc295c4383e 114 }
STakayama 2:0585ae14d9a9 115
STakayama 0:dbc295c4383e 116 /* MIP Main Reference
STakayama 0:dbc295c4383e 117 #include "stdio.h"
STakayama 0:dbc295c4383e 118 #include "string"
STakayama 0:dbc295c4383e 119 #include "mbed.h"
STakayama 0:dbc295c4383e 120 #include "SPI_MIP8.h"
STakayama 0:dbc295c4383e 121 #include "SDFileSystem.h"
STakayama 0:dbc295c4383e 122 #include "StateSW.h"
STakayama 0:dbc295c4383e 123 #include "TglSW.h"
STakayama 0:dbc295c4383e 124
STakayama 0:dbc295c4383e 125
STakayama 0:dbc295c4383e 126 #include "Arial28x28.h"
STakayama 0:dbc295c4383e 127 #include "Prototype29x28.h"
STakayama 0:dbc295c4383e 128 #include "Prototype70x86.h"
STakayama 0:dbc295c4383e 129 #include "HGP23x29.h"
STakayama 0:dbc295c4383e 130 #include "HGP15x19.h"
STakayama 0:dbc295c4383e 131 #include "symbol.h"
STakayama 0:dbc295c4383e 132
STakayama 0:dbc295c4383e 133 #define ON 1
STakayama 0:dbc295c4383e 134 #define OFF 0
STakayama 0:dbc295c4383e 135
STakayama 0:dbc295c4383e 136
STakayama 0:dbc295c4383e 137 //K64F
STakayama 0:dbc295c4383e 138 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // mosi,miso,sck,cs
STakayama 0:dbc295c4383e 139 memLCD8 WD(PTD2,PTD3,PTD1,PTD0,PTC4,PTD3); //PTC12); // mosi,miso,clk,cs,disp,power
STakayama 0:dbc295c4383e 140
STakayama 0:dbc295c4383e 141 TglSW HaltSW(PTA4); // SW3
STakayama 0:dbc295c4383e 142 InterruptIn OffSW(SW2);
STakayama 0:dbc295c4383e 143 DigitalIn TexSW(SW3);
STakayama 0:dbc295c4383e 144
STakayama 0:dbc295c4383e 145 void SD2BUF(char *filepath);
STakayama 0:dbc295c4383e 146 void SetMenu(void);
STakayama 0:dbc295c4383e 147 void OffSequence(void);
STakayama 0:dbc295c4383e 148 void DispAllDir(const char *fsrc);
STakayama 0:dbc295c4383e 149 void ReadBmp(const char *fsrc, uint32_t FileNum);
STakayama 0:dbc295c4383e 150 uint32_t CntFile(const char *fsrc);
STakayama 0:dbc295c4383e 151 int Menu = 0;
STakayama 0:dbc295c4383e 152 bool if16 = 0;
STakayama 0:dbc295c4383e 153 bool ifMargeTXT = 0;
STakayama 0:dbc295c4383e 154 int width =400;
STakayama 0:dbc295c4383e 155 int height=240;
STakayama 0:dbc295c4383e 156
STakayama 0:dbc295c4383e 157
STakayama 0:dbc295c4383e 158 int main() {
STakayama 0:dbc295c4383e 159
STakayama 0:dbc295c4383e 160 uint32_t filenum=0;
STakayama 0:dbc295c4383e 161 char filepath[40];
STakayama 0:dbc295c4383e 162 char pol;
STakayama 0:dbc295c4383e 163
STakayama 0:dbc295c4383e 164 if(OffSW==0) if16 = 1; //16color MODE
STakayama 0:dbc295c4383e 165 else if16 = 0;
STakayama 0:dbc295c4383e 166
STakayama 0:dbc295c4383e 167
STakayama 0:dbc295c4383e 168 if(TexSW==0) ifMargeTXT = 1;
STakayama 0:dbc295c4383e 169 ifMargeTXT = 0;
STakayama 0:dbc295c4383e 170 WD.setmarge(1);
STakayama 0:dbc295c4383e 171
STakayama 0:dbc295c4383e 172 sd.disk_initialize();
STakayama 0:dbc295c4383e 173 HaltSW.Enable(1);
STakayama 0:dbc295c4383e 174
STakayama 0:dbc295c4383e 175
STakayama 0:dbc295c4383e 176 FILE *fp = fopen("/sd/settings.txt", "rb");
STakayama 0:dbc295c4383e 177 if(fp != NULL) {
STakayama 0:dbc295c4383e 178 fscanf(fp, "%d",&width);
STakayama 0:dbc295c4383e 179 fscanf(fp, "%d",&height);
STakayama 0:dbc295c4383e 180 sprintf(filepath,"/sd/%dx%d",width,height); //DispAllDir("/sd/180x180")
STakayama 0:dbc295c4383e 181 }
STakayama 0:dbc295c4383e 182 else{
STakayama 0:dbc295c4383e 183 width =180;
STakayama 0:dbc295c4383e 184 height=180;
STakayama 0:dbc295c4383e 185 sprintf(filepath,"/sd/180x180"); //DispAllDir("/sd/180x180")
STakayama 0:dbc295c4383e 186 }
STakayama 0:dbc295c4383e 187 fclose(fp);
STakayama 0:dbc295c4383e 188
STakayama 0:dbc295c4383e 189
STakayama 0:dbc295c4383e 190 OffSW.fall(&OffSequence); // OFF Sequence
STakayama 0:dbc295c4383e 191 WD.setWH(width,height);
STakayama 0:dbc295c4383e 192
STakayama 0:dbc295c4383e 193 WD.background(Black);
STakayama 0:dbc295c4383e 194 WD.clsBUF();
STakayama 0:dbc295c4383e 195 WD.writeDISP();
STakayama 0:dbc295c4383e 196 WD.SwDisp(1);
STakayama 0:dbc295c4383e 197
STakayama 0:dbc295c4383e 198 while(HaltSW.State()){}
STakayama 0:dbc295c4383e 199 HaltSW.Clear();
STakayama 0:dbc295c4383e 200 // WD.background(White);
STakayama 0:dbc295c4383e 201 // WD.clsBUF();
STakayama 0:dbc295c4383e 202 // for (int i=0; i<8; i++) WD.fillrect(i*26+6,16, i*26+6+20, 36, i*2);
STakayama 0:dbc295c4383e 203 // WD.writeDISP();
STakayama 0:dbc295c4383e 204 // wait(0.5);
STakayama 0:dbc295c4383e 205 // while(HaltSW.State()){}
STakayama 0:dbc295c4383e 206 // HaltSW.Clear();
STakayama 0:dbc295c4383e 207
STakayama 0:dbc295c4383e 208
STakayama 0:dbc295c4383e 209 while(1){ //BITMAPS
STakayama 0:dbc295c4383e 210
STakayama 0:dbc295c4383e 211 filenum = CntFile(filepath);
STakayama 0:dbc295c4383e 212 for(uint32_t i=0; i<filenum; i++){
STakayama 0:dbc295c4383e 213 ReadBmp(filepath,i);
STakayama 0:dbc295c4383e 214
STakayama 0:dbc295c4383e 215 while(HaltSW.State()){ // VCOM invert when image is still
STakayama 0:dbc295c4383e 216 pol++;
STakayama 0:dbc295c4383e 217 WD.command( (pol << 6) & 0x40 );
STakayama 0:dbc295c4383e 218 wait(1); //1Hz
STakayama 0:dbc295c4383e 219 }
STakayama 0:dbc295c4383e 220 // Brink
STakayama 0:dbc295c4383e 221 // for(char j = 0; j < 8; j++){
STakayama 0:dbc295c4383e 222 // pol = j&0x01;
STakayama 0:dbc295c4383e 223 // EnterOrLeave = (j+1)&0x01;
STakayama 0:dbc295c4383e 224 // WD.command( (pol << 6) | (EnterOrLeave << 3) );
STakayama 0:dbc295c4383e 225 // wait(0.2);
STakayama 0:dbc295c4383e 226 // }
STakayama 0:dbc295c4383e 227
STakayama 0:dbc295c4383e 228 HaltSW.Clear();
STakayama 0:dbc295c4383e 229 WD.writeDISP();
STakayama 0:dbc295c4383e 230 wait(2);
STakayama 0:dbc295c4383e 231 }
STakayama 0:dbc295c4383e 232 }
STakayama 0:dbc295c4383e 233 }
STakayama 0:dbc295c4383e 234
STakayama 0:dbc295c4383e 235
STakayama 0:dbc295c4383e 236 void SD2BUF(char *filepath){
STakayama 0:dbc295c4383e 237 char R8[1],G8[1],B8[1] ,DUMMY[1];
STakayama 0:dbc295c4383e 238 int RGB;
STakayama 0:dbc295c4383e 239 FILE *fp ;
STakayama 0:dbc295c4383e 240
STakayama 0:dbc295c4383e 241 fp = fopen(filepath, "rb");
STakayama 0:dbc295c4383e 242 if(fp != NULL) {
STakayama 0:dbc295c4383e 243 for(int i=0; i< 54 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 54bytes
STakayama 0:dbc295c4383e 244 for(int y=height-1; y>=0; y--) {
STakayama 0:dbc295c4383e 245 for(int x=0; x< width; x++) { //24bit color B 8bit -> G 8bit -> R 8bit
STakayama 0:dbc295c4383e 246 fscanf(fp, "%c",B8);
STakayama 0:dbc295c4383e 247 fscanf(fp, "%c",G8);
STakayama 0:dbc295c4383e 248 fscanf(fp, "%c",R8);
STakayama 0:dbc295c4383e 249
STakayama 0:dbc295c4383e 250 RGB = RGB8(*R8,*G8,*B8); //6bit(8bit) MIP MASK 0000 1110
STakayama 0:dbc295c4383e 251 WD.pixel(x,y,RGB);
STakayama 0:dbc295c4383e 252 }
STakayama 0:dbc295c4383e 253 if( y!=0) // The last data column doesn't need padding
STakayama 0:dbc295c4383e 254 for(int x=(width*3)%4; (x%4 !=0); x++) fscanf(fp, "%c",DUMMY); // 4byte boundery for every column
STakayama 0:dbc295c4383e 255 }
STakayama 0:dbc295c4383e 256 }
STakayama 0:dbc295c4383e 257 fclose(fp);
STakayama 0:dbc295c4383e 258 }
STakayama 0:dbc295c4383e 259
STakayama 0:dbc295c4383e 260 void SDtex2BUF(char *filepath){
STakayama 0:dbc295c4383e 261 int x,y,font,color;
STakayama 0:dbc295c4383e 262 char text[40];
STakayama 0:dbc295c4383e 263 int ifEOF;
STakayama 0:dbc295c4383e 264 FILE *fp ;
STakayama 0:dbc295c4383e 265
STakayama 0:dbc295c4383e 266 fp = fopen(filepath, "r");
STakayama 0:dbc295c4383e 267 if(fp != NULL) {
STakayama 0:dbc295c4383e 268 // for(int i=0; i<3; i++){
STakayama 0:dbc295c4383e 269 while(ifEOF != -1){
STakayama 0:dbc295c4383e 270 ifEOF = fscanf(fp,"%d,%d,%d,%d,%[^,],",&x,&y,&font,&color,text);
STakayama 0:dbc295c4383e 271 WD.locate(x,y);
STakayama 0:dbc295c4383e 272 WD.foreground(color);
STakayama 0:dbc295c4383e 273 if (font ==1) WD.set_font((unsigned char*) HGP15x19);
STakayama 0:dbc295c4383e 274 else if (font ==2) WD.set_font((unsigned char*) HGP23x29);
STakayama 0:dbc295c4383e 275 else if (font ==3) WD.set_font((unsigned char*) Arial28x28);
STakayama 0:dbc295c4383e 276 else WD.set_font((unsigned char*) Prototype70x86);
STakayama 0:dbc295c4383e 277
STakayama 0:dbc295c4383e 278 WD.printf("%s",text);
STakayama 0:dbc295c4383e 279 }
STakayama 0:dbc295c4383e 280 }
STakayama 0:dbc295c4383e 281 fclose(fp);
STakayama 0:dbc295c4383e 282 }
STakayama 0:dbc295c4383e 283
STakayama 0:dbc295c4383e 284
STakayama 0:dbc295c4383e 285 void OffSequence(void){
STakayama 0:dbc295c4383e 286 WD.background(Black);
STakayama 0:dbc295c4383e 287 WD.clsBUF();
STakayama 0:dbc295c4383e 288 WD.SwDisp(0);
STakayama 0:dbc295c4383e 289 WD.writeDISP();
STakayama 0:dbc295c4383e 290 WD.writeDISP();
STakayama 0:dbc295c4383e 291
STakayama 0:dbc295c4383e 292 }
STakayama 0:dbc295c4383e 293 void DispAllDir(const char *fsrc)
STakayama 0:dbc295c4383e 294 {
STakayama 0:dbc295c4383e 295 DIR *d = opendir(fsrc);
STakayama 0:dbc295c4383e 296 struct dirent *p;
STakayama 0:dbc295c4383e 297 char filepath[40];
STakayama 0:dbc295c4383e 298
STakayama 0:dbc295c4383e 299 while ((p = readdir(d)) != NULL) {
STakayama 0:dbc295c4383e 300 sprintf(filepath, "%s/%s",fsrc,p->d_name);
STakayama 0:dbc295c4383e 301 SD2BUF(filepath);
STakayama 0:dbc295c4383e 302 WD.writeDISP();
STakayama 0:dbc295c4383e 303 }
STakayama 0:dbc295c4383e 304 closedir(d);
STakayama 0:dbc295c4383e 305 }
STakayama 0:dbc295c4383e 306
STakayama 0:dbc295c4383e 307 void ReadBmp(const char *fsrc, uint32_t FileNum)
STakayama 0:dbc295c4383e 308 {
STakayama 0:dbc295c4383e 309 DIR *d = opendir(fsrc);
STakayama 0:dbc295c4383e 310 struct dirent *p;
STakayama 0:dbc295c4383e 311 char filepath[40];
STakayama 0:dbc295c4383e 312
STakayama 0:dbc295c4383e 313 for(uint32_t i=0; i< FileNum; i++) readdir(d);
STakayama 0:dbc295c4383e 314 if ((p = readdir(d)) != NULL) {
STakayama 0:dbc295c4383e 315 sprintf(filepath, "%s/%s",fsrc,p->d_name);
STakayama 0:dbc295c4383e 316 SD2BUF(filepath);
STakayama 0:dbc295c4383e 317 if(ifMargeTXT){
STakayama 0:dbc295c4383e 318 sprintf(filepath, "%s_txt/%s.txt",fsrc,p->d_name);
STakayama 0:dbc295c4383e 319 SDtex2BUF(filepath);
STakayama 0:dbc295c4383e 320 }
STakayama 0:dbc295c4383e 321 }
STakayama 0:dbc295c4383e 322 closedir(d);
STakayama 0:dbc295c4383e 323 }
STakayama 0:dbc295c4383e 324
STakayama 0:dbc295c4383e 325 uint32_t CntFile(const char *fsrc)
STakayama 0:dbc295c4383e 326 {
STakayama 0:dbc295c4383e 327 DIR *d = opendir(fsrc);
STakayama 0:dbc295c4383e 328 uint32_t counter = 0;
STakayama 0:dbc295c4383e 329 while (readdir(d)!= NULL) counter++;
STakayama 0:dbc295c4383e 330 closedir(d);
STakayama 0:dbc295c4383e 331 return counter;
STakayama 0:dbc295c4383e 332 }
STakayama 0:dbc295c4383e 333
STakayama 0:dbc295c4383e 334 */