diff --git a/script.ino b/script.ino index 87d9dfe..690a4c1 100644 --- a/script.ino +++ b/script.ino @@ -1,10 +1,3 @@ -/* - ASPECTOS PARA VER: - -usar LastDay en EEPROM ADDRESS 2, con el fin de hacer los reinicios por dia, - ya pude hacerlo con lo del volumen, esto es tarea facil. -*/ - -//Librerias a utilizar #include #include #include @@ -15,10 +8,8 @@ #include #include -RTC_DS1307 rtc; //defino el RTC +RTC_DS1307 rtc; - -//Definimos variables int electro_in1 = 12; int electro_in2 = 11; @@ -35,25 +26,19 @@ float volumen; float volumenMaximo = 0.5; bool flag = false; -int state = HIGH; // estado actual del pin de salida -int reading; // lectura actual del input pin -int previous = LOW; // lectura anterior del input pin +int state = HIGH; +int reading; +int previous = LOW; -int lastDay; +int lastDay; int eeAddress = 0; int EE_ADDR2 = 1; - -//del caudalimetro -void pulseCounter() -{ +void pulseCounter() { pulseCount++; } - - -//de memoria eeprom void flash() { if (analogRead(A1) < 920) { @@ -69,15 +54,12 @@ void flash() { digitalWrite(electro_in1, HIGH); digitalWrite(electro_in2, HIGH); - EEPROM.put(eeAddress, volumen); // del volumen - //EEPROM.put(EE_ADDR2, lastDay); // del dia + EEPROM.put(eeAddress, volumen); + //EEPROM.put(EE_ADDR2, lastDay); } } - - void setup() { - Serial.begin(9600); pinMode(electro_in1, OUTPUT); @@ -86,43 +68,30 @@ void setup() { digitalWrite(electro_in2, HIGH); pinMode(sensorPin, INPUT); - pinMode(pulsadorPin, INPUT); // pulsador entre pin 3 y GND. - - pulseCount = 0; - flowRate = 0.0; - oldTime = 0; + pinMode(pulsadorPin, INPUT); + pulseCount = 0; + flowRate = 0.0; + oldTime = 0; attachInterrupt(sensorInterrupt, pulseCounter, FALLING); - - //del eeprom EEPROM.get(eeAddress, volumen); - MsTimer2::set(10, flash); //hermoso timer + MsTimer2::set(10, flash); MsTimer2::start(); - Serial.print("Litros iniciales: "); //al final no lo termine utilizando - Serial.print(volumen); + Serial.print("Litros iniciales: "); + Serial.print(volumen); pinMode(13, OUTPUT); digitalWrite(13, LOW); - //del reloj //EEPROM.get(EE_ADDR, lastDay); - - } void loop() { - - - /* - Todavia no pude arreglar el tema del BOUNCE SWITCH, ver esto, la unica posiblidad a considerar - no es usando un timer sino haciendolo de manera fisica. - */ - - reading = digitalRead(pulsadorPin); //para hacer que el boton actue como un "switch" + reading = digitalRead(pulsadorPin); if (reading == HIGH && previous == LOW) { delay(500); @@ -134,37 +103,28 @@ void loop() { previous = reading; - //caudalimetro if (volumen < volumenMaximo && state == LOW) - if ((millis() - oldTime) > 1000) { // Un contador por segundo, utilizando millis + if ((millis() - oldTime) > 1000) { detachInterrupt(sensorInterrupt); flowRate = (((1000.0) / (millis() - oldTime)) * pulseCount) / calibrationFactor; - - // Llevarlo al total volumen += flowRate / 60; - // unsigned int frac; Serial.print (volumen, 3); Serial.println (" L"); - // Reseteamos para volver a empezar pulseCount = 0; - // Habilitamos la interrupciĆ³n attachInterrupt(sensorInterrupt, pulseCounter, FALLING); oldTime = millis(); - flag = true; //esto me tengo que fijar, porque ahora anda pero no se si es lo mas conveniente. + flag = true; } - if (volumen >= volumenMaximo ) { flag = false; } - - //encendido o apagado de electrovalvula if (flag == true && state == LOW) { digitalWrite(electro_in1, LOW); digitalWrite(electro_in2, LOW); @@ -175,10 +135,6 @@ void loop() { digitalWrite(electro_in2, HIGH); } - - - - //reloj, reinicio de volumen cada dia /* DateTime now; if (now.day() != lastDay) // this happens exactly once a day.