EA EPAPER

Dependencies:   BurstSPI EaEpaper SDFileSystem frdm_tsi_slider mbed

Committer:
jendo1969
Date:
Mon Apr 20 11:47:36 2015 +0000
Revision:
0:41e5a06d916f
EPAPER
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jendo1969 0:41e5a06d916f 1 #include "mbed.h"
jendo1969 0:41e5a06d916f 2 #include "EaEpaper.h"
jendo1969 0:41e5a06d916f 3 #include "SDFileSystem.h"
jendo1969 0:41e5a06d916f 4 #include "tsi_sensor.h"
jendo1969 0:41e5a06d916f 5 #include "img0.h"
jendo1969 0:41e5a06d916f 6
jendo1969 0:41e5a06d916f 7 #include <string>
jendo1969 0:41e5a06d916f 8 #include <vector>
jendo1969 0:41e5a06d916f 9
jendo1969 0:41e5a06d916f 10 /* This defines will be replaced by PinNames soon */
jendo1969 0:41e5a06d916f 11 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
jendo1969 0:41e5a06d916f 12 #define ELEC0 9
jendo1969 0:41e5a06d916f 13 #define ELEC1 10
jendo1969 0:41e5a06d916f 14 #elif defined (TARGET_KL05Z)
jendo1969 0:41e5a06d916f 15 #define ELEC0 9
jendo1969 0:41e5a06d916f 16 #define ELEC1 8
jendo1969 0:41e5a06d916f 17 #else
jendo1969 0:41e5a06d916f 18 #error TARGET NOT DEFINED
jendo1969 0:41e5a06d916f 19 #endif
jendo1969 0:41e5a06d916f 20
jendo1969 0:41e5a06d916f 21 EaEpaper epaper(PTD7, // PWR_CTRL
jendo1969 0:41e5a06d916f 22 PTD6, // BORDER
jendo1969 0:41e5a06d916f 23 PTE31, // DISCHARGE
jendo1969 0:41e5a06d916f 24 PTA17, // RESET_DISP
jendo1969 0:41e5a06d916f 25 PTA16, // BUSY
jendo1969 0:41e5a06d916f 26 PTC17, // SSEL
jendo1969 0:41e5a06d916f 27 PTD4, // PWM
jendo1969 0:41e5a06d916f 28 PTD2,PTD3,PTD1, // MOSI,MISO,SCLK
jendo1969 0:41e5a06d916f 29 // PTE0,PTE1); // SDA,SDL
jendo1969 0:41e5a06d916f 30 PTC11,PTC10); // SDA,SDL
jendo1969 0:41e5a06d916f 31
jendo1969 0:41e5a06d916f 32 //SDFileSystem(PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name);
jendo1969 0:41e5a06d916f 33 SDFileSystem sd(PTE1, PTE3, PTE2, PTE4, "sd" );
jendo1969 0:41e5a06d916f 34
jendo1969 0:41e5a06d916f 35 //Serial pc(USBTX,USBRX);
jendo1969 0:41e5a06d916f 36
jendo1969 0:41e5a06d916f 37 vector<string> filenames; //filenames are stored in a vector string
jendo1969 0:41e5a06d916f 38
jendo1969 0:41e5a06d916f 39 extern uint8_t _newImage[EA_IMG_BUF_SZ];
jendo1969 0:41e5a06d916f 40
jendo1969 0:41e5a06d916f 41 Bitmap bitmARM0 = {
jendo1969 0:41e5a06d916f 42 264, // XSize
jendo1969 0:41e5a06d916f 43 176, // YSize
jendo1969 0:41e5a06d916f 44 33, // Bytes in Line
jendo1969 0:41e5a06d916f 45 (char*)img0_bits // Pointer to picture data
jendo1969 0:41e5a06d916f 46 };
jendo1969 0:41e5a06d916f 47
jendo1969 0:41e5a06d916f 48 char img_bits[5808];
jendo1969 0:41e5a06d916f 49 Bitmap bitmIMG0 = {
jendo1969 0:41e5a06d916f 50 264, // XSize
jendo1969 0:41e5a06d916f 51 176, // YSize
jendo1969 0:41e5a06d916f 52 33, // Bytes in Line
jendo1969 0:41e5a06d916f 53 img_bits // Pointer to picture data
jendo1969 0:41e5a06d916f 54 };
jendo1969 0:41e5a06d916f 55
jendo1969 0:41e5a06d916f 56 void read_file_names(char *dir)
jendo1969 0:41e5a06d916f 57 {
jendo1969 0:41e5a06d916f 58 DIR *dp;
jendo1969 0:41e5a06d916f 59 struct dirent *dirp;
jendo1969 0:41e5a06d916f 60 dp = opendir(dir);
jendo1969 0:41e5a06d916f 61 //read all directory and file names in current directory into filename vector
jendo1969 0:41e5a06d916f 62 while((dirp = readdir(dp)) != NULL) {
jendo1969 0:41e5a06d916f 63 filenames.push_back(string(dirp->d_name));
jendo1969 0:41e5a06d916f 64 }
jendo1969 0:41e5a06d916f 65 closedir(dp);
jendo1969 0:41e5a06d916f 66 }
jendo1969 0:41e5a06d916f 67
jendo1969 0:41e5a06d916f 68 int read_filedata(char* fname)
jendo1969 0:41e5a06d916f 69 {
jendo1969 0:41e5a06d916f 70 char buf[128];
jendo1969 0:41e5a06d916f 71 char sbuf[10];
jendo1969 0:41e5a06d916f 72 int line_idx, idx, len, i,j;
jendo1969 0:41e5a06d916f 73 uint8_t val;
jendo1969 0:41e5a06d916f 74
jendo1969 0:41e5a06d916f 75 int ret = 0;
jendo1969 0:41e5a06d916f 76
jendo1969 0:41e5a06d916f 77 // strcpy(path, "/sd");
jendo1969 0:41e5a06d916f 78 // strcat(path, fname);
jendo1969 0:41e5a06d916f 79
jendo1969 0:41e5a06d916f 80 // pc.printf("PATH = %s\n", path);
jendo1969 0:41e5a06d916f 81
jendo1969 0:41e5a06d916f 82 FILE *fp = fopen(fname, "r");
jendo1969 0:41e5a06d916f 83 if(fp == NULL)
jendo1969 0:41e5a06d916f 84 {
jendo1969 0:41e5a06d916f 85 // pc.printf("Could not open file for write\n");
jendo1969 0:41e5a06d916f 86 ret = 1;
jendo1969 0:41e5a06d916f 87 return ret;
jendo1969 0:41e5a06d916f 88 }
jendo1969 0:41e5a06d916f 89
jendo1969 0:41e5a06d916f 90 line_idx = 0;
jendo1969 0:41e5a06d916f 91 idx = 0;
jendo1969 0:41e5a06d916f 92
jendo1969 0:41e5a06d916f 93 // while( fgets(buf, sizeof(buf), fp) != NULL )
jendo1969 0:41e5a06d916f 94 for(j=0;j<484;j++)
jendo1969 0:41e5a06d916f 95 {
jendo1969 0:41e5a06d916f 96 fgets(buf, sizeof(buf), fp);
jendo1969 0:41e5a06d916f 97 line_idx++;
jendo1969 0:41e5a06d916f 98
jendo1969 0:41e5a06d916f 99 // pc.printf("line=%d:%s", line_idx, buf);
jendo1969 0:41e5a06d916f 100
jendo1969 0:41e5a06d916f 101 if(line_idx == 1)
jendo1969 0:41e5a06d916f 102 {
jendo1969 0:41e5a06d916f 103 if(strstr(buf,"264") == NULL )
jendo1969 0:41e5a06d916f 104 {
jendo1969 0:41e5a06d916f 105 ret = 1;
jendo1969 0:41e5a06d916f 106 break;
jendo1969 0:41e5a06d916f 107 }
jendo1969 0:41e5a06d916f 108 }
jendo1969 0:41e5a06d916f 109 if(line_idx == 2)
jendo1969 0:41e5a06d916f 110 {
jendo1969 0:41e5a06d916f 111 if(strstr(buf,"176") == NULL )
jendo1969 0:41e5a06d916f 112 {
jendo1969 0:41e5a06d916f 113 ret = 1;
jendo1969 0:41e5a06d916f 114 break;
jendo1969 0:41e5a06d916f 115 }
jendo1969 0:41e5a06d916f 116 }
jendo1969 0:41e5a06d916f 117 if(line_idx == 3)
jendo1969 0:41e5a06d916f 118 {
jendo1969 0:41e5a06d916f 119 continue;
jendo1969 0:41e5a06d916f 120 }
jendo1969 0:41e5a06d916f 121
jendo1969 0:41e5a06d916f 122 len = strlen(buf);
jendo1969 0:41e5a06d916f 123
jendo1969 0:41e5a06d916f 124 for(i=0;i<len;i++)
jendo1969 0:41e5a06d916f 125 {
jendo1969 0:41e5a06d916f 126 if(buf[i] == ',')
jendo1969 0:41e5a06d916f 127 {
jendo1969 0:41e5a06d916f 128 strncpy(sbuf, &buf[i-4], 4);
jendo1969 0:41e5a06d916f 129 /* 型変換 */
jendo1969 0:41e5a06d916f 130 sscanf(sbuf, "%x", &val);
jendo1969 0:41e5a06d916f 131 img_bits[idx] = val;
jendo1969 0:41e5a06d916f 132 idx++;
jendo1969 0:41e5a06d916f 133 // i=i+4;
jendo1969 0:41e5a06d916f 134 }
jendo1969 0:41e5a06d916f 135 else if(buf[i] == '}')
jendo1969 0:41e5a06d916f 136 {
jendo1969 0:41e5a06d916f 137 strncpy(sbuf, &buf[i-5], 4);
jendo1969 0:41e5a06d916f 138 /* 型変換 */
jendo1969 0:41e5a06d916f 139 sscanf(sbuf, "%x", &val);
jendo1969 0:41e5a06d916f 140 img_bits[idx] = val;
jendo1969 0:41e5a06d916f 141 idx++;
jendo1969 0:41e5a06d916f 142 }
jendo1969 0:41e5a06d916f 143 else if(buf[i] == 0x0D)
jendo1969 0:41e5a06d916f 144 {
jendo1969 0:41e5a06d916f 145 break;
jendo1969 0:41e5a06d916f 146 }
jendo1969 0:41e5a06d916f 147 }
jendo1969 0:41e5a06d916f 148 }
jendo1969 0:41e5a06d916f 149
jendo1969 0:41e5a06d916f 150 fclose(fp);
jendo1969 0:41e5a06d916f 151
jendo1969 0:41e5a06d916f 152 return ret;
jendo1969 0:41e5a06d916f 153 }
jendo1969 0:41e5a06d916f 154
jendo1969 0:41e5a06d916f 155 int main()
jendo1969 0:41e5a06d916f 156 {
jendo1969 0:41e5a06d916f 157 char str1[17];
jendo1969 0:41e5a06d916f 158 int i;
jendo1969 0:41e5a06d916f 159
jendo1969 0:41e5a06d916f 160 // pc.printf("\nHello World!\n");
jendo1969 0:41e5a06d916f 161
jendo1969 0:41e5a06d916f 162 TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
jendo1969 0:41e5a06d916f 163
jendo1969 0:41e5a06d916f 164 epaper.cls();
jendo1969 0:41e5a06d916f 165
jendo1969 0:41e5a06d916f 166 // read file names into vector of strings
jendo1969 0:41e5a06d916f 167 //read_file_names("/sd");
jendo1969 0:41e5a06d916f 168
jendo1969 0:41e5a06d916f 169 while (true)
jendo1969 0:41e5a06d916f 170 {
jendo1969 0:41e5a06d916f 171 float w;
jendo1969 0:41e5a06d916f 172 int cnt;
jendo1969 0:41e5a06d916f 173 int stop_flag = 0;
jendo1969 0:41e5a06d916f 174
jendo1969 0:41e5a06d916f 175 for(i=0;i<1000;i++)
jendo1969 0:41e5a06d916f 176 {
jendo1969 0:41e5a06d916f 177 if(i==0)
jendo1969 0:41e5a06d916f 178 {
jendo1969 0:41e5a06d916f 179 epaper.print_bm(bitmARM0, 1, 1);
jendo1969 0:41e5a06d916f 180 epaper.write_disp(); // update screen
jendo1969 0:41e5a06d916f 181 wait(0.1);
jendo1969 0:41e5a06d916f 182 }
jendo1969 0:41e5a06d916f 183 else
jendo1969 0:41e5a06d916f 184 {
jendo1969 0:41e5a06d916f 185 sprintf(str1,"%d",i);
jendo1969 0:41e5a06d916f 186 char idir[14] = "/sd/";
jendo1969 0:41e5a06d916f 187 char dir[100] = "";
jendo1969 0:41e5a06d916f 188 strcat(dir,idir);
jendo1969 0:41e5a06d916f 189 strcat(dir,"/");
jendo1969 0:41e5a06d916f 190 strcat(dir,str1);
jendo1969 0:41e5a06d916f 191 strcat(dir,".xbm");
jendo1969 0:41e5a06d916f 192 // dir[4] = 0x30 + i;
jendo1969 0:41e5a06d916f 193 // if(read_filedata("/sd/1.xbm")== 0)
jendo1969 0:41e5a06d916f 194 if(read_filedata(dir)== 0)
jendo1969 0:41e5a06d916f 195 {
jendo1969 0:41e5a06d916f 196 epaper.print_bm(bitmIMG0, 1, 1);
jendo1969 0:41e5a06d916f 197 epaper.write_disp(); // update screen
jendo1969 0:41e5a06d916f 198 }
jendo1969 0:41e5a06d916f 199 else
jendo1969 0:41e5a06d916f 200 {
jendo1969 0:41e5a06d916f 201 continue;
jendo1969 0:41e5a06d916f 202 }
jendo1969 0:41e5a06d916f 203 cnt = 0;
jendo1969 0:41e5a06d916f 204 while (true)
jendo1969 0:41e5a06d916f 205 {
jendo1969 0:41e5a06d916f 206 w = tsi.readPercentage();
jendo1969 0:41e5a06d916f 207 if(w > 0.8)
jendo1969 0:41e5a06d916f 208 {
jendo1969 0:41e5a06d916f 209 stop_flag = 1;
jendo1969 0:41e5a06d916f 210 break;
jendo1969 0:41e5a06d916f 211 }
jendo1969 0:41e5a06d916f 212 else if(w > 0.3)
jendo1969 0:41e5a06d916f 213 {
jendo1969 0:41e5a06d916f 214 break;
jendo1969 0:41e5a06d916f 215 }
jendo1969 0:41e5a06d916f 216 cnt++;
jendo1969 0:41e5a06d916f 217 if(cnt > 100)
jendo1969 0:41e5a06d916f 218 {
jendo1969 0:41e5a06d916f 219 break;
jendo1969 0:41e5a06d916f 220 }
jendo1969 0:41e5a06d916f 221 wait(0.1);
jendo1969 0:41e5a06d916f 222 }
jendo1969 0:41e5a06d916f 223 // epaper.cls();
jendo1969 0:41e5a06d916f 224 if(stop_flag == 1)
jendo1969 0:41e5a06d916f 225 {
jendo1969 0:41e5a06d916f 226 break;
jendo1969 0:41e5a06d916f 227 }
jendo1969 0:41e5a06d916f 228 }
jendo1969 0:41e5a06d916f 229 }
jendo1969 0:41e5a06d916f 230 }
jendo1969 0:41e5a06d916f 231 }