EA EPAPER
Dependencies: BurstSPI EaEpaper SDFileSystem frdm_tsi_slider mbed
main.cpp
- Committer:
- jendo1969
- Date:
- 2015-04-20
- Revision:
- 0:41e5a06d916f
File content as of revision 0:41e5a06d916f:
#include "mbed.h" #include "EaEpaper.h" #include "SDFileSystem.h" #include "tsi_sensor.h" #include "img0.h" #include <string> #include <vector> /* This defines will be replaced by PinNames soon */ #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) #define ELEC0 9 #define ELEC1 10 #elif defined (TARGET_KL05Z) #define ELEC0 9 #define ELEC1 8 #else #error TARGET NOT DEFINED #endif EaEpaper epaper(PTD7, // PWR_CTRL PTD6, // BORDER PTE31, // DISCHARGE PTA17, // RESET_DISP PTA16, // BUSY PTC17, // SSEL PTD4, // PWM PTD2,PTD3,PTD1, // MOSI,MISO,SCLK // PTE0,PTE1); // SDA,SDL PTC11,PTC10); // SDA,SDL //SDFileSystem(PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name); SDFileSystem sd(PTE1, PTE3, PTE2, PTE4, "sd" ); //Serial pc(USBTX,USBRX); vector<string> filenames; //filenames are stored in a vector string extern uint8_t _newImage[EA_IMG_BUF_SZ]; Bitmap bitmARM0 = { 264, // XSize 176, // YSize 33, // Bytes in Line (char*)img0_bits // Pointer to picture data }; char img_bits[5808]; Bitmap bitmIMG0 = { 264, // XSize 176, // YSize 33, // Bytes in Line img_bits // Pointer to picture data }; void read_file_names(char *dir) { DIR *dp; struct dirent *dirp; dp = opendir(dir); //read all directory and file names in current directory into filename vector while((dirp = readdir(dp)) != NULL) { filenames.push_back(string(dirp->d_name)); } closedir(dp); } int read_filedata(char* fname) { char buf[128]; char sbuf[10]; int line_idx, idx, len, i,j; uint8_t val; int ret = 0; // strcpy(path, "/sd"); // strcat(path, fname); // pc.printf("PATH = %s\n", path); FILE *fp = fopen(fname, "r"); if(fp == NULL) { // pc.printf("Could not open file for write\n"); ret = 1; return ret; } line_idx = 0; idx = 0; // while( fgets(buf, sizeof(buf), fp) != NULL ) for(j=0;j<484;j++) { fgets(buf, sizeof(buf), fp); line_idx++; // pc.printf("line=%d:%s", line_idx, buf); if(line_idx == 1) { if(strstr(buf,"264") == NULL ) { ret = 1; break; } } if(line_idx == 2) { if(strstr(buf,"176") == NULL ) { ret = 1; break; } } if(line_idx == 3) { continue; } len = strlen(buf); for(i=0;i<len;i++) { if(buf[i] == ',') { strncpy(sbuf, &buf[i-4], 4); /* 型変換 */ sscanf(sbuf, "%x", &val); img_bits[idx] = val; idx++; // i=i+4; } else if(buf[i] == '}') { strncpy(sbuf, &buf[i-5], 4); /* 型変換 */ sscanf(sbuf, "%x", &val); img_bits[idx] = val; idx++; } else if(buf[i] == 0x0D) { break; } } } fclose(fp); return ret; } int main() { char str1[17]; int i; // pc.printf("\nHello World!\n"); TSIAnalogSlider tsi(ELEC0, ELEC1, 40); epaper.cls(); // read file names into vector of strings //read_file_names("/sd"); while (true) { float w; int cnt; int stop_flag = 0; for(i=0;i<1000;i++) { if(i==0) { epaper.print_bm(bitmARM0, 1, 1); epaper.write_disp(); // update screen wait(0.1); } else { sprintf(str1,"%d",i); char idir[14] = "/sd/"; char dir[100] = ""; strcat(dir,idir); strcat(dir,"/"); strcat(dir,str1); strcat(dir,".xbm"); // dir[4] = 0x30 + i; // if(read_filedata("/sd/1.xbm")== 0) if(read_filedata(dir)== 0) { epaper.print_bm(bitmIMG0, 1, 1); epaper.write_disp(); // update screen } else { continue; } cnt = 0; while (true) { w = tsi.readPercentage(); if(w > 0.8) { stop_flag = 1; break; } else if(w > 0.3) { break; } cnt++; if(cnt > 100) { break; } wait(0.1); } // epaper.cls(); if(stop_flag == 1) { break; } } } } }