1<p>#include <lowpower.h><br>#include <epd.h></epd.h></lowpower.h></p><p>const int wake_up = 6;
2const int reset = 5;
3const int lcd_on = 4;
4const int button = 3;</p><p>int refreshRate = 10800;
5int counter = 1;
6int refreshCounter = 0;
7int ByteReceived;
8bool errorFlag = false;
9bool picSend = false;
10bool picLoaded = false;</p><p>void(* resetFunc) (void) = 0;</p><p>void setup(void)
11{
12 pinMode(lcd_on,OUTPUT);
13 pinMode(13,OUTPUT);
14 digitalWrite(13,LOW);
15
16}</p><p>void loop(void){
17 DrawPic(counter);
18 counter++;
19}</p><p>void wakeUp(){
20 refreshCounter++;
21 if(refreshCounter < refreshRate) enterSleep();
22}</p><p>void DrawPic(int index){
23 pinMode(lcd_on,OUTPUT);
24 pinMode(13,OUTPUT);
25 digitalWrite(13,LOW);
26
27 digitalWrite(lcd_on,HIGH);
28 delay(300);
29 epd_init(wake_up, reset);
30 epd_wakeup(wake_up);
31 epd_set_memory(MEM_TF);
32 epd_clear();
33 digitalWrite(13,HIGH);</p><p>
34 String indexStr = String(counter);
35 String str = 'i' + indexStr + ".BMP ";
36 char character[str.length()] ;
37 str.toCharArray(character, str.length());
38 epd_disp_bitmap(character, 0, 0);
39 epd_udpate();
40 epd_enter_stopmode();
41 while(1){
42 ByteReceived = Serial.read();
43 if(ByteReceived == 13){
44 picSend= true;
45 }
46 if(ByteReceived == 69){
47 errorFlag= true;
48
49
50
51 counter = 0;
52
53 break;
54 }
55 if(ByteReceived == 75 && picSend && picLoaded){
56 break;
57 }
58
59 if(ByteReceived == 75 && picSend){
60 picLoaded = true;
61 }
62
63 }
64 digitalWrite(13,LOW);
65 digitalWrite(lcd_on,LOW);
66 picLoaded = false;
67 errorFlag= false;
68 picSend= false;
69 refreshCounter = 0;
70
71 enterSleep();
72}</p><p>void noSDcard(){
73 epd_wakeup(wake_up);
74
75 epd_clear();
76 epd_set_ch_font(GBK32);
77 epd_set_en_font(ASCII32);
78 epd_disp_string("Can't find SD card", 0, 300);
79 epd_udpate();
80 delay(10000);
81}</p><p>void noPic(){
82 epd_wakeup(wake_up);
83
84 epd_clear();
85 epd_set_ch_font(GBK32);
86 epd_set_en_font(ASCII32);
87 epd_disp_string("Can't find this picture", 0, 300);
88 epd_udpate();
89 delay(10000);
90}</p><p>void enterSleep(){
91 attachInterrupt(1, wakeUp, RISING);
92 LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
93 wakeUp();
94 detachInterrupt(1);
95}</p>