/* Mega multple serial test Receives from the main serial port, sends to the others. Receives from serial port 1, sends to the main serial (Serial 0). This example works only on the Arduino Mega The circuit: Any serial device attached to Serial port 1 Serial monitor open on Serial port 0: created 30 Dec. 2008 modified 20 May 2012 by Tom Igoe & Jed Roach This example code is in the public domain. //e589bb5a ใช้สำหรับ arduino nano swith on off โปรแกรมเวลา */ #include #include SoftwareSerial mySerial1(3, 2); // RX, TX double fm, vzz, vtt; String stry, strx, vobj; int vd, vh, vm, vs, vmm, vmx; 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 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; // EEPROM.write(1,0); //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); 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); vm = EEPROM.read(6); vh = EEPROM.read(7); vd = EEPROM.read(8); set_t1 = 0; set_t2 = 0; set_t3 = 0; set_t4 = 0; vn = 0; fn = 0; fx = 0; fm = 500; // 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); } void disp_eeprom() { int vzz = 0; for (int ii = 0; ii < EEPROM.read(1); ii++) { String vssx = ""; if (EEPROM.read(25 + ii * 6) < 10) vssx += "T -00" + String(EEPROM.read(25 + ii * 6)) + ":"; else if (EEPROM.read(25 + ii * 6) < 100) vssx += "T -0" + String(EEPROM.read(25 + ii * 6)) + ":"; else vssx += "T -" + String(EEPROM.read(25 + ii * 6)) + ":"; if (EEPROM.read(23 + ii * 6) < 10) vssx += "00" + String(EEPROM.read(23 + ii * 6)) + "/"; else if (EEPROM.read(23 + ii * 6) < 100) vssx += "0" + String(EEPROM.read(23 + ii * 6)) + "/"; else vssx += "" + String(EEPROM.read(23 + ii * 6)) + "/"; if (EEPROM.read(20 + ii * 6) == 99) vssx += "-/"; else if (EEPROM.read(20 + ii * 6) < 10) vssx += "0" + String(EEPROM.read(20 + ii * 6)) + "/"; else vssx += String(EEPROM.read(20 + ii * 6)) + "/"; if (EEPROM.read(21 + ii * 6) == 99) vssx += "-/"; else if (EEPROM.read(21 + ii * 6) < 10) vssx += "0" + String(EEPROM.read(21 + ii * 6)) + "/"; else vssx += String(EEPROM.read(21 + ii * 6)) + "/"; if (EEPROM.read(22 + ii * 6) < 10) vssx += "0" + String(EEPROM.read(22 + ii * 6)) + "/"; else vssx += String(EEPROM.read(22 + ii * 6)) + "/"; if (EEPROM.read(24 + ii * 6) < 10) vssx += "0" + String(EEPROM.read(24 + ii * 6)); else vssx += String(EEPROM.read(24 + ii * 6)); mySerial1.println(vssx); delay(10); vzz++; if (vzz > 4) { mySerial1.println("T -มีต่อ.. "); mySerial1.println("Z"); delay(5000); vzz = 0; } } mySerial1.println("T -END "); mySerial1.println("Z"); } void chk_pro1() { Serial.println("CHK555"); vmx = vm; for (int ii = 0; ii < EEPROM.read(1); ii++) { if ( (vd == EEPROM.read(20 + ii * 6) || EEPROM.read(20 + ii * 6) == 99 ) && ( vh == EEPROM.read(21 + ii * 6) || EEPROM.read(21 + ii * 6) == 99 ) && vm == EEPROM.read(22 + ii * 6) ) { Serial.println("okok"); int vyy = EEPROM.read(24 + ii * 6); int vx1 = 0; for (int i = 0; i < 4; i++) { vx1 = vyy % 2; vyy = vyy / 2; mySerial1.print("H2"); mySerial1.write(EEPROM.read(25 + ii * 6) < 10 ? "00" : EEPROM.read(25 + ii * 6) < 100 ? "0" : "" ); mySerial1.print(EEPROM.read(25 + ii * 6), DEC); mySerial1.write(EEPROM.read(23 + ii * 6) < 10 ? "00" : EEPROM.read(23 + ii * 6) < 100 ? "0" : "" ); mySerial1.print(EEPROM.read(23 + ii * 6), DEC); // mySerial1.print(EEPROM.read(23+ii*6)); mySerial1.print(i + 1); mySerial1.println(vx1); if (EEPROM.read(25 + ii * 6) == vn1 && EEPROM.read(23 + ii * 6) == vn2) { if (i == 0) if ( vx1 == 0) { digitalWrite(8, LOW); EEPROM.write(2, 0); } else { digitalWrite(8, HIGH); EEPROM.write(2, 1); } if (i == 1) if ( vx1 == 0) { digitalWrite(9, LOW); EEPROM.write(3, 0); } else { digitalWrite(9, HIGH); EEPROM.write(3, 1); } if (i == 2) if ( vx1 == 0) { digitalWrite(10, LOW); EEPROM.write(4, 0); } else { digitalWrite(10, HIGH); EEPROM.write(4, 1); } if (i == 3) if ( vx1 == 0) { digitalWrite(11, LOW); EEPROM.write(5, 0); } else { digitalWrite(11, HIGH); EEPROM.write(5, 1); } } delay(300); } } } } void loop() { if (millis() - vset_t1 > 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 (EEPROM.read(0) == 11 ) { if (millis() - vset_t2 > 1000) { vset_t2 = millis(); Serial.print("t:"); Serial.print(vh); Serial.print(":"); Serial.print(vm); Serial.print(":"); Serial.println(vs); 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 > 7) vd = 1; } } EEPROM.write(8, vd); EEPROM.write(7, vh); EEPROM.write(6, vm); if (vs == 0) mySerial1.println("KT"); } } if (millis() - vzz > 6000) { vzz = millis(); // Serial.println("reset5555"); // Serial.println(v_rst); v_rst = v_rst + 1; if (v_rst > 10) { 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 (millis() - mml > 1000) { mml = millis(); fm = fm + 1; if (EEPROM.read(0) == 11 ) { if (vm != vmx) chk_pro1(); } if (EEPROM.read(14) == 1 && (fm==1 || fm==9)) { sensorValue1 = analogRead(A0); outputValue1 = map(sensorValue1, 0, 1023, 0, 60); // ไฟ solar cell mySerial1.print("D1"); mySerial1.println(outputValue1); } if (EEPROM.read(15) == 1 && (fm==3 || fm==11) ) { sensorValue2 = analogRead(A1); outputValue2 = map(sensorValue2, 0, 1023, 0, 60); // ระดับน้ำถังพัก mySerial1.print("D2"); mySerial1.println(outputValue2); } if (EEPROM.read(16) == 1 && (fm==5 || fm==13)) { sensorValue2 = analogRead(A2); outputValue2 = map(sensorValue2, 0, 1023, 0, 60); // ระดับน้ำถังพัก mySerial1.print("D7"); mySerial1.println(outputValue2); } if (EEPROM.read(17) == 1 && ( fm==7 || fm==15) ) { sensorValue2 = analogRead(A3); outputValue2 = map(sensorValue2, 0, 1023, 0, 60); // ระดับน้ำถังพัก mySerial1.print("D8"); mySerial1.println(outputValue2); } if (fm > 20) { fm = 0; } if (digitalRead(13) == HIGH) digitalWrite(13, LOW); else digitalWrite(13, HIGH); } if (mySerial1.available()) mySerial1Event(); if (Serial.available()) SerialEvent(); } void SerialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); stry += inChar; if (inChar == '\n' || inChar == '\r') { if (stry[5] == 'S') mySerial1.print(stry); if (stry[0] == 'X' ) { byte v1 = stry[1] & 0b00001111; byte v2 = stry[2] & 0b00001111; byte v3 = stry[3] & 0b00001111; byte v4 = stry[4] & 0b00001111; byte v5 = stry[5] & 0b00001111; byte v6 = stry[6] & 0b00001111; byte v7 = stry[7] & 0b00001111; int v8 = v1 * 1000 + v2 * 100 + v3 * 10 + v4; int v9 = v5 * 100 + v6 * 10 + v7; EEPROM.write(v8, v9); } if (stry[0] == 'T' ) { mySerial1.println("D000"); } if (stry[0] == '3' ) { for (int ii = 0; ii < EEPROM.read(1); ii++) { String vssx = ""; if (EEPROM.read(20 + ii * 5) < 10) vssx += "T0" + String(EEPROM.read(20 + ii * 5)) + ":"; else vssx += "T" + String(EEPROM.read(20 + ii * 5)) + ":"; if (EEPROM.read(21 + ii * 5) < 10) vssx += "0" + String(EEPROM.read(21 + ii * 5)) + "/"; else vssx += String(EEPROM.read(21 + ii * 5)) + "/"; if (EEPROM.read(22 + ii * 5) < 10) vssx += "0" + String(EEPROM.read(22 + ii * 5)) + "/"; else vssx += String(EEPROM.read(22 + ii * 5)) + "/"; if (EEPROM.read(23 + ii * 5) < 10) vssx += "0" + String(EEPROM.read(23 + ii * 5)) + "/"; else vssx += String(EEPROM.read(23 + ii * 5)) + "/"; if (EEPROM.read(24 + ii * 5) < 10) vssx += "0" + String(EEPROM.read(24 + ii * 5)); else vssx += String(EEPROM.read(24 + ii * 5)); Serial.println(vssx); delay(10); } Serial.println("dsdsdsdsds"); } stry = ""; // Serial.println("333333"); } } } 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[0] == 'S' && strx[1] == 'T' && strx[2] == 'T' ) { vobj = String(strx).substring(3, 9); int v1 = strx[10] & 0b00001111 ; int v2 = strx[11] & 0b00001111 ; int v3 = strx[12] & 0b00001111 ; int v4 = strx[13] & 0b00001111 ; int v5 = (v1 * 1000 + v2 * 100 + v3 * 10 + v4) ; if (strx[9] == '1') { digitalWrite(8, HIGH); set_t1 = v5; } if (strx[9] == '2') { digitalWrite(9, HIGH); set_t2 = v5; } if (strx[9] == '3') { digitalWrite(10, HIGH); set_t3 = v5; } if (strx[9] == '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("Q-ระบบทำงานตามเวลาที่ตั้งใว้ปกติ"); mySerial1.println("Z"); } if (strx[2] == 'R' ) { EEPROM.write(0, 0); mySerial1.println("Q-ระบบ งด ทำงานตามเวลาที่ตั้งใว้"); mySerial1.println("Z"); delay(5); } if (strx[2] == 'H' ) { if (EEPROM.read(0) == 11) { mySerial1.println("Q-ระบบทำงาน ตามเวลาที่ตั้งใว้ปกติ"); mySerial1.println("Z"); delay(5); } else { 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') { 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"); } } } } }