Dependencies:   C12832 ESP-call FXOS8700Q

Committer:
201710861
Date:
Mon Jun 13 13:56:52 2022 +0000
Revision:
0:78de368300ec
This is the program used on the board with Esp attached when demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
201710861 0:78de368300ec 1 #include "mbed.h"
201710861 0:78de368300ec 2 #include "C12832.h"
201710861 0:78de368300ec 3 #include "ESP-call.h"
201710861 0:78de368300ec 4 #include "communication.h"
201710861 0:78de368300ec 5
201710861 0:78de368300ec 6 //================================================================
201710861 0:78de368300ec 7 Serial pc(USBTX, USBRX, 115200);
201710861 0:78de368300ec 8
201710861 0:78de368300ec 9 using namespace std;
201710861 0:78de368300ec 10 char esp_data;
201710861 0:78de368300ec 11 char esp_arr[20];
201710861 0:78de368300ec 12 char arr_time[20] = "0:0:0";
201710861 0:78de368300ec 13 int index = 0;
201710861 0:78de368300ec 14 int mbedMode = 0;
201710861 0:78de368300ec 15 int tempMode = 2;
201710861 0:78de368300ec 16 bool trans_status = 0;
201710861 0:78de368300ec 17 PwmOut led_r(D5);
201710861 0:78de368300ec 18 PwmOut led_g(D9);
201710861 0:78de368300ec 19
201710861 0:78de368300ec 20 AnalogIn sensor(A0);
201710861 0:78de368300ec 21 DigitalOut led(D3);
201710861 0:78de368300ec 22
201710861 0:78de368300ec 23 Thread thread_led;
201710861 0:78de368300ec 24 Thread thread_lcd;
201710861 0:78de368300ec 25 Ticker ticker;
201710861 0:78de368300ec 26
201710861 0:78de368300ec 27 void ledSet();
201710861 0:78de368300ec 28
201710861 0:78de368300ec 29 #define MAIN 0
201710861 0:78de368300ec 30 #define COM 1
201710861 0:78de368300ec 31 #define ALARM 2
201710861 0:78de368300ec 32 #define ALARM_SET 29
201710861 0:78de368300ec 33 #define PERM 3
201710861 0:78de368300ec 34
201710861 0:78de368300ec 35 #define ALARM_SOUND 21
201710861 0:78de368300ec 36 #define ALARM_LED 22
201710861 0:78de368300ec 37 #define ALARM_SOUND_LED 23
201710861 0:78de368300ec 38 #define ALARM_ERROR 24
201710861 0:78de368300ec 39
201710861 0:78de368300ec 40 #define PERM_SOUND 31
201710861 0:78de368300ec 41 #define PERM_LED 32
201710861 0:78de368300ec 42 #define PERM_SOUND_LED 33
201710861 0:78de368300ec 43 #define PERM_ERROR 34
201710861 0:78de368300ec 44
201710861 0:78de368300ec 45 int send_count = 0;
201710861 0:78de368300ec 46
201710861 0:78de368300ec 47 //================================ LCD ================================
201710861 0:78de368300ec 48 C12832 lcd(D11, D13, D12, D7, D10); // lcd = (MOSI, SCK, RESET, A0, nCS)
201710861 0:78de368300ec 49
201710861 0:78de368300ec 50 bool alarm_stop_lcd = 0;
201710861 0:78de368300ec 51
201710861 0:78de368300ec 52 // LCD 초기화
201710861 0:78de368300ec 53 void lcdInit();
201710861 0:78de368300ec 54 // LCD의 x, y 좌표에 str을 출력
201710861 0:78de368300ec 55 void writeLcdCLS(const char*, int, int);
201710861 0:78de368300ec 56 // LCD의 x, y 좌표에 str을 출력 cls (x)
201710861 0:78de368300ec 57 void writeLcd(const char*, int, int);
201710861 0:78de368300ec 58 // LCD에 digital clock 출력
201710861 0:78de368300ec 59 void writeTime();
201710861 0:78de368300ec 60 // LCD에 alarm 출력
201710861 0:78de368300ec 61 void writeAlarm();
201710861 0:78de368300ec 62
201710861 0:78de368300ec 63 //================================ Alarm ================================
201710861 0:78de368300ec 64 Thread thread_Alarm;
201710861 0:78de368300ec 65 Timer timer;
201710861 0:78de368300ec 66 Timer trans_timer;
201710861 0:78de368300ec 67
201710861 0:78de368300ec 68 int a_time = 0; // alarm 시간
201710861 0:78de368300ec 69 int a_time_temp = 0;
201710861 0:78de368300ec 70
201710861 0:78de368300ec 71 int a_tm = 0;
201710861 0:78de368300ec 72 int a_hour = 0;
201710861 0:78de368300ec 73 int a_mins = 0;
201710861 0:78de368300ec 74 int a_sec = 0;
201710861 0:78de368300ec 75
201710861 0:78de368300ec 76 int start_alarm = 0;
201710861 0:78de368300ec 77 int end_alarm = 0;
201710861 0:78de368300ec 78
201710861 0:78de368300ec 79
201710861 0:78de368300ec 80 int a_temp = 0;
201710861 0:78de368300ec 81 int a_temp_h = 0;
201710861 0:78de368300ec 82 int a_temp_m = 0;
201710861 0:78de368300ec 83 int a_temp_s = 0;
201710861 0:78de368300ec 84
201710861 0:78de368300ec 85 // Timer 동작(thread)
201710861 0:78de368300ec 86 void timerSet();
201710861 0:78de368300ec 87 // Timer 초기화
201710861 0:78de368300ec 88 void timerReset();
201710861 0:78de368300ec 89 // alarm 설정
201710861 0:78de368300ec 90 void alarmSet();
201710861 0:78de368300ec 91 void alarmStart();
201710861 0:78de368300ec 92 void alarmCount();
201710861 0:78de368300ec 93
201710861 0:78de368300ec 94 //================================ Clock ================================
201710861 0:78de368300ec 95 Thread thread_Clock;
201710861 0:78de368300ec 96
201710861 0:78de368300ec 97 int c_hour = 0;
201710861 0:78de368300ec 98 int c_mins = 0;
201710861 0:78de368300ec 99 int c_sec = 0;
201710861 0:78de368300ec 100
201710861 0:78de368300ec 101 //digital clock 초기화
201710861 0:78de368300ec 102 void clockInit();
201710861 0:78de368300ec 103 //현재 시각 가져옴
201710861 0:78de368300ec 104 void getTime();
201710861 0:78de368300ec 105 //digital clock 출력
201710861 0:78de368300ec 106 void writeTime();
201710861 0:78de368300ec 107
201710861 0:78de368300ec 108 //================================ Joystick ================================
201710861 0:78de368300ec 109 InterruptIn up(A2);
201710861 0:78de368300ec 110 InterruptIn down(A3);
201710861 0:78de368300ec 111 InterruptIn left(A4);
201710861 0:78de368300ec 112 InterruptIn rite(A5);
201710861 0:78de368300ec 113 InterruptIn center(D4);
201710861 0:78de368300ec 114 InterruptIn sw2(SW2);
201710861 0:78de368300ec 115 InterruptIn sw3(SW3); // permanent 중지
201710861 0:78de368300ec 116
201710861 0:78de368300ec 117 void ISR_center();
201710861 0:78de368300ec 118 void ISR_up();
201710861 0:78de368300ec 119 void ISR_down();
201710861 0:78de368300ec 120 void ISR_left();
201710861 0:78de368300ec 121 void ISR_rite();
201710861 0:78de368300ec 122 void ISR_sw2();
201710861 0:78de368300ec 123
201710861 0:78de368300ec 124 void perm_Stop();
201710861 0:78de368300ec 125
201710861 0:78de368300ec 126 //main
201710861 0:78de368300ec 127 bool main_center = 0;
201710861 0:78de368300ec 128
201710861 0:78de368300ec 129 //communication
201710861 0:78de368300ec 130 bool com_left = 0;
201710861 0:78de368300ec 131 bool com_right = 0;
201710861 0:78de368300ec 132 bool com_center = 0;
201710861 0:78de368300ec 133
201710861 0:78de368300ec 134 //alarm set (알람 설정)
201710861 0:78de368300ec 135 bool alarm_set_up = 0;
201710861 0:78de368300ec 136 bool alarm_set_down = 0;
201710861 0:78de368300ec 137 bool alarm_set_left = 0;
201710861 0:78de368300ec 138 bool alarm_set_right = 0;
201710861 0:78de368300ec 139 bool alarm_set_center = 0;
201710861 0:78de368300ec 140
201710861 0:78de368300ec 141 //alarm(다음 선택)
201710861 0:78de368300ec 142 bool alarm_left = 0;
201710861 0:78de368300ec 143 bool alarm_right = 0;
201710861 0:78de368300ec 144 bool alarm_center = 0;
201710861 0:78de368300ec 145
201710861 0:78de368300ec 146 //permanent
201710861 0:78de368300ec 147 bool perm_left = 0;
201710861 0:78de368300ec 148 bool perm_right = 0;
201710861 0:78de368300ec 149 bool perm_center = 0;
201710861 0:78de368300ec 150
201710861 0:78de368300ec 151 //common (마지막 layer들 뒤로가기 기능 통일)
201710861 0:78de368300ec 152 bool button_back = 0; //sw2
201710861 0:78de368300ec 153
201710861 0:78de368300ec 154 //permanent 송신 중단
201710861 0:78de368300ec 155 bool perm_stop = 0;
201710861 0:78de368300ec 156
201710861 0:78de368300ec 157
201710861 0:78de368300ec 158 //================================ Communication ================================
201710861 0:78de368300ec 159
201710861 0:78de368300ec 160
201710861 0:78de368300ec 161 bool alarm_trans_status = 0;
201710861 0:78de368300ec 162 int alarm_trans_mode = 0;
201710861 0:78de368300ec 163
201710861 0:78de368300ec 164 bool perm_trans_status = 0;
201710861 0:78de368300ec 165 int perm_trans_mode = 0;
201710861 0:78de368300ec 166
201710861 0:78de368300ec 167 //=====================================
201710861 0:78de368300ec 168 //LCD
201710861 0:78de368300ec 169
201710861 0:78de368300ec 170 void lcdPrint(){
201710861 0:78de368300ec 171 switch(mbedMode){
201710861 0:78de368300ec 172 case MAIN:
201710861 0:78de368300ec 173 writeLcd("COMMUNICATION DEVICE", 0, 6);
201710861 0:78de368300ec 174 writeTime();
201710861 0:78de368300ec 175 if(main_center){
201710861 0:78de368300ec 176 mbedMode = COM;
201710861 0:78de368300ec 177 tempMode = ALARM_SET;
201710861 0:78de368300ec 178 main_center = 0;
201710861 0:78de368300ec 179 lcd.cls();
201710861 0:78de368300ec 180 }
201710861 0:78de368300ec 181 break;
201710861 0:78de368300ec 182
201710861 0:78de368300ec 183 case COM:
201710861 0:78de368300ec 184 if(alarm_stop_lcd){
201710861 0:78de368300ec 185 writeLcdCLS("Alarm Mode is finished...", 0, 6);
201710861 0:78de368300ec 186 thread_sleep_for(1500);
201710861 0:78de368300ec 187 alarm_stop_lcd = 0;
201710861 0:78de368300ec 188 lcd.cls();
201710861 0:78de368300ec 189 }
201710861 0:78de368300ec 190
201710861 0:78de368300ec 191 writeLcd("COMMUNICATION DEVICE", 0, 6);
201710861 0:78de368300ec 192 writeLcd("Select", 0, 16);
201710861 0:78de368300ec 193
201710861 0:78de368300ec 194 if(com_left || com_right){
201710861 0:78de368300ec 195 if(tempMode == ALARM_SET){
201710861 0:78de368300ec 196 writeLcd("Select Permanent ", 0, 16);
201710861 0:78de368300ec 197 tempMode = PERM;
201710861 0:78de368300ec 198 }else{
201710861 0:78de368300ec 199 writeLcd("Select Alarm ", 0, 16);
201710861 0:78de368300ec 200 tempMode = ALARM_SET;
201710861 0:78de368300ec 201 }
201710861 0:78de368300ec 202 com_left = 0;
201710861 0:78de368300ec 203 com_right = 0;
201710861 0:78de368300ec 204 }else if(com_center){
201710861 0:78de368300ec 205 mbedMode = tempMode;
201710861 0:78de368300ec 206
201710861 0:78de368300ec 207 if(tempMode == ALARM_SET){
201710861 0:78de368300ec 208 if(perm_trans_status){
201710861 0:78de368300ec 209 mbedMode = COM;
201710861 0:78de368300ec 210 writeLcdCLS("Permanent mode is running...", 0, 6);
201710861 0:78de368300ec 211 thread_sleep_for(500);
201710861 0:78de368300ec 212 lcd.cls();
201710861 0:78de368300ec 213 }else if(alarm_trans_status){
201710861 0:78de368300ec 214 mbedMode = alarm_trans_mode;
201710861 0:78de368300ec 215 }else{
201710861 0:78de368300ec 216 tempMode = ALARM_SET;
201710861 0:78de368300ec 217 }
201710861 0:78de368300ec 218 }else if(tempMode == PERM){
201710861 0:78de368300ec 219 if(alarm_trans_status){
201710861 0:78de368300ec 220 mbedMode = COM;
201710861 0:78de368300ec 221 writeLcdCLS("Alarm mode is running...", 0, 6);
201710861 0:78de368300ec 222 thread_sleep_for(500);
201710861 0:78de368300ec 223 lcd.cls();
201710861 0:78de368300ec 224 }else if(perm_trans_status){
201710861 0:78de368300ec 225 mbedMode = perm_trans_mode;
201710861 0:78de368300ec 226 }else{
201710861 0:78de368300ec 227 tempMode = PERM_SOUND;
201710861 0:78de368300ec 228 }
201710861 0:78de368300ec 229 }
201710861 0:78de368300ec 230
201710861 0:78de368300ec 231 lcd.cls();
201710861 0:78de368300ec 232 com_center = 0;
201710861 0:78de368300ec 233 }else if(button_back){
201710861 0:78de368300ec 234 lcd.cls();
201710861 0:78de368300ec 235 mbedMode = MAIN;
201710861 0:78de368300ec 236 button_back = 0;
201710861 0:78de368300ec 237 }
201710861 0:78de368300ec 238 break;
201710861 0:78de368300ec 239
201710861 0:78de368300ec 240 case ALARM_SET: // alarm_set_~
201710861 0:78de368300ec 241 writeLcd("Alarm Set Mode", 0, 6);
201710861 0:78de368300ec 242 alarmSet();
201710861 0:78de368300ec 243 a_temp_h = a_temp / 3600;
201710861 0:78de368300ec 244 a_temp %= 3600;
201710861 0:78de368300ec 245 a_temp_m = a_temp / 60;
201710861 0:78de368300ec 246 a_temp %= 60;
201710861 0:78de368300ec 247 a_temp_s = a_temp;
201710861 0:78de368300ec 248 lcd.locate(0, 16);
201710861 0:78de368300ec 249 lcd.printf("Time = %d : %d : %d ", a_temp_h, a_temp_m, a_temp_s);
201710861 0:78de368300ec 250 if(alarm_set_center){
201710861 0:78de368300ec 251 mbedMode = ALARM;
201710861 0:78de368300ec 252 tempMode = ALARM_SOUND;
201710861 0:78de368300ec 253 alarm_set_center = 0;
201710861 0:78de368300ec 254 lcd.cls();
201710861 0:78de368300ec 255 }else if(button_back){
201710861 0:78de368300ec 256 mbedMode = COM;
201710861 0:78de368300ec 257 tempMode = ALARM_SET;
201710861 0:78de368300ec 258 button_back = 0;
201710861 0:78de368300ec 259 lcd.cls();
201710861 0:78de368300ec 260 }
201710861 0:78de368300ec 261
201710861 0:78de368300ec 262 break;
201710861 0:78de368300ec 263 case ALARM: // alarm_~
201710861 0:78de368300ec 264 writeLcd("Alarm Mode", 0, 6);
201710861 0:78de368300ec 265 writeLcd("Select", 0, 16);
201710861 0:78de368300ec 266
201710861 0:78de368300ec 267 if(alarm_left){
201710861 0:78de368300ec 268 if(tempMode == ALARM_SOUND){
201710861 0:78de368300ec 269 writeLcd("Select Sound+Led ", 0, 16);
201710861 0:78de368300ec 270 tempMode = ALARM_SOUND_LED;
201710861 0:78de368300ec 271 }else if(tempMode == ALARM_LED){
201710861 0:78de368300ec 272 writeLcd("Select Sound ", 0, 16);
201710861 0:78de368300ec 273 tempMode = ALARM_SOUND;
201710861 0:78de368300ec 274 }else if(tempMode == ALARM_SOUND_LED){
201710861 0:78de368300ec 275 writeLcd("Select Led ", 0, 16);
201710861 0:78de368300ec 276 tempMode = ALARM_LED;
201710861 0:78de368300ec 277 }
201710861 0:78de368300ec 278 alarm_left = 0;
201710861 0:78de368300ec 279 }else if(alarm_right){
201710861 0:78de368300ec 280 if(tempMode == ALARM_SOUND){
201710861 0:78de368300ec 281 writeLcd("Select Led ", 0, 16);
201710861 0:78de368300ec 282 tempMode = ALARM_LED ;
201710861 0:78de368300ec 283 }else if(tempMode == ALARM_LED){
201710861 0:78de368300ec 284 writeLcd("Select Sound+Led ", 0, 16);
201710861 0:78de368300ec 285 tempMode = ALARM_SOUND_LED;
201710861 0:78de368300ec 286 }else if(tempMode == ALARM_SOUND_LED){
201710861 0:78de368300ec 287 writeLcd("Select Sound ", 0, 16);
201710861 0:78de368300ec 288 tempMode = ALARM_SOUND;
201710861 0:78de368300ec 289 }
201710861 0:78de368300ec 290 alarm_right = 0;
201710861 0:78de368300ec 291 }else if(alarm_center){
201710861 0:78de368300ec 292 alarmStart();
201710861 0:78de368300ec 293 mbedMode = tempMode;
201710861 0:78de368300ec 294 alarm_center = 0;
201710861 0:78de368300ec 295 lcd.cls();
201710861 0:78de368300ec 296 }else if(button_back){
201710861 0:78de368300ec 297 mbedMode = ALARM_SET;
201710861 0:78de368300ec 298 tempMode = ALARM_SET;
201710861 0:78de368300ec 299 button_back = 0;
201710861 0:78de368300ec 300 lcd.cls();
201710861 0:78de368300ec 301 }
201710861 0:78de368300ec 302 break;
201710861 0:78de368300ec 303
201710861 0:78de368300ec 304 case PERM:
201710861 0:78de368300ec 305 writeLcd("Permanent Mode ", 0, 6);
201710861 0:78de368300ec 306 writeLcd("Select", 0, 16);
201710861 0:78de368300ec 307
201710861 0:78de368300ec 308 if(button_back){
201710861 0:78de368300ec 309 mbedMode = COM;
201710861 0:78de368300ec 310 tempMode = PERM;
201710861 0:78de368300ec 311 trans_status = 0;
201710861 0:78de368300ec 312 button_back = 0;
201710861 0:78de368300ec 313 lcd.cls();
201710861 0:78de368300ec 314 }else if(perm_left){
201710861 0:78de368300ec 315 if(tempMode == PERM_SOUND){
201710861 0:78de368300ec 316 writeLcd("Select Sound+Led ", 0, 16);
201710861 0:78de368300ec 317 tempMode = PERM_SOUND_LED;
201710861 0:78de368300ec 318 }else if(tempMode == PERM_LED){
201710861 0:78de368300ec 319 writeLcd("Select Sound ", 0, 16);
201710861 0:78de368300ec 320 tempMode = PERM_SOUND;
201710861 0:78de368300ec 321 }else if(tempMode == PERM_SOUND_LED){
201710861 0:78de368300ec 322 writeLcd("Select Led ", 0, 16);
201710861 0:78de368300ec 323 tempMode = PERM_LED;
201710861 0:78de368300ec 324 }
201710861 0:78de368300ec 325 perm_left = 0;
201710861 0:78de368300ec 326 }else if(perm_right){
201710861 0:78de368300ec 327 if(tempMode == PERM_SOUND){
201710861 0:78de368300ec 328 writeLcd("Select Led ", 0, 16);
201710861 0:78de368300ec 329 tempMode = PERM_LED;
201710861 0:78de368300ec 330 }else if(tempMode == PERM_LED){
201710861 0:78de368300ec 331 writeLcd("Select Sound+Led ", 0, 16);
201710861 0:78de368300ec 332 tempMode = PERM_SOUND_LED;
201710861 0:78de368300ec 333 }else if(tempMode == PERM_SOUND_LED){
201710861 0:78de368300ec 334 writeLcd("Select Sound ", 0, 16);
201710861 0:78de368300ec 335 tempMode = PERM_SOUND;
201710861 0:78de368300ec 336 }
201710861 0:78de368300ec 337 perm_right = 0;
201710861 0:78de368300ec 338 }else if(perm_center){
201710861 0:78de368300ec 339 mbedMode = tempMode;
201710861 0:78de368300ec 340 lcd.cls();
201710861 0:78de368300ec 341 perm_center = 0;
201710861 0:78de368300ec 342 }
201710861 0:78de368300ec 343 break;
201710861 0:78de368300ec 344
201710861 0:78de368300ec 345 case ALARM_SOUND:
201710861 0:78de368300ec 346 writeLcd("Alarm Sound Mode ", 0, 6);
201710861 0:78de368300ec 347 writeAlarm();
201710861 0:78de368300ec 348
201710861 0:78de368300ec 349 if(!alarm_trans_status){
201710861 0:78de368300ec 350 alarm_trans_status = 1;
201710861 0:78de368300ec 351 alarm_trans_mode = ALARM_SOUND;
201710861 0:78de368300ec 352 thread_sleep_for(1000);
201710861 0:78de368300ec 353 writeLcdCLS("Not Supported", 0, 6);
201710861 0:78de368300ec 354 alarmStart();
201710861 0:78de368300ec 355 }
201710861 0:78de368300ec 356
201710861 0:78de368300ec 357
201710861 0:78de368300ec 358 if(button_back){
201710861 0:78de368300ec 359 mbedMode = COM;
201710861 0:78de368300ec 360 tempMode = ALARM_SET;
201710861 0:78de368300ec 361 lcd.cls();
201710861 0:78de368300ec 362 button_back = 0;
201710861 0:78de368300ec 363 }
201710861 0:78de368300ec 364 break;
201710861 0:78de368300ec 365
201710861 0:78de368300ec 366 case ALARM_LED:
201710861 0:78de368300ec 367 writeLcd("Alarm Led Mode ", 0, 6);
201710861 0:78de368300ec 368 writeAlarm();
201710861 0:78de368300ec 369
201710861 0:78de368300ec 370 if(!alarm_trans_status){
201710861 0:78de368300ec 371 alarm_trans_status = 1;
201710861 0:78de368300ec 372 alarm_trans_mode = ALARM_LED;
201710861 0:78de368300ec 373 alarmStart();
201710861 0:78de368300ec 374 //send_count = 1;
201710861 0:78de368300ec 375 //if(!send_count){
201710861 0:78de368300ec 376 //mutex.lock();
201710861 0:78de368300ec 377 //send_count=1;
201710861 0:78de368300ec 378 send(led, sensor);
201710861 0:78de368300ec 379 //mutex.unlock();
201710861 0:78de368300ec 380 //}
201710861 0:78de368300ec 381
201710861 0:78de368300ec 382 }
201710861 0:78de368300ec 383
201710861 0:78de368300ec 384 if(button_back){
201710861 0:78de368300ec 385 mbedMode = COM;
201710861 0:78de368300ec 386 tempMode = ALARM_SET;
201710861 0:78de368300ec 387 lcd.cls();
201710861 0:78de368300ec 388 button_back = 0;
201710861 0:78de368300ec 389 }
201710861 0:78de368300ec 390
201710861 0:78de368300ec 391 break;
201710861 0:78de368300ec 392
201710861 0:78de368300ec 393 case ALARM_SOUND_LED:
201710861 0:78de368300ec 394 writeLcd("Alarm Sound+Led Mode ", 0, 6);
201710861 0:78de368300ec 395 writeAlarm();
201710861 0:78de368300ec 396
201710861 0:78de368300ec 397 if(!alarm_trans_status){
201710861 0:78de368300ec 398 alarm_trans_status = 1;
201710861 0:78de368300ec 399 alarm_trans_mode = ALARM_SOUND_LED;
201710861 0:78de368300ec 400 alarmStart();
201710861 0:78de368300ec 401 thread_sleep_for(1000);
201710861 0:78de368300ec 402 writeLcdCLS("Not Supported ", 0, 6);
201710861 0:78de368300ec 403 }
201710861 0:78de368300ec 404
201710861 0:78de368300ec 405 if(button_back){
201710861 0:78de368300ec 406 mbedMode = COM;
201710861 0:78de368300ec 407 tempMode = ALARM_SET;
201710861 0:78de368300ec 408 lcd.cls();
201710861 0:78de368300ec 409 button_back = 0;
201710861 0:78de368300ec 410 }
201710861 0:78de368300ec 411 break;
201710861 0:78de368300ec 412
201710861 0:78de368300ec 413 case ALARM_ERROR:
201710861 0:78de368300ec 414 writeLcd("Error ", 0, 6);
201710861 0:78de368300ec 415 writeLcd("Please Push Back Button", 0, 16);
201710861 0:78de368300ec 416 if(button_back){
201710861 0:78de368300ec 417 tempMode = ALARM_SET;
201710861 0:78de368300ec 418 mbedMode = COM;
201710861 0:78de368300ec 419 button_back = 0;
201710861 0:78de368300ec 420 }
201710861 0:78de368300ec 421 break;
201710861 0:78de368300ec 422
201710861 0:78de368300ec 423 case PERM_SOUND:
201710861 0:78de368300ec 424 writeLcd("Permanent Sound Mode ", 0, 6);
201710861 0:78de368300ec 425
201710861 0:78de368300ec 426 if(!perm_trans_status){
201710861 0:78de368300ec 427 perm_trans_status = 1;
201710861 0:78de368300ec 428 perm_trans_mode = PERM_SOUND;
201710861 0:78de368300ec 429 writeLcd("Not Supported ", 0, 16);
201710861 0:78de368300ec 430 }
201710861 0:78de368300ec 431
201710861 0:78de368300ec 432 if(button_back){
201710861 0:78de368300ec 433 mbedMode = COM;
201710861 0:78de368300ec 434 tempMode = PERM;
201710861 0:78de368300ec 435 button_back = 0;
201710861 0:78de368300ec 436 lcd.cls();
201710861 0:78de368300ec 437 }
201710861 0:78de368300ec 438
201710861 0:78de368300ec 439 if(perm_stop){
201710861 0:78de368300ec 440 perm_Stop();
201710861 0:78de368300ec 441 perm_stop = 0;
201710861 0:78de368300ec 442 }
201710861 0:78de368300ec 443
201710861 0:78de368300ec 444 break;
201710861 0:78de368300ec 445
201710861 0:78de368300ec 446 case PERM_LED:
201710861 0:78de368300ec 447 writeLcd("Permanent Led Mode ", 0, 6);
201710861 0:78de368300ec 448
201710861 0:78de368300ec 449 if(!perm_trans_status){
201710861 0:78de368300ec 450 perm_trans_status = 1;
201710861 0:78de368300ec 451 perm_trans_mode = PERM_LED;
201710861 0:78de368300ec 452 mutex.lock();
201710861 0:78de368300ec 453 writeLcd("Receiving... ", 0, 16);
201710861 0:78de368300ec 454 recv(led, sensor);
201710861 0:78de368300ec 455 mutex.unlock();
201710861 0:78de368300ec 456 }
201710861 0:78de368300ec 457
201710861 0:78de368300ec 458 if(button_back){
201710861 0:78de368300ec 459 mbedMode = COM;
201710861 0:78de368300ec 460 tempMode = PERM;
201710861 0:78de368300ec 461 button_back = 0;
201710861 0:78de368300ec 462 lcd.cls();
201710861 0:78de368300ec 463 }
201710861 0:78de368300ec 464
201710861 0:78de368300ec 465 if(perm_stop){
201710861 0:78de368300ec 466 perm_Stop();
201710861 0:78de368300ec 467 perm_stop = 0;
201710861 0:78de368300ec 468 }
201710861 0:78de368300ec 469
201710861 0:78de368300ec 470 break;
201710861 0:78de368300ec 471
201710861 0:78de368300ec 472 case PERM_SOUND_LED:
201710861 0:78de368300ec 473 writeLcd("Permanent Sound+Led Mode ", 0, 6);
201710861 0:78de368300ec 474
201710861 0:78de368300ec 475 if(!perm_trans_status){
201710861 0:78de368300ec 476 perm_trans_status = 1;
201710861 0:78de368300ec 477 perm_trans_mode = PERM_SOUND_LED;
201710861 0:78de368300ec 478 writeLcd("Not Supported ", 0, 16);
201710861 0:78de368300ec 479 }
201710861 0:78de368300ec 480
201710861 0:78de368300ec 481 if(button_back){
201710861 0:78de368300ec 482 mbedMode = COM;
201710861 0:78de368300ec 483 tempMode = PERM;
201710861 0:78de368300ec 484 button_back = 0;
201710861 0:78de368300ec 485 lcd.cls();
201710861 0:78de368300ec 486 }
201710861 0:78de368300ec 487
201710861 0:78de368300ec 488 if(perm_stop){
201710861 0:78de368300ec 489 perm_Stop();
201710861 0:78de368300ec 490 perm_stop = 0;
201710861 0:78de368300ec 491 }
201710861 0:78de368300ec 492
201710861 0:78de368300ec 493 break;
201710861 0:78de368300ec 494
201710861 0:78de368300ec 495 case PERM_ERROR:
201710861 0:78de368300ec 496 writeLcd("Error ", 0, 6);
201710861 0:78de368300ec 497 writeLcd("Please Push Back Button", 0, 16);
201710861 0:78de368300ec 498 if(button_back){
201710861 0:78de368300ec 499 tempMode = PERM;
201710861 0:78de368300ec 500 mbedMode = COM;
201710861 0:78de368300ec 501 button_back = 0;
201710861 0:78de368300ec 502 }
201710861 0:78de368300ec 503 break;
201710861 0:78de368300ec 504
201710861 0:78de368300ec 505 default:
201710861 0:78de368300ec 506 break;
201710861 0:78de368300ec 507 }
201710861 0:78de368300ec 508 }
201710861 0:78de368300ec 509
201710861 0:78de368300ec 510 void writeLcdCLS(const char* str, int x, int y){
201710861 0:78de368300ec 511 lcd.locate(x, y);
201710861 0:78de368300ec 512 lcd.cls();
201710861 0:78de368300ec 513 lcd.printf("%s", str);
201710861 0:78de368300ec 514 }
201710861 0:78de368300ec 515
201710861 0:78de368300ec 516 void writeLcd(const char* str, int x, int y){
201710861 0:78de368300ec 517 lcd.locate(x, y);
201710861 0:78de368300ec 518 lcd.printf("%s", str);
201710861 0:78de368300ec 519 }
201710861 0:78de368300ec 520
201710861 0:78de368300ec 521
201710861 0:78de368300ec 522 void lcdStart(){
201710861 0:78de368300ec 523 while(true){
201710861 0:78de368300ec 524 lcdPrint();
201710861 0:78de368300ec 525 }
201710861 0:78de368300ec 526 }
201710861 0:78de368300ec 527
201710861 0:78de368300ec 528 //=====================================
201710861 0:78de368300ec 529 //ALARM
201710861 0:78de368300ec 530
201710861 0:78de368300ec 531 void alarmSet(){
201710861 0:78de368300ec 532 a_temp = a_time;
201710861 0:78de368300ec 533 if(alarm_set_up){// +1시간
201710861 0:78de368300ec 534 if(a_time < 82800){
201710861 0:78de368300ec 535 a_time += 3600;
201710861 0:78de368300ec 536 }else{
201710861 0:78de368300ec 537 a_time -= 86400;
201710861 0:78de368300ec 538 a_time += 3600;
201710861 0:78de368300ec 539 }
201710861 0:78de368300ec 540 alarm_set_up = 0;
201710861 0:78de368300ec 541 }else if(alarm_set_down){// -1시간
201710861 0:78de368300ec 542 if(a_time >= 3600){
201710861 0:78de368300ec 543 a_time -= 3600;
201710861 0:78de368300ec 544 }else{
201710861 0:78de368300ec 545 a_time += 86400;
201710861 0:78de368300ec 546 a_time -= 3600;
201710861 0:78de368300ec 547 }
201710861 0:78de368300ec 548 alarm_set_down = 0;
201710861 0:78de368300ec 549 }else if(alarm_set_left){// +1분
201710861 0:78de368300ec 550 if(a_time < 86340){
201710861 0:78de368300ec 551 a_time += 60;
201710861 0:78de368300ec 552 }else{
201710861 0:78de368300ec 553 a_time -= 86400;
201710861 0:78de368300ec 554 a_time += 60;
201710861 0:78de368300ec 555 }
201710861 0:78de368300ec 556 alarm_set_left = 0;
201710861 0:78de368300ec 557 }else if(alarm_set_right){// -1분
201710861 0:78de368300ec 558 if(a_time >= 60){
201710861 0:78de368300ec 559 a_time -= 60;
201710861 0:78de368300ec 560 }else{
201710861 0:78de368300ec 561 a_time += 86400;
201710861 0:78de368300ec 562 a_time -= 60;
201710861 0:78de368300ec 563 }
201710861 0:78de368300ec 564 alarm_set_right = 0;
201710861 0:78de368300ec 565 }
201710861 0:78de368300ec 566 }
201710861 0:78de368300ec 567
201710861 0:78de368300ec 568 void alarmReset(){
201710861 0:78de368300ec 569 a_time = 0;
201710861 0:78de368300ec 570 a_hour = 0;
201710861 0:78de368300ec 571 a_mins = 0;
201710861 0:78de368300ec 572 a_sec = 0;
201710861 0:78de368300ec 573 a_tm = 0;
201710861 0:78de368300ec 574 a_temp = 0;
201710861 0:78de368300ec 575 a_time_temp = 0;
201710861 0:78de368300ec 576 end_alarm = 0;
201710861 0:78de368300ec 577 start_alarm = 0;
201710861 0:78de368300ec 578 send_count = 0;
201710861 0:78de368300ec 579 alarm_trans_status = 0;
201710861 0:78de368300ec 580 alarm_trans_mode = 0;
201710861 0:78de368300ec 581 mbedMode = COM;
201710861 0:78de368300ec 582 tempMode = ALARM_SET;
201710861 0:78de368300ec 583 alarm_stop_lcd = 1;
201710861 0:78de368300ec 584 timer.stop();
201710861 0:78de368300ec 585 timer.reset();
201710861 0:78de368300ec 586 }
201710861 0:78de368300ec 587
201710861 0:78de368300ec 588
201710861 0:78de368300ec 589 void alarmCount(){
201710861 0:78de368300ec 590 while(true){
201710861 0:78de368300ec 591 if(alarm_trans_status){
201710861 0:78de368300ec 592 a_tm = timer.read();
201710861 0:78de368300ec 593 a_time_temp = a_time - a_tm - (end_alarm - start_alarm);
201710861 0:78de368300ec 594
201710861 0:78de368300ec 595
201710861 0:78de368300ec 596 if(a_time_temp > 0 && alarm_trans_status){
201710861 0:78de368300ec 597 a_hour = a_time_temp / 3600;
201710861 0:78de368300ec 598 a_time_temp = a_time_temp % 3600;
201710861 0:78de368300ec 599 a_mins = a_time_temp / 60;
201710861 0:78de368300ec 600 a_time_temp = a_time_temp % 60;
201710861 0:78de368300ec 601 a_sec = a_time_temp;
201710861 0:78de368300ec 602 thread_sleep_for(1000);
201710861 0:78de368300ec 603 }else if(a_time_temp == 0 && alarm_trans_status){
201710861 0:78de368300ec 604 alarmReset();
201710861 0:78de368300ec 605 }
201710861 0:78de368300ec 606
201710861 0:78de368300ec 607 }
201710861 0:78de368300ec 608 }
201710861 0:78de368300ec 609 }
201710861 0:78de368300ec 610
201710861 0:78de368300ec 611 void alarmStart(){
201710861 0:78de368300ec 612 timer.reset();
201710861 0:78de368300ec 613 timer.start();
201710861 0:78de368300ec 614 thread_sleep_for(100);
201710861 0:78de368300ec 615 thread_Alarm.start(alarmCount);
201710861 0:78de368300ec 616 }
201710861 0:78de368300ec 617
201710861 0:78de368300ec 618 void writeAlarm(){
201710861 0:78de368300ec 619 lcd.locate(0, 16);
201710861 0:78de368300ec 620 lcd.printf("Time Left: %d:%d:%d ", a_hour, a_mins, a_sec);
201710861 0:78de368300ec 621 }
201710861 0:78de368300ec 622
201710861 0:78de368300ec 623 //=====================================
201710861 0:78de368300ec 624 //CLOCK
201710861 0:78de368300ec 625
201710861 0:78de368300ec 626 void clockInit(){
201710861 0:78de368300ec 627 //thread_Clock.start(getTime);
201710861 0:78de368300ec 628 }
201710861 0:78de368300ec 629
201710861 0:78de368300ec 630 int i;
201710861 0:78de368300ec 631 int j;
201710861 0:78de368300ec 632
201710861 0:78de368300ec 633 void getTime(){
201710861 0:78de368300ec 634
201710861 0:78de368300ec 635 PC.printf("%s\r\n", esp_arr);
201710861 0:78de368300ec 636
201710861 0:78de368300ec 637 for(i = 0; i < 10; i++){
201710861 0:78de368300ec 638 if(esp_arr[i] == 't' && esp_arr[i+1] == 'i' && esp_arr[i+2] == 'm' && esp_arr[i+3] == 'e'){
201710861 0:78de368300ec 639 j = 0;
201710861 0:78de368300ec 640 while(esp_arr[i] != 'H' && esp_arr[i] !='\0' && i != 20){
201710861 0:78de368300ec 641 arr_time[j++] = esp_arr[i++];
201710861 0:78de368300ec 642 }
201710861 0:78de368300ec 643 arr_time[j] = '\0';
201710861 0:78de368300ec 644 break;
201710861 0:78de368300ec 645 }
201710861 0:78de368300ec 646 }
201710861 0:78de368300ec 647
201710861 0:78de368300ec 648 PC.printf("%s\r\n", arr_time);
201710861 0:78de368300ec 649
201710861 0:78de368300ec 650 }
201710861 0:78de368300ec 651
201710861 0:78de368300ec 652 void writeTime(){
201710861 0:78de368300ec 653 getTime();
201710861 0:78de368300ec 654 lcd.locate(0, 16);
201710861 0:78de368300ec 655 lcd.printf("%s", arr_time);
201710861 0:78de368300ec 656 thread_sleep_for(500);
201710861 0:78de368300ec 657 }
201710861 0:78de368300ec 658
201710861 0:78de368300ec 659
201710861 0:78de368300ec 660 //=====================================
201710861 0:78de368300ec 661 //JOYSTICK
201710861 0:78de368300ec 662
201710861 0:78de368300ec 663 void ISR_center(){
201710861 0:78de368300ec 664 switch(mbedMode){
201710861 0:78de368300ec 665 case MAIN:
201710861 0:78de368300ec 666 main_center = 1;
201710861 0:78de368300ec 667 break;
201710861 0:78de368300ec 668 case COM:
201710861 0:78de368300ec 669 com_center = 1;
201710861 0:78de368300ec 670 break;
201710861 0:78de368300ec 671 case ALARM:
201710861 0:78de368300ec 672 alarm_center = 1;
201710861 0:78de368300ec 673 break;
201710861 0:78de368300ec 674 case ALARM_SET:
201710861 0:78de368300ec 675 alarm_set_center = 1;
201710861 0:78de368300ec 676 break;
201710861 0:78de368300ec 677 case PERM:
201710861 0:78de368300ec 678 perm_center = 1;
201710861 0:78de368300ec 679 break;
201710861 0:78de368300ec 680 default:
201710861 0:78de368300ec 681 break;
201710861 0:78de368300ec 682 }
201710861 0:78de368300ec 683 }
201710861 0:78de368300ec 684
201710861 0:78de368300ec 685 void ISR_up(){
201710861 0:78de368300ec 686 switch(mbedMode){
201710861 0:78de368300ec 687 case ALARM_SET:
201710861 0:78de368300ec 688 alarm_set_up = 1;
201710861 0:78de368300ec 689 break;
201710861 0:78de368300ec 690 default:
201710861 0:78de368300ec 691 break;
201710861 0:78de368300ec 692 }
201710861 0:78de368300ec 693 }
201710861 0:78de368300ec 694
201710861 0:78de368300ec 695 void ISR_down(){
201710861 0:78de368300ec 696 switch(mbedMode){
201710861 0:78de368300ec 697 case ALARM_SET:
201710861 0:78de368300ec 698 alarm_set_down = 1;
201710861 0:78de368300ec 699 break;
201710861 0:78de368300ec 700 default:
201710861 0:78de368300ec 701 break;
201710861 0:78de368300ec 702 }
201710861 0:78de368300ec 703 }
201710861 0:78de368300ec 704
201710861 0:78de368300ec 705 void ISR_left(){
201710861 0:78de368300ec 706 switch(mbedMode){
201710861 0:78de368300ec 707 case COM:
201710861 0:78de368300ec 708 com_left = 1;
201710861 0:78de368300ec 709 break;
201710861 0:78de368300ec 710 case ALARM:
201710861 0:78de368300ec 711 alarm_left = 1;
201710861 0:78de368300ec 712 break;
201710861 0:78de368300ec 713 case ALARM_SET:
201710861 0:78de368300ec 714 alarm_set_left = 1;
201710861 0:78de368300ec 715 break;
201710861 0:78de368300ec 716 case PERM:
201710861 0:78de368300ec 717 perm_left = 1;
201710861 0:78de368300ec 718 break;
201710861 0:78de368300ec 719 default:
201710861 0:78de368300ec 720 break;
201710861 0:78de368300ec 721 }
201710861 0:78de368300ec 722 }
201710861 0:78de368300ec 723
201710861 0:78de368300ec 724 void ISR_rite(){
201710861 0:78de368300ec 725 switch(mbedMode){
201710861 0:78de368300ec 726 case COM:
201710861 0:78de368300ec 727 com_right = 1;
201710861 0:78de368300ec 728 break;
201710861 0:78de368300ec 729 case ALARM_SET:
201710861 0:78de368300ec 730 alarm_set_right = 1;
201710861 0:78de368300ec 731 break;
201710861 0:78de368300ec 732 case ALARM:
201710861 0:78de368300ec 733 alarm_right = 1;
201710861 0:78de368300ec 734 break;
201710861 0:78de368300ec 735 case PERM:
201710861 0:78de368300ec 736 perm_right = 1;
201710861 0:78de368300ec 737 break;
201710861 0:78de368300ec 738 default:
201710861 0:78de368300ec 739 break;
201710861 0:78de368300ec 740 }
201710861 0:78de368300ec 741 }
201710861 0:78de368300ec 742
201710861 0:78de368300ec 743 void ISR_sw2(){
201710861 0:78de368300ec 744 switch(mbedMode){
201710861 0:78de368300ec 745 case COM:
201710861 0:78de368300ec 746 case ALARM:
201710861 0:78de368300ec 747 case ALARM_SET:
201710861 0:78de368300ec 748 case ALARM_SOUND:
201710861 0:78de368300ec 749 case ALARM_LED:
201710861 0:78de368300ec 750 case ALARM_SOUND_LED:
201710861 0:78de368300ec 751 case PERM:
201710861 0:78de368300ec 752 case PERM_SOUND:
201710861 0:78de368300ec 753 case PERM_LED:
201710861 0:78de368300ec 754 case PERM_SOUND_LED:
201710861 0:78de368300ec 755 button_back = 1;
201710861 0:78de368300ec 756 break;
201710861 0:78de368300ec 757 default:
201710861 0:78de368300ec 758 break;
201710861 0:78de368300ec 759 }
201710861 0:78de368300ec 760 }
201710861 0:78de368300ec 761
201710861 0:78de368300ec 762 void ISR_sw3(){
201710861 0:78de368300ec 763 switch(mbedMode){
201710861 0:78de368300ec 764 case PERM_SOUND:
201710861 0:78de368300ec 765 case PERM_LED:
201710861 0:78de368300ec 766 case PERM_SOUND_LED:
201710861 0:78de368300ec 767 perm_stop = 1;
201710861 0:78de368300ec 768 break;
201710861 0:78de368300ec 769 default:
201710861 0:78de368300ec 770 break;
201710861 0:78de368300ec 771 }
201710861 0:78de368300ec 772 }
201710861 0:78de368300ec 773
201710861 0:78de368300ec 774 void joyInit(){
201710861 0:78de368300ec 775 up.rise(&ISR_up);
201710861 0:78de368300ec 776 down.rise(&ISR_down);
201710861 0:78de368300ec 777 left.rise(&ISR_left);
201710861 0:78de368300ec 778 rite.rise(&ISR_rite);
201710861 0:78de368300ec 779 center.rise(&ISR_center);
201710861 0:78de368300ec 780
201710861 0:78de368300ec 781 sw2.fall(&ISR_sw2);
201710861 0:78de368300ec 782 sw3.fall(&ISR_sw3);
201710861 0:78de368300ec 783 }
201710861 0:78de368300ec 784
201710861 0:78de368300ec 785 void perm_Stop(){
201710861 0:78de368300ec 786 mbedMode = COM;
201710861 0:78de368300ec 787 tempMode = PERM;
201710861 0:78de368300ec 788 perm_stop = 1;
201710861 0:78de368300ec 789 writeLcdCLS("Permanent Stop...", 0, 16);
201710861 0:78de368300ec 790 perm_trans_status = 0;
201710861 0:78de368300ec 791 perm_trans_mode = 0;
201710861 0:78de368300ec 792 thread_sleep_for(1500);
201710861 0:78de368300ec 793 lcd.cls();
201710861 0:78de368300ec 794 }
201710861 0:78de368300ec 795
201710861 0:78de368300ec 796 //================================ NodeMCU program ================================
201710861 0:78de368300ec 797 NodeMCU_PGM http_server[] = {
201710861 0:78de368300ec 798 "", 1,
201710861 0:78de368300ec 799 "wifi.setmode(wifi.STATION)", 1,
201710861 0:78de368300ec 800 "", 1,
201710861 0:78de368300ec 801 "station_cfg={}", 1,
201710861 0:78de368300ec 802 "station_cfg.ssid=\"IP_S\"", 1,
201710861 0:78de368300ec 803 "station_cfg.pwd=\"1kokrjg3un7i4\"", 1,
201710861 0:78de368300ec 804 "station_cfg.save=false", 1,
201710861 0:78de368300ec 805 "wifi.sta.config(station_cfg)", 1,
201710861 0:78de368300ec 806 "", 1,
201710861 0:78de368300ec 807 "wifi.sta.connect()", 80,
201710861 0:78de368300ec 808 "", 1,
201710861 0:78de368300ec 809 "print(wifi.sta.status())", 1,
201710861 0:78de368300ec 810 "print(wifi.sta.getip())", 1,
201710861 0:78de368300ec 811 "", 1,
201710861 0:78de368300ec 812 "", 1,
201710861 0:78de368300ec 813 "http_resp = \"HTTP/1.0 200 OK\\r\\nContent-Type: text/html\\r\\n\\r\\n\"", 1,
201710861 0:78de368300ec 814 "html_1 = \"<!DOCTYPE html>\"", 1,
201710861 0:78de368300ec 815 "html_2 = \"<html lang=\\\"ko\\\">\"", 1,
201710861 0:78de368300ec 816 "html_3 = \"<head>\"", 1,
201710861 0:78de368300ec 817 "html_4 = \" <meta charset=\\\"UTF-8\\\">\"", 1,
201710861 0:78de368300ec 818 "html_5 = \" <title>clock1</title>\"", 1,
201710861 0:78de368300ec 819 "html_6 = \"</head>\"", 1,
201710861 0:78de368300ec 820 "html_7 = \"<body>\"", 1,
201710861 0:78de368300ec 821 "html_8 = \" <h1 id=\\\"clock\\\" style=\\\"color:black;\\\">clock</h1>\"", 1,
201710861 0:78de368300ec 822 "", 1,
201710861 0:78de368300ec 823 "html_9 = \" <script>\"", 1,
201710861 0:78de368300ec 824 "html_10 = \" function clock() {\"", 1,
201710861 0:78de368300ec 825 "html_11 = \" var time = new Date();\"", 1,
201710861 0:78de368300ec 826 "", 1,
201710861 0:78de368300ec 827 "html_12 = \" var hours = time.getHours();\"", 1,
201710861 0:78de368300ec 828 "html_13 = \" var minutes = time.getMinutes();\"", 1,
201710861 0:78de368300ec 829 "html_14 = \" var seconds = time.getSeconds();\"", 1,
201710861 0:78de368300ec 830 "", 1,
201710861 0:78de368300ec 831 "html_text = \" Target.innerText = `${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}:${seconds < 10 ? `0${seconds}` : seconds}`;\"", 1,
201710861 0:78de368300ec 832 "html_15 = \" location.replace(\\\"http://172.20.10.6\\\"+\\\"/?time=\\\"+hours.toString()+\\\":\\\"+minutes.toString()+\\\":\\\"+seconds.toString());\"", 1,
201710861 0:78de368300ec 833 "", 1,
201710861 0:78de368300ec 834 "html_16 = \" }\"", 1,
201710861 0:78de368300ec 835 "html_17 = \" setInterval(clock, 1000);\"", 1,
201710861 0:78de368300ec 836 "html_18 = \" </script>\"", 1,
201710861 0:78de368300ec 837 "html_19 = \"</body>\"", 1,
201710861 0:78de368300ec 838 "html_20 = \"</html>\"", 1,
201710861 0:78de368300ec 839 "", 1,
201710861 0:78de368300ec 840 "", 1,
201710861 0:78de368300ec 841 "srv = net.createServer(net.TCP)", 1,
201710861 0:78de368300ec 842 "srv:listen(80, function(conn)", 1,
201710861 0:78de368300ec 843 " conn:on(\"receive\", function(sck, payload)", 1,
201710861 0:78de368300ec 844 " print(payload)", 1,
201710861 0:78de368300ec 845 " sck:send(http_resp)", 1,
201710861 0:78de368300ec 846 " sck:send(html_1)", 1,
201710861 0:78de368300ec 847 " sck:send(html_2)", 1,
201710861 0:78de368300ec 848 " sck:send(html_3)", 1,
201710861 0:78de368300ec 849 " sck:send(html_4)", 1,
201710861 0:78de368300ec 850 " sck:send(html_5)", 1,
201710861 0:78de368300ec 851 " sck:send(html_6)", 1,
201710861 0:78de368300ec 852 " sck:send(html_7)", 1,
201710861 0:78de368300ec 853 " sck:send(html_8)", 1,
201710861 0:78de368300ec 854 " sck:send(html_9)", 1,
201710861 0:78de368300ec 855 " sck:send(html_10)", 1,
201710861 0:78de368300ec 856 " sck:send(html_11)", 1,
201710861 0:78de368300ec 857 " sck:send(html_12)", 1,
201710861 0:78de368300ec 858 " sck:send(html_13)", 1,
201710861 0:78de368300ec 859 " sck:send(html_14)", 1,
201710861 0:78de368300ec 860 //" sck:send(html_text)", 1,
201710861 0:78de368300ec 861 " sck:send(html_15)", 1,
201710861 0:78de368300ec 862 " sck:send(html_16)", 1,
201710861 0:78de368300ec 863 " sck:send(html_17)", 1,
201710861 0:78de368300ec 864 " sck:send(html_18)", 1,
201710861 0:78de368300ec 865 " sck:send(html_19)", 1,
201710861 0:78de368300ec 866 " sck:send(html_20)", 1,
201710861 0:78de368300ec 867 " end)", 1,
201710861 0:78de368300ec 868 " conn:on(\"sent\", function(sck) sck:close() end)", 1,
201710861 0:78de368300ec 869 "end)", 1,
201710861 0:78de368300ec 870 NULL, 0,
201710861 0:78de368300ec 871 };
201710861 0:78de368300ec 872
201710861 0:78de368300ec 873 void receive_Data(){
201710861 0:78de368300ec 874
201710861 0:78de368300ec 875 esp_data = ESP.getc();
201710861 0:78de368300ec 876
201710861 0:78de368300ec 877 if(index < 20){
201710861 0:78de368300ec 878 esp_arr[index++] = esp_data;
201710861 0:78de368300ec 879 }else if(index == 20){
201710861 0:78de368300ec 880 esp_arr[index] = '\0';
201710861 0:78de368300ec 881 }
201710861 0:78de368300ec 882
201710861 0:78de368300ec 883 }
201710861 0:78de368300ec 884
201710861 0:78de368300ec 885 void time_get(){
201710861 0:78de368300ec 886
201710861 0:78de368300ec 887 index = 0;
201710861 0:78de368300ec 888 }
201710861 0:78de368300ec 889
201710861 0:78de368300ec 890 void ledSet(){
201710861 0:78de368300ec 891 while(true){
201710861 0:78de368300ec 892 while(perm_trans_status || alarm_trans_status){
201710861 0:78de368300ec 893 led_r = 1;
201710861 0:78de368300ec 894 led_g = 0;
201710861 0:78de368300ec 895 thread_sleep_for(100);
201710861 0:78de368300ec 896 led_g = 1;
201710861 0:78de368300ec 897 thread_sleep_for(100);
201710861 0:78de368300ec 898 }
201710861 0:78de368300ec 899 led_r = 0;
201710861 0:78de368300ec 900 led_g = 1;
201710861 0:78de368300ec 901 }
201710861 0:78de368300ec 902 }
201710861 0:78de368300ec 903
201710861 0:78de368300ec 904 //==========================================================================
201710861 0:78de368300ec 905 //main
201710861 0:78de368300ec 906 int main(){
201710861 0:78de368300ec 907
201710861 0:78de368300ec 908 writeLcdCLS("Starting... ", 24, 6);
201710861 0:78de368300ec 909
201710861 0:78de368300ec 910 ESP.baud(115200);
201710861 0:78de368300ec 911 PC.baud(115200);
201710861 0:78de368300ec 912
201710861 0:78de368300ec 913 pc.printf("\r\nReset ESP...\r\n");
201710861 0:78de368300ec 914 ESP_reset();
201710861 0:78de368300ec 915
201710861 0:78de368300ec 916 PC.printf("Setup ESP noecho...\r\n");
201710861 0:78de368300ec 917 ESP_noecho();
201710861 0:78de368300ec 918
201710861 0:78de368300ec 919 PC.printf("Execute a NodeMCU program...\r\n");
201710861 0:78de368300ec 920 ESP_call_multi(http_server);
201710861 0:78de368300ec 921
201710861 0:78de368300ec 922 PC.printf("\r\nESP receive mode...\r\n");
201710861 0:78de368300ec 923 ESP.attach(receive_Data, Serial::RxIrq);
201710861 0:78de368300ec 924
201710861 0:78de368300ec 925 ticker.attach(&time_get, 1.0);
201710861 0:78de368300ec 926
201710861 0:78de368300ec 927 clockInit();
201710861 0:78de368300ec 928 thread_led.start(ledSet);
201710861 0:78de368300ec 929 thread_lcd.start(lcdStart);
201710861 0:78de368300ec 930 joyInit();
201710861 0:78de368300ec 931
201710861 0:78de368300ec 932 thread_sleep_for(500);
201710861 0:78de368300ec 933
201710861 0:78de368300ec 934 while(true){
201710861 0:78de368300ec 935
201710861 0:78de368300ec 936 }
201710861 0:78de368300ec 937 }