//----------out put--------------//
int pVall_Arr[] = {39,41,49};//กวนปุ๋ย
int pFz_Arr[] = {37,43,51};//ปล่อยปุ๋ย
int pMix_Arr[] = {35,45,47};//ปล่อยระบบน้ำ
int pVALL_TREE = 29;//ลำน้ำต้นไม้
int pTURBO = 25;//Misumisshi
//----------out put---------------//
//----------input BT--------------//
// int pSwmix = 31; //Bt กวนปุ๋ย
//----------input BT--------------//
//----------input Sonoff--------------//
int pSonoffTree = 27; //NORMAL C
//----------input Sonoff--------------//
int pSonoffA = 8;
int pSonoffB = 9;
int pSonoffC = 10;
int pSonoffSOSA = 5;
int pSonoffSOSB = 7;//2;
int pSonoffSOSC = 4;
int pSwFzA = 32;
int pSwFzB = 28;
int pSwFzC = 24;
int pSwMix = 3;
int pSwWater = 23;
int wSonoffA;
int wSonoffB;
int wSonoffC;
int wSonoffSOSA;
int wSonoffSOSB;
int wSonoffSOSC;
int wSwFzA;
int wSwFzB;
int wSwFzC;
int wSwMix;
int wSwWater;
int wSonoffSOS;
int wSonoffTree;
int wSwmix;
int wSwfz;
int select = 0;
int x = 1;
int wFz;
int y;
int z;
int j;
int count = 0;
int arr = 0;
//int even = 0;
int sts = 0;
int fix = 0;
int stsx = 0;
int start = 13; //กำหนดผสมปุ๋ย
int longx = 25; //กำหนดผสมปุ๋ย
int timer = 28; //กำหนดเวลาดูดปุ๋ย 4 ลิตร ต่อ 1 รอบการให้ปุ๋ย
int Auto_off = 100;//กันการทำงานพลาดให้หยุดมอเตอร์
void setup() {
pinMode(pSonoffA, INPUT);
pinMode(pSonoffB, INPUT);
pinMode(pSonoffC, INPUT);
pinMode(pSonoffSOSA, INPUT);
pinMode(pSonoffSOSB, INPUT);
pinMode(pSonoffSOSC, INPUT);
pinMode(pSonoffTree, INPUT);
pinMode(pSwFzA, INPUT);
pinMode(pSwFzB, INPUT);
pinMode(pSwFzC, INPUT);
pinMode(pSwMix, INPUT);
pinMode(pSwWater, INPUT);
pinMode(pMix_Arr, OUTPUT);
pinMode(pFz_Arr, OUTPUT);
pinMode(pVall_Arr, OUTPUT);
pinMode(pVALL_TREE, OUTPUT);
pinMode(pTURBO, OUTPUT);
pinMode(35, OUTPUT);
pinMode(37, OUTPUT);
pinMode(39, OUTPUT);
pinMode(41, OUTPUT);
pinMode(43, OUTPUT);
pinMode(45, OUTPUT);
pinMode(47, OUTPUT);
pinMode(49, OUTPUT);
pinMode(51, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (x == 1)
delay(1000);
x = 2;
//---------------sonoff---------------//
wSonoffA = digitalRead(pSonoffA);
wSonoffB = digitalRead(pSonoffB);
wSonoffC = digitalRead(pSonoffC);
wSonoffSOSA = digitalRead(pSonoffSOSA);
wSonoffSOSB = digitalRead(pSonoffSOSB);
wSonoffSOSC = digitalRead(pSonoffSOSC);
wSonoffTree = digitalRead(pSonoffTree);
//---------------sonoff---------------//
wSwFzA = digitalRead(pSwFzA);
wSwFzB = digitalRead(pSwFzB);
wSwFzC = digitalRead(pSwFzC);
wSwWater = digitalRead(pSwWater);
wSwMix = digitalRead(pSwMix);
//Serial.println(wSwFzA);
//Serial.println(wSwFzB);
//Serial.println(wSwFzC);
//Serial.println(wSonoffSOSC);
// Serial.println(digitalRead(3));
// Serial.println(digitalRead(23));
// Serial.println(digitalRead(12));
if (fix == 0)
{
if ((wSwWater == HIGH) && (wSwMix == LOW))//น้ำใส่ถึง
{
select = 5;
}else if ((wSwWater == LOW) && (wSwMix == HIGH))//กวนปุ๋ย
{
select = 6;
}else if ((wSwWater == HIGH) && (wSwMix == HIGH))//น้ำใส่ถึง
{
select = 5;
}
else
{
if ((wSonoffSOSA == HIGH) && (wSonoffSOSB == LOW)&&(wSonoffSOSC == LOW))
{x = 0; select = 1;}
else if ((wSonoffSOSA == LOW) && (wSonoffSOSB == HIGH)&&(wSonoffSOSC == LOW))
{x = 1; select = 1;}
else if ((wSonoffSOSA == LOW) && (wSonoffSOSB == LOW)&&(wSonoffSOSC == HIGH))
{x = 2; select = 1;}
else
{
if (wSonoffTree == HIGH)
{
x = 3;
select = 2;
}
else
{
if ((wSonoffA == HIGH) && (wSonoffB == LOW)&&(wSonoffC == LOW))
{x = 0; select = 3;}
else if ((wSonoffA == LOW) && (wSonoffB == HIGH)&&(wSonoffC == LOW))
{x = 1; select = 3;}
else if ((wSonoffA == LOW) && (wSonoffB == LOW)&&(wSonoffC == HIGH))
{x = 2; select = 3;}
else
select = 4;
}
}
}
fix = 1;
}
//Serial.println(select);
if (stsx == 9) //all stop
{
Serial.println("stop");
digitalWrite(pMix_Arr[0], LOW);
digitalWrite(pFz_Arr[0], LOW);
digitalWrite(pVall_Arr[0], LOW);
digitalWrite(pMix_Arr[1], LOW);
digitalWrite(pFz_Arr[1], LOW);
digitalWrite(pVall_Arr[1], LOW);
digitalWrite(pMix_Arr[2], LOW);
digitalWrite(pFz_Arr[2], LOW);
digitalWrite(pVall_Arr[2], LOW);
digitalWrite(pVALL_TREE, LOW);
digitalWrite(pTURBO, LOW);
}
else
{
if (select == 1) //SOS
fn_SOS();
else if(select == 2)
fn_tree();
else if(select == 3)
{
if (x == 0)
{
if (wSwFzA == HIGH)
wFz = 1;
else
wFz = 0;
}
else if(x == 1)
{
if (wSwFzB == HIGH)
wFz = 1;
else
wFz = 0;
}
else if(x == 2)
{
if (wSwFzC == HIGH)
wFz = 1;
else
wFz = 0;
}
/*
if ((wSwFzA == HIGH) && (wSwFzB == LOW)&&(wSwFzC == LOW))
{
if (x == 0)
wFz = 1;
else
wFz = 0;
}
else if ((wSwFzA == LOW) && (wSwFzB == HIGH)&&(wSwFzC == LOW))
{
if(x == 1)
wFz = 1;
else
wFz = 0;
}
else if ((wSwFzA == LOW) && (wSwFzB == LOW)&&(wSwFzC == HIGH))
{
if(x == 2)
wFz = 1;
else
wFz = 0;
}
*/
if (wFz == 1)
fn_fz();
else
fn_not_fz();
}
else if(select == 4)
stsx = 9;
else if(select == 5)
fn_water();
else if(select == 6)
fn_mix_fz();
}
}
void fn_fz()
{
delay(400);
Serial.println("ปล่อยปุ๋ยเข้าระบบ");
digitalWrite(pVALL_TREE, LOW);//ปิดเปิดน้ำต้นไม้
digitalWrite(pMix_Arr[x], HIGH); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], LOW); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], LOW); //ปิดเปิดน้ำ
digitalWrite(pTURBO, HIGH);
delay(start * 1000);
digitalWrite(pMix_Arr[x], LOW); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], HIGH); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], HIGH); //ปิดเปิดน้ำ
delay(timer * 1000);
digitalWrite(pMix_Arr[x], LOW); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], LOW); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], HIGH); //ปิดเปิดน้ำ
delay(Auto_off * 1000UL);
delay(start * 1000);
stsx = 9;
}
void fn_not_fz()
{
delay(100);
Serial.println("ให้น้ำเปล่า");
digitalWrite(pMix_Arr[x], LOW); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], LOW); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], HIGH); //ปิดเปิดน้ำ
digitalWrite(pVALL_TREE, LOW);//ปิดเปิดน้ำต้นไม้
digitalWrite(pTURBO, HIGH);
delay(Auto_off * 1000UL);
stsx = 9;
}
void fn_mix_fz() {
if ((wSwFzA == HIGH) && (wSwFzB == LOW)&&(wSwFzC == LOW))
x = 0;
else if ((wSwFzA == LOW) && (wSwFzB == HIGH)&&(wSwFzC == LOW))
x = 1;
else if ((wSwFzA == LOW) && (wSwFzB == LOW)&&(wSwFzC == HIGH))
x = 2;
else
x = 9;
if (wSwMix == HIGH)
{
delay(100);
Serial.println("กวนปุ๋ย");
digitalWrite(pMix_Arr[x], HIGH); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], LOW); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], LOW); //ปิดเปิดน้ำ
digitalWrite(pVALL_TREE, LOW);//ปิดเปิดน้ำต้นไม้
digitalWrite(pTURBO, LOW);
}
else
{
delay(100);
Serial.println("NOT กวนปุ๋ย");
digitalWrite(pMix_Arr[x], LOW); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], LOW); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], LOW); //ปิดเปิดน้ำ
digitalWrite(pVALL_TREE, LOW);//ปิดเปิดน้ำต้นไม้
digitalWrite(pTURBO, LOW);
}
}
void fn_water() {
if (wSwWater == HIGH)
{
delay(100);
Serial.println("น้ำใส่ถัง");
digitalWrite(pMix_Arr[x], LOW); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], LOW); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], LOW); //ปิดเปิดน้ำ
digitalWrite(pVALL_TREE, LOW);//ปิดเปิดน้ำต้นไม้
digitalWrite(pTURBO, HIGH);
}
else
{
delay(100);
Serial.println("NOT น้ำใส่ถัง");
digitalWrite(pMix_Arr[x], LOW); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], LOW); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], LOW); //ปิดเปิดน้ำ
digitalWrite(pVALL_TREE, LOW);//ปิดเปิดน้ำต้นไม้
digitalWrite(pTURBO, LOW);
}
}
void fn_SOS()
{
delay(100);
Serial.println("SOS");
digitalWrite(pMix_Arr[x], LOW); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], LOW); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], HIGH); //ปิดเปิดน้ำ
digitalWrite(pVALL_TREE, LOW);//ปิดเปิดน้ำต้นไม้
digitalWrite(pTURBO, HIGH);
delay(Auto_off * 1000UL);
stsx = 9;
}
void fn_tree() {
delay(100);
Serial.println("TREE");
digitalWrite(pMix_Arr[x], LOW); //ปั่นปุ๋ย
digitalWrite(pFz_Arr[x], LOW); //ปิดเปิดปุ๋ย
digitalWrite(pVall_Arr[x], LOW); //ปิดเปิดน้ำ
digitalWrite(pVALL_TREE, HIGH);//ปิดเปิดน้ำต้นไม้
digitalWrite(pTURBO, HIGH);
}
โรงเรือน A(8)
SOS B(7)
รดน้ำต้นไม้ (27)
โรงเรือน B(9)
โรงเรือน C(10)
มอเตอร์ (25)
โรงเรือน A (51,49,47)
โรงเรือน B (41,43,45)
โรงเรือน C (35,37,39)
MIX
FZ
VAL
ต้นไม้ (29)
SW A (24)
SW B (28)
SW C (32)
ปุมผสม (3)
SOS C(13)
SOS A(11)
น้ำใส่ถัง (23)