Stap 3: Timing & code
Zodra u hebt de hardware arduino, RTC circuit, (relay driver, indien nodig) en een relais in plaats bent u klaar, met uitzondering van de definitieve bits voor de codering. We moeten Arduino vertellen op welk tijdstip om te beginnen met de estafette en voor hoe lang. Ik vind de Arduino Cron bibliotheek meest geschikt voor dit doel. Gewoon downloaden van het zip-bestand en unzip het in de map library voor Arduino-pakket. Zodra u de bibliotheek hebt om erachter te komen hoe u wilt configureren uw drenken cyclus.
Als u hebben uitgerekend hoeveel tijd het neemt om uw emmer leeg en als je hoeveel emmers moet u water u kunt doen de wiskunde weet om erachter out hoeveel hoeveelheid tijd u wilt uw pomp worden aangedreven (aantal emmers * tijd om een emmer leeg). Bovendien kunt u kiezen of water in één keer of een geplande het gedurende de dag. Dus stel dat 180 sec duurt om een emmer leeg en 2 emmer de totale hoeveelheid water is die ik wil leveren aan mijn tuin, dan heb ik de pomp voor 360 sec rijden. Ik wil verder distribueren van dit water niet in één keer maar in de periode van 24 uur. In dat geval mijn code zou er als volgt uitzien:
//THIS IS JUST AN EXAMPLE CODE // Do not remove the include below #include "Wire.h" #include "RTClib.h" #include "SwitchOnCommand.h" #include "TimedCommand.h" #include "Cron.h" #include "SwitchOffCommand.h" // I have made the trivial changes in the Switch*Command.h files to prevent them from // writing on Serial Console. // create objects for each command SwitchOnCommand sonCommand; SwitchOffCommand sOffCommand; // I am using pin "9" for relay driver. // The cron command has following sequence : sec.min.hr.day.Mon.year, command, pin // '*' means 'every': which means 10,*,*,*,*,* means 10th second of every minute of // every hour of every day of every month of every year. TimedCommand command1("00.00.00.*.*.*",&sonCommand,"9"); // Turn on the pin 9 at 12AM everyday TimedCommand command2("20.00.00.*.*.*",&sOffCommand,"9");// Turn it off at 12:00:20, everyday TimedCommand command3("00.00.03.*.*.*",&sonCommand,"9");// 3AM in the night for 20 sec TimedCommand command4("20.00.03.*.*.*",&sOffCommand,"9"); TimedCommand command5("00.00.06.*.*.*",&sonCommand,"9"); // 6 AM for 20 sec TimedCommand command6("20.00.06.*.*.*",&sOffCommand,"9"); TimedCommand command7("00.00.08.*.*.*",&sonCommand,"9"); //8 AM for 60 sec TimedCommand command8("60.00.08.*.*.*",&sOffCommand,"9"); TimedCommand command9("00.00.10.*.*.*",&sonCommand,"9"); //10 AM for 30 sec TimedCommand command10("30.00.10.*.*.*",&sOffCommand,"9"); TimedCommand command11("00.00.12.*.*.*",&sonCommand,"9"); TimedCommand command12("30.00.12.*.*.*",&sOffCommand,"9"); TimedCommand command13("00.00.14.*.*.*",&sonCommand,"9"); TimedCommand command14("60.00.14.*.*.*",&sOffCommand,"9"); TimedCommand command15("00.00.16.*.*.*",&sonCommand,"9"); TimedCommand command16("20.00.16.*.*.*",&sOffCommand,"9"); TimedCommand command17("00.00.18.*.*.*",&sonCommand,"9"); TimedCommand command18("60.00.18.*.*.*",&sOffCommand,"9"); TimedCommand command19("00.00.21.*.*.*",&sonCommand,"9"); TimedCommand command20("40.00.21.*.*.*",&sOffCommand,"9"); // create an array of timed commands TimedCommand *tCommands[] = { &command1, &command2, &command3, &command4, &command5, &command6, &command7, &command8, &command9, &command10, &command11, &command12, &command13, &command14, &command15, &command16, &command17, &command18, &command19, &command20 }; // create a cron object and pass it the array of timed commands // and the count of timed commands Cron cron(tCommands,20 ); void setup() { //Serial.begin(9600); // In case you want to see the serial output //Serial.println("Starting ArduinoCronLibrary Example"); // sets the time to be the date and time of the compilation // cron.setTime(DateTime(__DATE__, __TIME__)); pinMode(8, OUTPUT); digitalWrite(8, LOW); // I am using pin 8 for Relay ground. } // The loop function is called in an endless loop void loop() { // the loop function checks if a timed command // is due to be executed and executes if it is cron.loop(); }
Zodra u de code die u klaar bent uploaden. Uw pomp zal het volgen van de cyclus die je hebt geprogrammeerd.
Wees voorzichtig met het opereren van de slag bij hoogspanning.
Als deze tutorial helpt, laat het me weten!
Cheers!