EA EPAPER

Dependencies:   BurstSPI EaEpaper SDFileSystem frdm_tsi_slider mbed

Revision:
0:41e5a06d916f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Apr 20 11:47:36 2015 +0000
@@ -0,0 +1,231 @@
+#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;
+                }
+            }
+        }            
+    }
+}