/* ใช้สำหรับ arduino nano เชื่อมต่อจาก ESP8266 netpie 2020_1 */ #include #include SoftwareSerial mySerial1(3, 2); // RX, TX #include byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; // Convert normal decimal numbers to binary coded decimal float vsec,vmin; double fm, vzz, vtt; String stry, strx, vobj, strz; int vd, vh, vm, vs, vmm, vmx, vlevel, flag; float mml; int vn, vk, vok, fn, fx, vn1, vn2; float set_t1, set_t2, set_t3, set_t4; float vset_t1, vset_t3, vset_t4; byte von4, von5, von6, von7, von8, von9, von10, von11; byte voff4, voff5, voff6, voff7, voff8, voff9, voff10, voff11; unsigned long vset_t2; int serIn, str[20]; int v_rst; int v1, v2, v3, v4, v5, v6, v7, v8, v9; int v_0,v_1,v_2,v_3,v_4,v_5,v_6,v_7; int sensorValue1 = 0; int sensorValue2 = 0; int outputValue1 = 0; int outputValue2 = 0; const int analogInPin1 = A0; const int analogInPin2 = A1; void setup() { // initialize both serial ports: Serial.begin(9600); mySerial1.begin(9600); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); pinMode(6, INPUT_PULLUP); pinMode(7, INPUT_PULLUP); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); digitalWrite(12, HIGH); v_rst = 0; // setDateDs1307(); //Set current time; // EEPROM.write(1,3); //Serial.println(EEPROM.read(2) //EEPROM.write(9,0); //EEPROM.write(14, 1); //EEPROM.write(15, 1); //EEPROM.write(16, 1); //EEPROM.write(17, 1); // EEPROM.write(20, 99); EEPROM.write(21, 8); EEPROM.write(22, 1); EEPROM.write(23, 1); // EEPROM.write(24, 99); EEPROM.write(25, 8); EEPROM.write(26, 22); EEPROM.write(27, 4); // EEPROM.write(28, 99); EEPROM.write(29, 9); EEPROM.write(30, 33); EEPROM.write(31, 3); if (EEPROM.read(2) == 0) digitalWrite(8, LOW); else digitalWrite(8, HIGH); if (EEPROM.read(3) == 0) digitalWrite(9, LOW); else digitalWrite(9, HIGH); if (EEPROM.read(4) == 0) digitalWrite(10, LOW); else digitalWrite(10, HIGH); if (EEPROM.read(5) == 0) digitalWrite(11, LOW); else digitalWrite(11, HIGH); set_t1 = 0; set_t2 = 0; set_t3 = 0; set_t4 = 0; vn = 0; fn = 0; fx = 0; fm = 500; // setDateDs1307(); // digitalWrite(8, LOW);delay(500); digitalWrite(8, HIGH);delay(500); // digitalWrite(9, LOW);delay(500); digitalWrite(9, HIGH);delay(500); // digitalWrite(10, LOW);delay(500); digitalWrite(10, HIGH);delay(500); // digitalWrite(11, LOW);delay(500); digitalWrite(11, HIGH);delay(500); } byte decToBcd(byte val) { return ( (val / 10 * 16) + (val % 10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return ( (val / 16 * 10) + (val % 16) ); } // Function to set the currnt time, change the second&minute&hour to the right time // Function to gets the date and time from the ds1307 and prints result void disp_eeprom() { int vzz=0; for (int ii=0;ii4) { mySerial1.println("T -มีต่อ.. "); mySerial1.println("Z"); delay(1000); vzz=0; } } mySerial1.println("T -END "); mySerial1.println("Z"); } void disp_eeprom2() { int vzz = 0; for (int ii = 0; ii < EEPROM.read(1); ii++) { String vssx = "T "; if (EEPROM.read(20 + ii * 4) == 99) vssx += "-:"; else if (EEPROM.read(20 + ii * 4) < 10) vssx += "0" + String(EEPROM.read(20 + ii * 4)) + ":"; else vssx += String(EEPROM.read(20 + ii * 4)) + ":"; if (EEPROM.read(21 + ii * 4) == 99) vssx += "-:"; else if (EEPROM.read(21 + ii * 4) < 10) vssx += "0" + String(EEPROM.read(21 + ii * 4)) + ":"; else vssx += String(EEPROM.read(21 + ii * 4)) + ":"; if (EEPROM.read(22 + ii * 4) < 10) vssx += "0" + String(EEPROM.read(22 + ii * 4)) + "="; else vssx += String(EEPROM.read(22 + ii * 4)) + "="; if (EEPROM.read(23 + ii * 4) < 10) vssx += "0" + String(EEPROM.read(23 + ii * 4)) ; else vssx += String(EEPROM.read(23 + ii * 4)); mySerial1.println(vssx); } mySerial1.println("T -END "); // mySerial1.println("Z"); } void chk_pro1() { Serial.println("CHK555"); vmx=vm; if (EEPROM.read(500)==1) v_0=0; else v_0=55; if (EEPROM.read(501)==1) v_1=1; else v_1=55; if (EEPROM.read(502)==1) v_2=2; else v_2=55; if (EEPROM.read(503)==1) v_3=3; else v_3=55; if (EEPROM.read(504)==1) v_4=4; else v_4=55; if (EEPROM.read(505)==1) v_5=5; else v_5=55; if (EEPROM.read(506)==1) v_6=6; else v_6=55; for (int ii=0;ii 1000 && ( set_t1 > 0 || set_t2 > 0 || set_t3 > 0 || set_t4 > 0 ) ) { vset_t1 = millis(); if (set_t1 > 0 ) { set_t1 = set_t1 - 1; if (set_t1 == 0) { digitalWrite(8, LOW); EEPROM.write(2, 0); mySerial1.println("H110"); } mySerial1.print("D3"); mySerial1.println(set_t1); delay(100); } if (set_t2 > 0 ) { set_t2 = set_t2 - 1; if (set_t2 == 0) { digitalWrite(9, LOW); EEPROM.write(3, 0); mySerial1.println("H120"); } mySerial1.print("D4"); mySerial1.println(set_t2); delay(100); } if (set_t3 > 0 ) { set_t3 = set_t3 - 1; if (set_t3 == 0) { digitalWrite(10, LOW); EEPROM.write(4, 0); mySerial1.println("H130"); } mySerial1.print("D5"); mySerial1.println(set_t3); delay(100); } if (set_t4 > 0 ) { set_t4 = set_t4 - 1; if (set_t4 == 0) { digitalWrite(11, LOW); EEPROM.write(5, 0); mySerial1.println("H140"); } mySerial1.print("D6"); mySerial1.println(set_t4); delay(100); } } if (millis() - vset_t2 > 1000) { vset_t2 = millis(); vs = vs + 1; if (vs > 59) { vs = 0; vm = vm + 1; } if (vm > 59) { vm = 0; vh = vh + 1; if (vh > 23) { vh = 0; vd = vd + 1; if (vd > 6) vd = 0; } } if (vs == 0) mySerial1.println("KT"); if (EEPROM.read(0) == 11 ) { if (vmx != vm) chk_pro1(); } if (digitalRead(13) == 1) digitalWrite(13, 0); else digitalWrite(13, 1); } if (millis() - vzz > 6000) { vzz = millis(); v_rst = v_rst + 1; mySerial1.print("D1"); mySerial1.print(vd); mySerial1.print("/"); mySerial1.print(vh); mySerial1.print(":"); mySerial1.print(vm); mySerial1.print(":"); mySerial1.println(vs); mySerial1.print("D2"); mySerial1.print(EEPROM.read(500));mySerial1.print(EEPROM.read(501));mySerial1.print(EEPROM.read(502)); mySerial1.print(EEPROM.read(503));mySerial1.print(EEPROM.read(504));mySerial1.print(EEPROM.read(505));mySerial1.println(EEPROM.read(506)); Serial.print("v_rst=");Serial.println(v_rst); if (v_rst > 20) { digitalWrite(12, LOW); delay(100); digitalWrite(12, HIGH); v_rst = 0; mySerial1.println("RS"); Serial.println("reset5555"); } } if (digitalRead(4) == 0) { if (digitalRead(8) == 1) { digitalWrite(8, LOW); EEPROM.write(2, 0); mySerial1.println("H110"); } else { digitalWrite(8, HIGH); EEPROM.write(2, 1); mySerial1.println("H111"); } while (digitalRead(4) == 0) delay(100); } if (digitalRead(5) == 0) { if (digitalRead(9) == 1) { digitalWrite(9, LOW); EEPROM.write(3, 0); mySerial1.println("H120"); } else { digitalWrite(9, HIGH); EEPROM.write(3, 1); mySerial1.println("H121"); } while (digitalRead(5) == 0) delay(100); } if (digitalRead(6) == 0) { if (digitalRead(10) == 1) { digitalWrite(10, LOW); EEPROM.write(4, 0); mySerial1.println("H130"); } else { digitalWrite(10, HIGH); EEPROM.write(4, 1); mySerial1.println("H131"); } while (digitalRead(6) == 0) delay(100); } if (digitalRead(7) == 0) { if (digitalRead(11) == 1) { digitalWrite(11, LOW); EEPROM.write(5, 0); mySerial1.println("H140"); } else { digitalWrite(11, HIGH); EEPROM.write(5, 1); mySerial1.println("H141"); } while (digitalRead(7) == 0) delay(100); } if (mySerial1.available()) mySerial1Event(); if (Serial.available()) SerialEvent(); } void SerialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); strz += inChar; if (inChar == '\n' || inChar == '\r') { if (strz[0] == 'L' && strz[1] == 'V' ) { int v21 = strz[2] & 0b00001111 ; int v22 = strz[3] & 0b00001111 ; int v23 = strz[4] & 0b00001111 ; int v24 = strz[5] & 0b00001111 ; int v15 = (v21 * 100 + v22 * 10 + v23) ; vlevel = v15 ; } strz = ""; } } } void mySerial1Event() { while (mySerial1.available()) { char inChar = (char)mySerial1.read(); stry += inChar; if (inChar == '\n' || inChar == '\r') { strx = stry; stry = ""; // Serial.print("v_rst="); // Serial.println(v_rst); Serial.println(strx); // Serial.println("ssk"); if (strx[3] == 'S' && strx[4] == 'T' && strx[5] == 'T' ) { vobj = String(strx).substring(3, 9); int v1 = strx[7] & 0b00001111 ; int v2 = strx[8] & 0b00001111 ; int v3 = strx[9] & 0b00001111 ; int v4 = strx[10] & 0b00001111 ; int v5 = (v1 * 1000 + v2 * 100 + v3 * 10 + v4) ; if (strx[6] == '1') { digitalWrite(8, HIGH); EEPROM.write(2, 1); set_t1 = v5; } if (strx[6] == '2') { digitalWrite(9, HIGH); set_t2 = v5; } if (strx[6] == '3') { digitalWrite(10, HIGH); set_t3 = v5; } if (strx[6] == '4') { digitalWrite(11, HIGH); set_t4 = v5; } } if (strx[0] == 'O' && strx[1] == 'K' ) { v_rst = 0; } if (strx[0] == 'L' && strx[1] == '2' ) { if (strx[2] == 'D' & strx[3] == 'T') { mySerial1.println("dtok"); Serial.println("dtok"); disp_eeprom(); } if (strx[2] == 'd') { byte v1 = strx[3] & 0b00001111; byte v2 = strx[4] & 0b00001111; vd = v1 * 10 + v2; } if (strx[2] == 'h') { byte v1 = strx[3] & 0b00001111; byte v2 = strx[4] & 0b00001111; vh = v1 * 10 + v2; } if (strx[2] == 'm') { byte v1 = strx[3] & 0b00001111; byte v2 = strx[4] & 0b00001111; vm = v1 * 10 + v2; } if (strx[2] == 's') { byte v1 = strx[3] & 0b00001111; byte v2 = strx[4] & 0b00001111; vs = v1 * 10 + v2; // Serial.println("SAKSRI"); Serial.print("DX"); Serial.print(vd < 10 ? "0" : "" ); Serial.print(vd); Serial.print(":"); Serial.print(vh < 10 ? "0" : "" ); Serial.print(vh); Serial.print(":"); Serial.print(vm < 10 ? "0" : ""); Serial.print(vm); Serial.print(":"); Serial.print(vs < 10 ? "0" : ""); Serial.println(vs); } if (strx[2] == 'N') { byte v1 = strx[3] & 0b00001111; byte v2 = strx[4] & 0b00001111; byte v3 = strx[5] & 0b00001111; byte v4 = strx[6] & 0b00001111; byte v5 = strx[7] & 0b00001111; byte v6 = strx[8] & 0b00001111; vn1 = v1 * 100 + v2 * 10 + v3; vn2 = v4 * 100 + v5 * 10 + v6; } if (strx[2] == 'E' && strx[3] == 'E' ) { byte v1 = strx[4] & 0b00001111; byte v2 = strx[5] & 0b00001111; byte v3 = strx[6] & 0b00001111; byte v4 = strx[7] & 0b00001111; byte v5 = strx[8] & 0b00001111; byte v6 = strx[9] & 0b00001111; byte v7 = strx[10] & 0b00001111; int v8 = v2 * 100 + v3 * 10 + v4; int v9 = v5 * 100 + v6 * 10 + v7; EEPROM.write(v8, v9); } if (strx[2] == 'E' && strx[3] == '1' ) { mySerial1.print( "Q-น้ำON="); mySerial1.println( EEPROM.read(11)); mySerial1.print( "Q-น้ำOFF="); mySerial1.println( EEPROM.read(12)); mySerial1.print( "Q-แดดON="); mySerial1.println( EEPROM.read(10)); mySerial1.print( "Q-แดดOFF="); mySerial1.println( EEPROM.read(13)); mySerial1.println("Z"); } if (strx[2] == 'E' && strx[3] == '2' ) { mySerial1.print( "Q-INPUT1="); mySerial1.println( EEPROM.read(14)); mySerial1.print( "Q-INPUT2="); mySerial1.println( EEPROM.read(15)); mySerial1.print( "Q-INPUT3="); mySerial1.println( EEPROM.read(16)); mySerial1.print( "Q-INPUT4="); mySerial1.println( EEPROM.read(17)); mySerial1.println("Z"); } if (strx[2] == 'S' ) { EEPROM.write(0, 11); mySerial1.println("F1"); // mySerial1.println("Q-ระบบทำงาน"); // mySerial1.println("Z"); } if (strx[2] == 'R' ) { EEPROM.write(0, 0); mySerial1.println("F2"); // mySerial1.println("Q-ระบบ"); // mySerial1.println("Z"); } if (strx[2] == 'H' ) { if (EEPROM.read(0) == 11) { mySerial1.println("F1"); /// mySerial1.println("Q-ระบบทำงาน ตามเวลาที่ตั้งใว้ปกติ"); // mySerial1.println("Z"); delay(5); } else { mySerial1.println("F2"); // mySerial1.println("Q-ระบบ งด ทำงานตามเวลาที่ตั้งใว"); // mySerial1.println("Z"); delay(5); } } if (strx[2] == '1' ) if ( strx[3] == '1') { digitalWrite(8, LOW); EEPROM.write(2, 0); mySerial1.println("H110"); } else { digitalWrite(8, HIGH); EEPROM.write(2, 1); mySerial1.println("H111"); } if (strx[2] == '2' ) if ( strx[3] == '1') { digitalWrite(9, LOW); EEPROM.write(3, 0); mySerial1.println("H120"); } else { digitalWrite(9, HIGH); EEPROM.write(3, 1); mySerial1.println("H121"); } if (strx[2] == '3') if ( strx[3] == '1') { digitalWrite(10, LOW); EEPROM.write(4, 0); mySerial1.println("H130"); } else { digitalWrite(10, HIGH); EEPROM.write(4, 1); mySerial1.println("H131"); } if (strx[2] == '4' ) if ( strx[3] == '1') { digitalWrite(11, LOW); EEPROM.write(5, 0); mySerial1.println("H140"); } else { digitalWrite(11, HIGH); EEPROM.write(5, 1); mySerial1.println("H141"); } if (strx[2] == '5' ) if ( strx[3] == '1') { EEPROM.write(9, 0); mySerial1.println("H150"); } else { EEPROM.write(9, 1); mySerial1.println("H151"); } if (strx[2] == '6' ) if ( strx[3] == '1') { EEPROM.write(0, 0); mySerial1.println("H160"); } else { EEPROM.write(0, 11); mySerial1.println("H161"); } if (strx[2] == 'X' ) if ( strx[3] == 'X') { Serial.println("saksri H110"); if (digitalRead(8) == 0) mySerial1.println("H110"); else mySerial1.println("H111"); if (digitalRead(9) == 0) mySerial1.println("H120"); else mySerial1.println("H121"); if (digitalRead(10) == 0) mySerial1.println("H130"); else mySerial1.println("H131"); if (digitalRead(11) == 0) mySerial1.println("H140"); else mySerial1.println("H141"); if (EEPROM.read(9) == 0) mySerial1.println("H150"); else mySerial1.println("H151"); if (EEPROM.read(0) == 11) mySerial1.println("H161"); else mySerial1.println("H160"); } } } } }