Re uppblåsbar väst (6 / 6 steg)
Steg 6: Arduino del
Du kan redigera den uppblåsning tid (pumpTimeron) och starta om tid (pumpTimeroff).
I min kodning är grundinställningen:
pumpTimeron: 1 minut
pumpTimeroff: 15 minuter
Kodande delen: (RTC timern är från Adafruit)
Datum- och tidsfunktioner använder en DS1307 RTC ansluten via
I2C och tråd-lib
#include
#include "RTClib.h"
RTC_DS1307 rtc;
osignerade långa timer;
osignerade långa pumpTimeOn = 60000; 1 min i millisekunder
osignerade långa pumpTimeOff = 900000; 15 min i millisekunder
booleska pumpState = 1; 1 = pumpen på, 0 = pump av
int pumpPin = 7; / / PIN-kod som slår pumpen på och av
Ogiltiga inställningar () {
Serial.BEGIN(57600);
#ifdef AVR
Wire.BEGIN();
#else
Wire1.BEGIN(); Shield I2C stift ansluter till alt I2C bussen på Arduino vederbörlig
#endif
RTC.BEGIN();
om (! rtc.isrunning()) {
Serial.println ("RTC körs inte!");
följande rad anger RTC till datum & tid denna skiss sammanställdes
RTC.ADJUST(datetime(2014,12,16,12,52,0));
Raden anger RTC med en explicit datum & tid, till exempel att ställa in
21 januari 2014 kl 3 vill du ringa:
RTC.ADJUST (DateTime (2014, 1, 21, 3, 0, 0));
}
ställa in pumpen stift till utgång
pinMode (pumpPin, produktionen);
initialisera timer
timer = millis(); ställa in timern till nuvarande millis räkningen
}
Ogiltig loop () {
IF(pumpState == 1) {
digitalWrite (pumpPin, hög);
osignerade långa currentMillis = millis (); //read de nuvarande millis räkna
om (currentMillis > = (timer + pumpTimeOn)) {//if den nuvarande millis är större än timern och pumpen på gränsen... sedan
pumpState = 0; //change pumpState off
Serial.println ("pumpen är nu avstängd vid den här tiden:");
printCurrentTime();
timer = millis(); nollställa timern
}
}
IF(pumpState == 0) {
digitalWrite (pumpPin, låg);
osignerade långa currentMillis = millis (); //read de nuvarande millis räkna
om (currentMillis > = (timer + pumpTimeOff)) {//if den nuvarande millis är större än timern och pumpen utanför gränsen... sedan
pumpState = 1; //change pumpState till på
Serial.println ("pumpen är nu på vid den här tiden:");
printCurrentTime();
timer = millis(); nollställa timern
}
}
Delay(3000);
}
void 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 ("sedan midnatt 1970/1/1 =");
Serial.Print(Now.unixtime());
Serial.Print ("s =");
Serial.Print(Now.unixtime() / 86400 L);
Serial.println("d");
beräkna ett datum som är 7 dagar och 30 sekunder in i framtiden
DateTime framtid (now.unixtime() + 7 * 86400 L + 30);
Serial.Print ("nu");
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();
}