///////////////////////////////////////////////////////////////////////////////////////
//Terms of use
///////////////////////////////////////////////////////////////////////////////////////
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//THE SOFTWARE.
///////////////////////////////////////////////////////////////////////////////////////
// ----------------------------------------------------------------
// S E T T I N G S
// ----------------------------------------------------------------
#define SW1 2
#define SW2 3
#define BOMBA 4
#define VALVULA 5
#define DELAY 200
boolean b_BOMBA;
boolean b_SW1=0;
boolean b_SW2=0;
boolean b_VALVULA2;
// ----------------------------------------------------------------
// F U N C T I O N S
// ----------------------------------------------------------------
void bombear() {
Serial.println("BOMBEANDO DESDE TANQUE DE LLUVIAS");
// Inicializamos la bomba = ON y la valvula =OFF
digitalWrite(BOMBA,HIGH);
digitalWrite(VALVULA,LOW);
while (b_SW1==HIGH) { // Tanque de lluvias lleno
b_SW1 = digitalRead(SW1);
delay(DELAY);
}
Serial.println("ELECTROBOMBA APAGADA");
digitalWrite(BOMBA,LOW);
} //cierra bombear
void acueducto() {
Serial.println("ABIERTA VALVULA DE ACUEDUCTO");
// Inicializamos la bomba = OFF y la valvula =ON
digitalWrite(BOMBA,LOW);
digitalWrite(VALVULA,HIGH);
while (b_SW1==LOW) { // Tanque de lluvias vacio
b_SW1 = digitalRead(SW1);
delay(DELAY);
}
Serial.println("VALVULA CERRADA");
digitalWrite(VALVULA,LOW);
}// cierra Acueducto
void stop() {
// (PARAR)
digitalWrite(BOMBA,LOW);
digitalWrite(VALVULA,LOW);
b_SW2 = digitalRead(SW2);
while (b_SW2==LOW && (b_SW1==LOW || b_SW1==HIGH)){ // Tanque de lluvias vacio
b_SW2 = digitalRead(SW2);
Serial.println("TANQUE LLENO");
}
} // cierra STOP
// ----------------------------------------------------------------
// S E T U P
// ----------------------------------------------------------------
void setup()
{
Serial.begin(115200);
pinMode(SW1, INPUT); //MicroSwitch inferior
pinMode(SW2, INPUT); //MicroSwitch superior
pinMode(BOMBA, OUTPUT);
pinMode(VALVULA, OUTPUT);
//attachInterrupt(digitalPinToInterrupt(SW2), stop, CHANGE); // de alto a bajo
//attachInterrupt(digitalPinToInterrupt(SW2), stop, FALLING); // de alto a bajo
attachInterrupt(digitalPinToInterrupt(SW2), stop, LOW);// bajo
//attachInterrupt(digitalPinToInterrupt(SW2), salir, RISING);// de bajo a alto
}
// ----------------------------------------------------------------
// L O O P
// ----------------------------------------------------------------
void loop()
{
b_SW2 = digitalRead(SW2);
b_SW1 = digitalRead(SW1);
if ((b_SW1==HIGH)&&(b_SW2==HIGH)) { // Tanque de lluvias lleno
bombear();
}else if ((b_SW1==LOW)&&(b_SW2==HIGH)){ // Tanque de lluvias vacio
acueducto();
}else if ((b_SW2==LOW)){
//stop();
}
}