Schritt 6: Arduino Teil
Dann bearbeiten die aufblasende Zeit (PumpTimeron) und Zeit (PumpTimeroff) starten.
In meiner Programmierung ist die Standardzeit:
PumpTimeron: 1 Minute
PumpTimeroff: 15 Minuten
Codierung Teil: (RTC-Timer ist von Adafruit)
Datums- und Zeitfunktionen mithilfe einer DS1307 RTC angeschlossen
I2C und Draht lib
#include
#include "RTClib.h"
RTC_DS1307 Rtc;
unsigned long Timer;
unsigned long PumpTimeOn = 60000; 1 min in Millisekunden
unsigned long PumpTimeOff = 900000; 15 min in Millisekunden
Boolesche PumpState = 1; 1 = Pumpe auf 0 = Pumpe aus
Int PumpPin = 7; / / Pin, die die Pumpe ein- und ausgeschaltet wird
void Setup () {}
Serial.Begin(57600);
#ifdef AVR
Wire.Begin();
#else
Wire1.Begin(); Schild-I2C-Pins verbinden mit Alt I2C Bus auf Arduino
#endif
RTC.Begin();
Wenn (! rtc.isrunning()) {}
Serial.println ("RTC läuft nicht!");
folgende Zeile setzt die RTC auf der Datum und Uhrzeit, die diese Skizze kompiliert wurde
RTC.Adjust(DateTime(2014,12,16,12,52,0));
Diese Linie stellt die RTC mit einem expliziten Datum & Zeit, zum Beispiel festlegen
21. Januar 2014 auf 03:00 würde Sie anrufen:
RTC.Adjust (DateTime (2014, 21, 3, 0, 1, 0));
}
Stellen Sie Pumpe Pin ausgeben
PinMode (PumpPin, Ausgang);
Initalize timer
Timer = millis(); Stellen Sie den Timer auf die Anzahl der aktuellen millis
}
leere Schleife () {}
If(pumpState == 1) {}
DigitalWrite (PumpPin, HIGH);
unsigned long CurrentMillis = Millis (); //read der aktuellen Millis zählen
Wenn (CurrentMillis > = (Timer + PumpTimeOn)) {//if die aktuelle Millis ist größer als der Timer und die Pumpe am Limit... dann
PumpState = 0; //change PumpState auf off
Serial.println ("die Pumpe ist nun ab diesem Zeitpunkt:");
printCurrentTime();
Timer = millis(); Timer zurücksetzen
}
}
If(pumpState == 0) {}
DigitalWrite (PumpPin, LOW);
unsigned long CurrentMillis = Millis (); //read der aktuellen Millis zählen
Wenn (CurrentMillis > = (Timer + PumpTimeOff)) {//if die aktuelle Millis ist größer als der Timer und die Pumpe ab Grenze... dann
PumpState = 1; //change der PumpState auf
Serial.println ("die Pumpe ist nun auf zu diesem Zeitpunkt:");
printCurrentTime();
Timer = millis(); Timer zurücksetzen
}
}
Delay(3000);
}
void printCurrentTime() {}
DateTime jetzt = 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 ("seit Mitternacht 01.01.1970 =");
Serial.Print(now.Unixtime());
Serial.Print ("s =");
Serial.Print(now.Unixtime() / 86400 L);
Serial.println("d");
ein Datum, das 7 Tage und 30 Sekunden in die Zukunft ist zu berechnen
DateTime Zukunft (now.unixtime() + L + 30 7 * 86400);
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();
}