Étape 6: Partie d’Arduino
Vous pouvez modifier le temps de gonflage (pumpTimeron) et redémarrer de temps (pumpTimeroff).
Dans mon code, le délai par défaut est :
pumpTimeron: 1 minute
pumpTimeroff : 15 minutes
Codage partie: (timer RTC est de Adafruit)
Fonctions de date et d’heure à l’aide d’un RTC DS1307 connecté via
I2C et le fil lib
#include
#include « RTClib.h »
RTC_DS1307 CCF ;
unsigned long minuterie ;
unsigned long pumpTimeOn = 60000 ; 1 min en millisecondes
unsigned long pumpTimeOff = 900000 ; 15 min en millisecondes
Boolean pumpState = 1 ; 1 = pompe on, 0 = pompe off
int pumpPin = 7; / / NIP qui active ou désactive la pompe
annuler le programme d’installation () {}
Serial.Begin(57600) ;
#ifdef AVR
Wire.Begin() ;
#else
Wire1.Begin() ; Bouclier I2C broches connect Alt bus I2C sur Arduino Due
#endif
RTC.Begin() ;
Si (! rtc.isrunning()) {}
Serial.println ("RTC n'est pas running!") ;
suivant ligne définit le CCF à la date et l’heure de que cette esquisse a été compilée
RTC.Adjust(DateTime(2014,12,16,12,52,0)) ;
Cette ligne définit le CCF avec un explicite date et l’heure, par exemple pour définir
Vous appelleriez 21 janvier 2014 à 03:00 :
RTC.Adjust (DateTime (2014, 1, 21, 3, 0, 0)) ;
}
broche de sortie la valeur
pinMode (pumpPin, sortie) ;
minuterie d’initialiser
Timer = millis() ; Réglez le minuteur sur le nombre actuel de millis
}
void loop () {}
if(pumpState == 1) {}
digitalWrite (pumpPin, HIGH) ;
unsigned long currentMillis = millis (); //read compter les millis actuels
Si (currentMillis > = (minuterie + pumpTimeOn)) {//if les millis actuel est supérieur à la minuterie et la pompe sur limite... puis
pumpState = 0; //change la pumpState OFF
Serial.println ("la pompe est maintenant éteinte en ce moment:") ;
printCurrentTime() ;
Timer = millis() ; réinitialiser la minuterie
}
}
if(pumpState == 0) {}
digitalWrite (pumpPin, basse) ;
unsigned long currentMillis = millis (); //read compter les millis actuels
Si (currentMillis > = (minuterie + pumpTimeOff)) {//if les millis actuel est supérieur à la minuterie et la pompe hors limite... puis
pumpState = 1; //change la pumpState on
Serial.println ("la pompe tourne maintenant à cette fois:") ;
printCurrentTime() ;
Timer = millis() ; réinitialiser la minuterie
}
}
Delay(3000) ;
}
void printCurrentTime() {}
DateTime maintenant = 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 ("depuis minuit 01/01/1970 =") ;
Serial.Print(Now.unixtime()) ;
Serial.Print ("s =") ;
Serial.Print(Now.unixtime() / 86400 L) ;
Serial.println("d") ;
calculer une date qui est de 7 jours et 30 secondes dans le futur
Avenir de DateTime (now.unixtime() + 7 * 86400 L + 30) ;
Serial.Print ("now") ;
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() ;
}