Paso 6: Parte de Arduino
Puede editar el tiempo de inflado (pumpTimeron) y reiniciar el tiempo (pumpTimeroff).
En mi código, el tiempo predeterminado es:
pumpTimeron: 1 minuto
pumpTimeroff: 15 minutos
Parte de la codificación: (el temporizador de la RTC es de Adafruit)
Funciones de fecha y hora utilizando un RTC DS1307 conectado a través de
Lib I2C y alambre
#include
#include "RTClib.h"
Rtc RTC_DS1307;
contador de tiempo largo sin firmar;
pumpTimeOn largo sin signo = 60000; 1 minuto en milisegundos
pumpTimeOff largo sin signo = 900000; 15 min en milisegundos
Boolean pumpState = 1; 1 = bomba de encendido, 0 = bomba de
int pumpPin = 7; / / perno que enciende y apaga la bomba
void setup () {}
Serial.Begin(57600);
#ifdef AVR
Wire.Begin();
#else
Wire1.Begin(); Escudo I2C pines conectan a alt bus I2C en Arduino debido
#endif
RTC.Begin();
Si (! {rtc.isrunning())}
Serial.println ("RTC no corre!");
línea establece el RTC en la fecha y hora que este sketch fue compilado
RTC.ADJUST(DateTime(2014,12,16,12,52,0));
Esta línea establece el RTC con un explícito fecha y hora, por ejemplo, para establecer
21 de enero de 2014 a las 3:00 que llamaría:
RTC.ADJUST (DateTime (2014, 1, 21, 3, 0, 0));
}
configurar pin de bomba a la salida
pinMode (pumpPin, salida);
temporizador de initalize
temporizador = millis(); Ajuste el temporizador a la cuenta corriente de millis
}
void loop () {}
if(pumpState == 1) {}
digitalWrite (pumpPin, HIGH);
unsigned currentMillis largo = millis (); //read las millis actuales cuenta
Si (currentMillis > = (temporizador + pumpTimeOn)) {//if millis actual es mayor que el temporizador y la bomba en el límite... entonces
pumpState = 0; //change el pumpState en off
Serial.println ("la bomba está ahora apagado en este momento:");
printCurrentTime();
temporizador = millis(); restablecer el temporizador de
}
}
if(pumpState == 0) {}
digitalWrite (pumpPin, bajo);
unsigned currentMillis largo = millis (); //read las millis actuales cuenta
Si (currentMillis > = (temporizador + pumpTimeOff)) {//if millis actual es mayor que el temporizador y la bomba límite... entonces
pumpState = 1; //change la pumpState on
Serial.println ("la bomba está ahora en este momento:");
printCurrentTime();
temporizador = millis(); restablecer el temporizador de
}
}
Delay(3000);
}
void printCurrentTime() {}
Fecha y hora = ahora rtc.now();
Serial.Print(Now.Year(), DEC);
Serial.Print('/');
Serial.Print(Now.month(), DEC);
Serial.Print('/');
Serial.Print(Now.Day(), DEC);
Serial.Print(' ');
Serial.Print(Now.hour(), DEC);
Serial.Print(':');
Serial.Print(Now.minute(), DEC);
Serial.Print(':');
Serial.Print(Now.Second(), DEC);
Serial.println();
Serial.Print ("desde la medianoche 01/01/1970 =");
Serial.Print(Now.unixtime());
Serial.Print ("s =");
Serial.Print(Now.unixtime() / 86400 L);
Serial.println("d");
calcular una fecha que es de 7 días y 30 segundos en el futuro
Futuro de DateTime (now.unixtime() + 7 * 86400 L + 30);
Serial.Print ("ahora");
Serial.Print(Future.Year(), DEC);
Serial.Print('/');
Serial.Print(Future.month(), DEC);
Serial.Print('/');
Serial.Print(Future.Day(), DEC);
Serial.Print(' ');
Serial.Print(Future.hour(), DEC);
Serial.Print(':');
Serial.Print(Future.minute(), DEC);
Serial.Print(':');
Serial.Print(Future.Second(), DEC);
Serial.println();
Serial.println();
}