Stap 6: Arduino deel
U kunt bewerken het blazen tijd (pumpTimeron) en opnieuw opstarten (pumpTimeroff).
In mijn codering bedraagt de standaardtijd:
pumpTimeron: 1 minuut
pumpTimeroff: 15 minuten
Codering deel: (de RTC-timer is van Adafruit)
Datum- en tijdfuncties, met behulp van een RTC DS1307 aangesloten via
I2C en draad-lib
#include
#include "RTClib.h"
RTC_DS1307 de rtc;
niet-ondertekende lange timer;
unsigned long pumpTimeOn = 60000; 1 min in milliseconden
unsigned long pumpTimeOff = 900000; 15 min in milliseconden
Boole pumpState = 1; 1 = pomp op, 0 = pomp uit
int pumpPin = 7; / / pin die de pomp in- en uitschakelen draait
void setup () {}
Serial.begin(57600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); Schild I2C pinnen verbinden met alt I2C bus op Arduino Due
#endif
RTC.begin();
Als (! rtc.isrunning()) {}
Serial.println ("RTC is NOT running!");
de RTC gevolgd ingesteld op de datum en tijd die deze schets werd samengesteld
RTC.adjust(datetime(2014,12,16,12,52,0));
Met deze regel wordt de RTC met een expliciete datum & tijd, bijvoorbeeld om in te stellen
Januari 21, 2014 op 3 am die You 'd call:
RTC.adjust (DateTime (2014, 1, 21, 3, 0, 0));
}
pomp pincode instellen om te uitgang
pinMode (pumpPin, OUTPUT);
initialiseren timer
timer = millis(); de timer ingesteld op de huidige millis telling
}
void loop () {}
if(pumpState == 1) {}
digitalWrite (pumpPin, hoge);
unsigned long currentMillis = millis (); //read de huidige millis tellen
Als (currentMillis > = (timer + pumpTimeOn)) {//if de huidige millis is groter dan de timer en de pomp op limiet... dan
pumpState = 0; //change de pumpState op off
Serial.println ("de pomp is nu uitgeschakeld op dit moment:");
printCurrentTime();
timer = millis(); opnieuw instellen van de timer
}
}
if(pumpState == 0) {}
digitalWrite (pumpPin, laag);
unsigned long currentMillis = millis (); //read de huidige millis tellen
Als (currentMillis > = (timer + pumpTimeOff)) {//if de huidige millis is groter dan de timer en de pomp uit limiet... dan
pumpState = 1; //change de pumpState om op
Serial.println ("de pomp brandt nu op dit moment:");
printCurrentTime();
timer = millis(); opnieuw instellen van de timer
}
}
delay(3000);
}
ongeldig printCurrentTime() {}
DateTime nu = 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 ("sinds middernacht 1/1/1970 =");
Serial.Print(Now.unixtime());
Serial.Print ("s =");
Serial.Print(Now.unixtime() / 86400 L);
Serial.println("d");
berekenen van een datum die 7 dagen en 30 seconden in de toekomst is
DateTime toekomst (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();
}