És elkészült az időzítő lib is!
Ezt is ugyanúgy kell telepíteni, ahogy a többi library-t. A működéséhez szükség lesz az Adafruit féle RTClib-re is, ez segít az óra modullal való kommunikációban, ezt is mellékelem. Megírtam a példákat DS1307-re és DS3231-re is, az examples könyvtárban találjátok.
Először egy nagyon egyszerű példát mutatnék, pl: fénycsöves világítás ki-be kapcsolásához (ahol nem kell dimmelni), DS3231-el:
Kód beillesztése:
#include <RTClib.h>
// Itt mondjuk meg neki, hogy milyen órát használjon, ezt még a timer #include-ja előtt meg kell tenni!
#define WITH_DS3231
#include <AquaTimer.h>
// A pin száma ami pl. a reléhez megy
const int LIGHTS_PIN = 6;
// Ez nagyon fontos, hogy pontosan 'rtc' nevű változó kell a timernek, hogy be tudja olvasni az időt
RTC_DS3231 rtc;
// Itt definiáljuk a timer objektumot, a paraméterek: PIN száma, bekapcs, kikapcs
// Fontos, hogy String-ben kell megadni a be és kikapcsolási időket, és az órákat is ki kell egészíteni 2 számjegyre,
// vagyis "6:00" nem jó, hanem "06:00" kell! - De ki akarna olyan korán világítani? :)
AquaTimer LedTimer(LIGHTS_PIN, "14:00", "22:00");
void setup() {
// Óra modul indítása
rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
// ez a sor pedig kiírja a megadott pinre az adott időnek megfelelő értéket
LedTimer.write();
}
Itt pedig egy példa 3 tápadagoló időzítéséhez. A kimenetek (6,7,8) relékkel, vagy mosfetekkel vezérlik a pumpák motorjait. A hardveres részt itt nem részletezném, a lényeg inkább a kód:
Kód beillesztése:
#include <RTClib.h>
#define WITH_DS3231
#include <AquaTimer.h>
RTC_DS3231 rtc;
// Ugyanaz, mint fent, csak egymás után több kimenetet kapcsolunk különböző időpontokban
// PIN, bekapcs, kikapcs
AquaTimer Micro(6, "13:40:00", "13:40:04");
AquaTimer Macro(7, "13:40:20", "13:40:24");
AquaTimer Carbo(8, "13:40:40", "13:40:44");
void setup() {
rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
// Külön-külön meg kell hívni az egyes kimenetekre a kiíratást
Micro.write();
Macro.write();
Carbo.write();
}
És végül egy kicsit komplettebb példa, ahol már van led átmenet, holdfény effekt, szűrő kikapcs, és 4 tápadagoló:
Kód beillesztése:
#include <RTClib.h>
#include <AutoSwitch.h>
#define WITH_DS3231
#include <AquaTimer.h>
RTC_DS3231 rtc;
const int LED_PIN = 6;
const int FILTER_PIN = 7;
// A világítás bekapcsoló gombja, egy óra után kikapcsolja magát
AutoSwitch LedButton(2, 3600);
// A szűrő stop etetéshez, ami 5 perc után újraindítja a szűrőt
AutoSwitch FilterStopButton(3, 300);
AquaTimer LedTimer;
AquaTimer Micro(8, "13:40:00", "13:40:04");
AquaTimer Macro(9, "13:40:20", "13:40:24");
AquaTimer Carbo(10, "13:40:40", "13:40:44");
AquaTimer Phosphate(11, "13:41:00", "13:41:04");
void setup() {
pinMode(FILTER_PIN, OUTPUT);
rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Világítás beállításai. A sok paraméter miatt metódus láncolással, hogy olvashatóbb legyen
// A LED dimmeléséhez a PWM kimenet miatt relé helyett itt egy MOSFET-re lesz szükség!
LedTimer
.setPin(LED_PIN)
.setOn("14:00") // bekapcs
.setTransition("30") // átmenet ideje percben
.setOff("22:00") // kikapcs
.setMoonDuration("60") // holfény derengés ideje percben, a kikapcs után
.setMaxVal("75%") // a teljes fényerő dimmeléséhez. Ha 100% kellene, akkor elhagyható
.setMoonVal(1); // a holfény fényereje. Itt szándékosan van int, a lehető legkisebb fényerő kedvéért
}
void loop() {
// Tápadagolók
Micro.write();
Macro.write();
Carbo.write();
Phosphate.write();
// Világítás a teljes fényerő gombbal
int buttonState = LedButton.getState();
LedTimer.write(buttonState);
// Szűrő stop - a relén a NC (Normally Closed) kimenetre érdemes kötni a szűrő konnektorát
int filterStopState = FilterStopButton.getState();
digitalWrite(FILTER_PIN, filterStopState);
}
Ez a kód egyébként csak 29%-ot használ el egy UNO memóriájából, szóval a maradék 10 szabad lábra még bőven lehet konfigurálgatni hőmérőt, kijelzőt, etető automatát, twinstart, vagy amit épp gondoltok.
Jó kódolást!
És elkészült az időzítő lib is!
Ezt is ugyanúgy kell telepíteni, ahogy a többi library-t. A működéséhez szükség lesz az Adafruit féle RTClib-re is, ez segít az óra modullal való kommunikációban, ezt is mellékelem. Megírtam a példákat DS1307-re és DS3231-re is, az examples könyvtárban találjátok.
Először egy nagyon egyszerű példát mutatnék, pl: fénycsöves világítás ki-be kapcsolásához (ahol nem kell dimmelni), DS3231-el:
Kód beillesztése:
#include <RTClib.h>
// Itt mondjuk meg neki, hogy milyen órát használjon, ezt még a timer #include-ja előtt meg kell tenni!
#define WITH_DS3231
#include <AquaTimer.h>
// A pin száma ami pl. a reléhez megy
const int LIGHTS_PIN = 6;
// Ez nagyon fontos, hogy pontosan 'rtc' nevű változó kell a timernek, hogy be tudja olvasni az időt
RTC_DS3231 rtc;
// Itt definiáljuk a timer objektumot, a paraméterek: PIN száma, bekapcs, kikapcs
// Fontos, hogy String-ben kell megadni a be és kikapcsolási időket, és az órákat is ki kell egészíteni 2 számjegyre,
// vagyis "6:00" nem jó, hanem "06:00" kell! - De ki akarna olyan korán világítani? :)
AquaTimer LedTimer(LIGHTS_PIN, "14:00", "22:00");
void setup() {
// Óra modul indítása
rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
// ez a sor pedig kiírja a megadott pinre az adott időnek megfelelő értéket
LedTimer.write();
}
Itt pedig egy példa 3 tápadagoló időzítéséhez. A kimenetek (6,7,8) relékkel, vagy mosfetekkel vezérlik a pumpák motorjait. A hardveres részt itt nem részletezném, a lényeg inkább a kód:
Kód beillesztése:
#include <RTClib.h>
#define WITH_DS3231
#include <AquaTimer.h>
RTC_DS3231 rtc;
// Ugyanaz, mint fent, csak egymás után több kimenetet kapcsolunk különböző időpontokban
// PIN, bekapcs, kikapcs
AquaTimer Micro(6, "13:40:00", "13:40:04");
AquaTimer Macro(7, "13:40:20", "13:40:24");
AquaTimer Carbo(8, "13:40:40", "13:40:44");
void setup() {
rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
// Külön-külön meg kell hívni az egyes kimenetekre a kiíratást
Micro.write();
Macro.write();
Carbo.write();
}
És végül egy kicsit komplettebb példa, ahol már van led átmenet, holdfény effekt, szűrő kikapcs, és 4 tápadagoló:
Kód beillesztése:
#include <RTClib.h>
#include <AutoSwitch.h>
#define WITH_DS3231
#include <AquaTimer.h>
RTC_DS3231 rtc;
const int LED_PIN = 6;
const int FILTER_PIN = 7;
// A világítás bekapcsoló gombja, egy óra után kikapcsolja magát
AutoSwitch LedButton(2, 3600);
// A szűrő stop etetéshez, ami 5 perc után újraindítja a szűrőt
AutoSwitch FilterStopButton(3, 300);
AquaTimer LedTimer;
AquaTimer Micro(8, "13:40:00", "13:40:04");
AquaTimer Macro(9, "13:40:20", "13:40:24");
AquaTimer Carbo(10, "13:40:40", "13:40:44");
AquaTimer Phosphate(11, "13:41:00", "13:41:04");
void setup() {
pinMode(FILTER_PIN, OUTPUT);
rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Világítás beállításai. A sok paraméter miatt metódus láncolással, hogy olvashatóbb legyen
// A LED dimmeléséhez a PWM kimenet miatt relé helyett itt egy MOSFET-re lesz szükség!
LedTimer
.setPin(LED_PIN)
.setOn("14:00") // bekapcs
.setTransition("30") // átmenet ideje percben
.setOff("22:00") // kikapcs
.setMoonDuration("60") // holfény derengés ideje percben, a kikapcs után
.setMaxVal("75%") // a teljes fényerő dimmeléséhez. Ha 100% kellene, akkor elhagyható
.setMoonVal(1); // a holfény fényereje. Itt szándékosan van int, a lehető legkisebb fényerő kedvéért
}
void loop() {
// Tápadagolók
Micro.write();
Macro.write();
Carbo.write();
Phosphate.write();
// Világítás a teljes fényerő gombbal
int buttonState = LedButton.getState();
LedTimer.write(buttonState);
// Szűrő stop - a relén a NC (Normally Closed) kimenetre érdemes kötni a szűrő konnektorát
int filterStopState = FilterStopButton.getState();
digitalWrite(FILTER_PIN, filterStopState);
}
Ez a kód egyébként csak 29%-ot használ el egy UNO memóriájából, szóval a maradék 10 szabad lábra még bőven lehet konfigurálgatni hőmérőt, kijelzőt, etető automatát, twinstart, vagy amit épp gondoltok.
Jó kódolást!
És elkészült az időzítő lib is!
Ezt is ugyanúgy kell telepíteni, ahogy a többi library-t. A működéséhez szükség lesz az Adafruit féle RTClib-re is, ez segít az óra modullal való kommunikációban, ezt is mellékelem. Megírtam a példákat DS1307-re és DS3231-re is, az examples könyvtárban találjátok.
Először egy nagyon egyszerű példát mutatnék, pl: fénycsöves világítás ki-be kapcsolásához (ahol nem kell dimmelni), DS3231-el:
Kód beillesztése:
#include <RTClib.h>
// Itt mondjuk meg neki, hogy milyen órát használjon, ezt még a timer #include-ja előtt meg kell tenni!
#define WITH_DS3231
#include <AquaTimer.h>
// A pin száma ami pl. a reléhez megy
const int LIGHTS_PIN = 6;
// Ez nagyon fontos, hogy pontosan 'rtc' nevű változó kell a timernek, hogy be tudja olvasni az időt
RTC_DS3231 rtc;
// Itt definiáljuk a timer objektumot, a paraméterek: PIN száma, bekapcs, kikapcs
// Fontos, hogy String-ben kell megadni a be és kikapcsolási időket, és az órákat is ki kell egészíteni 2 számjegyre,
// vagyis "6:00" nem jó, hanem "06:00" kell! - De ki akarna olyan korán világítani? :)
AquaTimer LedTimer(LIGHTS_PIN, "14:00", "22:00");
void setup() {
// Óra modul indítása
rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
// ez a sor pedig kiírja a megadott pinre az adott időnek megfelelő értéket
LedTimer.write();
}
Itt pedig egy példa 3 tápadagoló időzítéséhez. A kimenetek (6,7,8) relékkel, vagy mosfetekkel vezérlik a pumpák motorjait. A hardveres részt itt nem részletezném, a lényeg inkább a kód:
Kód beillesztése:
#include <RTClib.h>
#define WITH_DS3231
#include <AquaTimer.h>
RTC_DS3231 rtc;
// Ugyanaz, mint fent, csak egymás után több kimenetet kapcsolunk különböző időpontokban
// PIN, bekapcs, kikapcs
AquaTimer Micro(6, "13:40:00", "13:40:04");
AquaTimer Macro(7, "13:40:20", "13:40:24");
AquaTimer Carbo(8, "13:40:40", "13:40:44");
void setup() {
rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
// Külön-külön meg kell hívni az egyes kimenetekre a kiíratást
Micro.write();
Macro.write();
Carbo.write();
}
És végül egy kicsit komplettebb példa, ahol már van led átmenet, holdfény effekt, szűrő kikapcs, és 4 tápadagoló:
Kód beillesztése:
#include <RTClib.h>
#include <AutoSwitch.h>
#define WITH_DS3231
#include <AquaTimer.h>
RTC_DS3231 rtc;
const int LED_PIN = 6;
const int FILTER_PIN = 7;
// A világítás bekapcsoló gombja, egy óra után kikapcsolja magát
AutoSwitch LedButton(2, 3600);
// A szűrő stop etetéshez, ami 5 perc után újraindítja a szűrőt
AutoSwitch FilterStopButton(3, 300);
AquaTimer LedTimer;
AquaTimer Micro(8, "13:40:00", "13:40:04");
AquaTimer Macro(9, "13:40:20", "13:40:24");
AquaTimer Carbo(10, "13:40:40", "13:40:44");
AquaTimer Phosphate(11, "13:41:00", "13:41:04");
void setup() {
pinMode(FILTER_PIN, OUTPUT);
rtc.begin();
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Világítás beállításai. A sok paraméter miatt metódus láncolással, hogy olvashatóbb legyen
// A LED dimmeléséhez a PWM kimenet miatt relé helyett itt egy MOSFET-re lesz szükség!
LedTimer
.setPin(LED_PIN)
.setOn("14:00") // bekapcs
.setTransition("30") // átmenet ideje percben
.setOff("22:00") // kikapcs
.setMoonDuration("60") // holfény derengés ideje percben, a kikapcs után
.setMaxVal("75%") // a teljes fényerő dimmeléséhez. Ha 100% kellene, akkor elhagyható
.setMoonVal(1); // a holfény fényereje. Itt szándékosan van int, a lehető legkisebb fényerő kedvéért
}
void loop() {
// Tápadagolók
Micro.write();
Macro.write();
Carbo.write();
Phosphate.write();
// Világítás a teljes fényerő gombbal
int buttonState = LedButton.getState();
LedTimer.write(buttonState);
// Szűrő stop - a relén a NC (Normally Closed) kimenetre érdemes kötni a szűrő konnektorát
int filterStopState = FilterStopButton.getState();
digitalWrite(FILTER_PIN, filterStopState);
}
Ez a kód egyébként csak 29%-ot használ el egy UNO memóriájából, szóval a maradék 10 szabad lábra még bőven lehet konfigurálgatni hőmérőt, kijelzőt, etető automatát, twinstart, vagy amit épp gondoltok.
Jó kódolást!
Üdv,tudna valaki segíteni?
Az utolsó kódot próbálom feltölteni, de nem stimmel valami, felmegy az uno ra de nem működik, próbáltam több verzióval is.
Úgy csináltam ahogy le van írva , azokkal a csomagokkal is.
Feltöltés közben ezt dobja ki:
In file included from C:\Users\tomi\Desktop\sketch_dec25a\sketch_dec25a.ino:8:0:
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:65:10: warning: extra qualification 'AquaTimer::' on member 'write' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:67:16: warning: extra qualification 'AquaTimer::' on member 'setPin' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:69:16: warning: extra qualification 'AquaTimer::' on member 'setOn' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:71:16: warning: extra qualification 'AquaTimer::' on member 'setOn' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:73:16: warning: extra qualification 'AquaTimer::' on member 'setOff' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:75:16: warning: extra qualification 'AquaTimer::' on member 'setOff' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:77:16: warning: extra qualification 'AquaTimer::' on member 'setTransition' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:79:16: warning: extra qualification 'AquaTimer::' on member 'setTransition' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:81:16: warning: extra qualification 'AquaTimer::' on member 'setMoonDuration' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:83:16: warning: extra qualification 'AquaTimer::' on member 'setMoonDuration' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:85:16: warning: extra qualification 'AquaTimer::' on member 'setMaxVal' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:87:16: warning: extra qualification 'AquaTimer::' on member 'setMaxVal' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:89:16: warning: extra qualification 'AquaTimer::' on member 'setMoonVal' [-fpermissive]
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer/AquaTimer.h:91:16: warning: extra qualification 'AquaTimer::' on member 'setMoonVal' [-fpermissive]
In file included from C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.cpp:9:0:
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:39:10: warning: extra qualification 'AquaTimer::' on member 'write' [-fpermissive]
void AquaTimer::write(bool override = false);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:40:16: warning: extra qualification 'AquaTimer::' on member 'setPin' [-fpermissive]
AquaTimer& AquaTimer::setPin(int pin);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:41:16: warning: extra qualification 'AquaTimer::' on member 'setOn' [-fpermissive]
AquaTimer& AquaTimer::setOn(long on);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:42:16: warning: extra qualification 'AquaTimer::' on member 'setOn' [-fpermissive]
AquaTimer& AquaTimer::setOn(String on);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:43:16: warning: extra qualification 'AquaTimer::' on member 'setOff' [-fpermissive]
AquaTimer& AquaTimer::setOff(long off);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:44:16: warning: extra qualification 'AquaTimer::' on member 'setOff' [-fpermissive]
AquaTimer& AquaTimer::setOff(String off);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:45:16: warning: extra qualification 'AquaTimer::' on member 'setTransition' [-fpermissive]
AquaTimer& AquaTimer::setTransition(int transition);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:46:16: warning: extra qualification 'AquaTimer::' on member 'setTransition' [-fpermissive]
AquaTimer& AquaTimer::setTransition(String transition);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:47:16: warning: extra qualification 'AquaTimer::' on member 'setMoonDuration' [-fpermissive]
AquaTimer& AquaTimer::setMoonDuration(int dur);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:48:16: warning: extra qualification 'AquaTimer::' on member 'setMoonDuration' [-fpermissive]
AquaTimer& AquaTimer::setMoonDuration(String dur);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:49:16: warning: extra qualification 'AquaTimer::' on member 'setMaxVal' [-fpermissive]
AquaTimer& AquaTimer::setMaxVal(int maxVal);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:50:16: warning: extra qualification 'AquaTimer::' on member 'setMaxVal' [-fpermissive]
AquaTimer& AquaTimer::setMaxVal(String maxVal);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:51:16: warning: extra qualification 'AquaTimer::' on member 'setMoonVal' [-fpermissive]
AquaTimer& AquaTimer::setMoonVal(int moonVal);
^
C:\Users\tomi\Documents\Arduino\libraries\AquaTimer\AquaTimer.h:52:16: warning: extra qualification 'AquaTimer::' on member 'setMoonVal' [-fpermissive]
AquaTimer& AquaTimer::setMoonVal(String moonVal);
^
Vázlat használ 9588 bájt (29%) -ot a program tárhelyből. A maximum 32256 bájt.
A globális változók 457 bájt (22%)-ot használnak a dinamikus memóriából, 1591 bájtot hagyva a helyi változóknak. A maximum 2048 bájt.