/* 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,strz, vobj; int vd, vh, vm, vs, vmm, vmx,vlevel,vlevel2,vlevel3, 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 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); // EEPROM.write(10,100); ระดับแสงแดดค่าสูง // EEPROM.write(11,25); ระดับน้ำค่าสูง // EEPROM.write(12,15); ระดับน้ำค่าต่ำ // EEPROM.write(13,90); ระดับแสงแดดค่าต่ำ 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;ii4) { 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 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 (fm > 2 ) { fm = 1; } if (EEPROM.read(0) == 11 ) { if (vm != vmx) chk_pro1(); } sensorValue1 = analogRead(analogInPin1); outputValue1 = map(sensorValue1, 0, 1023, 0, 200); // ไฟ solar cell // sensorValue2 = analogRead(analogInPin2); // outputValue2 = map(sensorValue2, 0, 1023, 0, 100); // ไฟ solar cell2 if (EEPROM.read(2) == 1 ) { if (outputValue1 > EEPROM.read(10) && vlevel > EEPROM.read(11) && flag == 0 ) { flag = 1; digitalWrite(9, HIGH); EEPROM.write(3, 1); mySerial1.println("H121"); } if (flag == 1 && ( outputValue1 < EEPROM.read(13) || vlevel < EEPROM.read(12) ) ) { flag = 0; digitalWrite(9, LOW); EEPROM.write(3, 0); mySerial1.println("H120"); } if (EEPROM.read(3) == 0 ) { flag = 0; } } if ( EEPROM.read(2) == 0 && flag == 1) { flag = 0; digitalWrite(9, LOW); EEPROM.write(3, 0); mySerial1.println("H120"); } if (EEPROM.read(14) == 1 && fm == 1 ) { mySerial1.print("D2"); mySerial1.println(outputValue1); } if (EEPROM.read(15) == 1 && fm == 2 ) { digitalWrite(13, HIGH); delay(100); Serial.println("B1"); delay(10); digitalWrite(13, LOW); mySerial1.print("D7"); mySerial1.println(vlevel);Serial.println(vlevel); } // 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(); 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 ; } if (strz[0] == 'A' && strz[1] == '1' ) { 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) ; vlevel2 = v15 ; } if (strz[0] == 'A' && strz[1] == '2' ) { 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) ; vlevel3 = 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"); } } } } }