#include <Servo.h>
Servo servomotor1; //obrim la llibreria del servomotor
void setup () { // definim pins
pinMode (A1, OUTPUT);//bomba
pinMode (A2, INPUT);//humitat
pinMode(A3, INPUT);//humitat
pinMode (13, INPUT);//Selector
pinMode (12, OUTPUT);//led blau
pinMode (11, OUTPUT);//led vermell
pinMode (10, OUTPUT);// led verd
servomotor1.attach(7);// pin servomotor
Serial.begin(9600);
}
// definim variables:
int reg = 0; // mode de reg
int SenyalHumitat= 0; // senyal primer sensor d'humitat
int SenyalHumitatB= 0; // senyal segon sensor d'humitat
int selector=0; // senyal selector
int mode = 1; // definim el variable mode
int pos = 0; // definim la variable posició (angle)
String estatbomba =""; // definim la variable "estatbomba"
void loop() {
int SenyalHumitat = analogRead(A3); // senyal de la humitat
int SenyalHumitatB= analogRead(A2);// senyal de la humitat 2a planta
int selector= digitalRead(13); // selector de 2 passes, canvia el mode.
if (selector== HIGH) //si el selector està en la primera posició
{mode = 0; // activa el mode manual
}
if (selector== LOW)//si el selector està en la segona posició
{mode = 1; // activa el mode automàtic
}
if (mode == 0) // si està en mode manual
{ digitalWrite(10, 1); // activa tots els leds
digitalWrite(11, 1);
digitalWrite(12, 1);
}
if (mode == 1){ // si està en mode automàtic (1)
digitalWrite(10, 0); //desactiva els leds
digitalWrite(11, 0);
digitalWrite(12,0);
if (reg== 1){
digitalWrite(10, HIGH); //encén led verd
digitalWrite(11,0);// tanca led vermell
estatbomba = "Bomba encesa"; // canvia l'estat de la bomba a la consola
pos = 25;
servomotor1.write(pos); //El servomotor es posiciona a l’angle 25
delay(2000);
analogWrite(A1, 250); // encén la bomba
delay(1000); // temps que tarda l'aigua en arribar
analogWrite(A1, 0); // tanca bomba
delay(1500); // els delays són pauses al sistema per a que tot funcioni bé.
reg=0; // finalitza el protocol de reg
}
if (reg== 2){
digitalWrite(10, HIGH); //encén led verd
digitalWrite(11,0);// tanca led vermell
estatbomba = "Bomba encesa";
pos= 145;
servomotor1.write(pos); //El servomotor es posiciona a l’angle 145
delay(2000);
analogWrite(A1, 250); // encén bomba
delay (1000);
analogWrite(A1, 0); // tanca bomba
delay(1500); // els delays són pauses al sistema per a que tot funcioni bé.
reg=0; // finalitza el protocol de reg
}
if (reg== 0){ // si no hi ha cap protocol de reg encès
digitalWrite(10, 0); //encén led verd
digitalWrite(11,HIGH);// tanca led vermell
analogWrite(A1, 0); // tanca bomba
estatbomba = "Bomba tancada"; // cambia l'estat de la bomba de la consola
}
if (SenyalHumitat<360){ // si la primera planta necessita aigua
reg = 1; // encén el protocol de reg 1
}
if (SenyalHumitat>360 && SenyalHumitatB>360){ // si cap de les plantes és seca
reg= 0; // no encén cap protocol de reg
}
if (SenyalHumitatB<560){ // si la segona planta necessita aigua
reg = 2; // encén el protocol de reg 2
};
};
// definim tota la informació que revisarem a la consola
Serial.print("Mode: "+String(mode));
Serial.print(" -- Sensor d'humitat: "+String(SenyalHumitat));
Serial.print(" -- Sensor d'humitat BBBB: "+String(SenyalHumitatB)+"---- reg "+ String(reg)+" estat bomba:");
Serial.println(estatbomba);
Serial.println("!!POS!!"+String(pos));
}