Page 1 of 1
Auto Feed routine
Posted: Fri Jan 16, 2015 12:14 pm
by Spotted
Ok, so is there any way to get the system to kick into feeding mode and then trigger an automatic feeder? I understand we can hack a couple of different auto feeding systems to work with a wall wart to trigger it, but is there any way to trigger feed mode a couple minutes before triggering the feeder?
Re: Auto Feed routine
Posted: Fri Jan 16, 2015 1:26 pm
by Spotted
Or alternately, if I add in this line, and coordinate it with an auto fish feeder will that work too?
Code: Select all
if ((now()%SECS_PER_DAY==64800)) //if it is 6 pm
{
ReefAngel.FeedingModeStart(); //START FEEDING MODE
}
Do I need an esle statement for if it is not 6PM?
Re: Auto Feed routine
Posted: Fri Jan 16, 2015 3:01 pm
by lnevo
Nope. That will trigger the feeding mode to start at 6. You'll need to add a second one when you want to trigger the relay for your auto-feeder. That would should have an else to make sure the relay turns off.
Re: Auto Feed routine
Posted: Sat Jan 17, 2015 5:12 am
by Spotted
Well yes that was the basic idea, to get my RA to go into feed mode. Then the auto feed wohld start a minute or 2 later, but manuall on its own, not through my RA. Im on a time crunch and wont have enough time to mod the feeder before I leave. So I figure automate what I could, use the feeder as is and have it feed 2 minutes after feed mode starts in my RA.
Re: Auto Feed routine
Posted: Sat Jan 17, 2015 6:37 am
by lnevo
Either way
But sounds like you have the jist of it.
Re: Auto Feed routine
Posted: Mon Jan 19, 2015 7:27 am
by Spotted
Code: Select all
if ((now()%SECS_PER_DAY==64800)) //if it is 6 pm
{ReefAngel.FeedingModeStart(); //START FEEDING MODE}
I'm trying to understand what is going on here. Let me know if I'm on the right track.
The first line checks to see if the time is 6PM. If it is then executes the commands in the brackets. Right?
If I add a second time of day will this work too?
Code: Select all
if ((now()%SECS_PER_DAY==28800)) //if it is 8 AM
{ReefAngel.FeedingModeStart(); //START FEEDING MODE}
if ((now()%SECS_PER_DAY==64800)) //if it is 6 PM
{ReefAngel.FeedingModeStart(); //START FEEDING MODE}
If I got this the code should kick my RA into feed mode at 8AM and 6PM.
Is that right? This should go into the loop section of the sketch also, right?
Re: Auto Feed routine
Posted: Mon Jan 19, 2015 9:02 am
by rimai
Yeap, you got it
Re: Auto Feed routine
Posted: Mon Jan 19, 2015 9:22 am
by Spotted
YAY!! So this should work and it is in the right spot?
Code: Select all
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_NokiaLCD.h>
#include <RA_ATO.h>
#include <RA_Joystick.h>
#include <LED.h>
#include <RA_TempSensor.h>
#include <Relay.h>
#include <RA_PWM.h>
#include <Timer.h>
#include <Memory.h>
#include <InternalEEPROM.h>
#include <RA_Colors.h>
#include <RA_CustomColors.h>
#include <Salinity.h>
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <Humidity.h>
#include <DCPump.h>
#include <ReefAngel.h>
////// Place global variable code below here
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.FeedingModePortsE[0] = Port1Bit | Port2Bit | Port3Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.WaterChangePortsE[0] = Port1Bit | Port2Bit | Port3Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = Port2Bit | Port4Bit;
ReefAngel.LightsOnPortsE[0] = Port7Bit | Port8Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port3Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.OverheatShutoffPortsE[0] = Port1Bit | Port2Bit | Port7Bit;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 815 );
// Ports that are always on
ReefAngel.Relay.On( Port3 );
ReefAngel.Relay.On( Box1_Port2 );
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.SingleATO( true,Port1,120,10 );
ReefAngel.StandardLights( Port2,19,0,7,0 );
ReefAngel.StandardLights( Port4,10,0,20,0 );
ReefAngel.StandardLights( Port5,6,0,22,0 );
ReefAngel.StandardHeater( Port6,780,805 );
ReefAngel.Relay.DelayedOn( Port7,5 );
ReefAngel.Relay.DelayedOn( Port8,3 );
ReefAngel.DosingPumpRepeat( Box1_Port3,0,60,170 );
ReefAngel.StandardLights( Box1_Port7,13,0,17,0 );
ReefAngel.StandardLights( Box1_Port8,12,0,18,0 );
ReefAngel.PWM.SetDaylight( PWMParabola(13,0,16,0,10,80,10) );
ReefAngel.PWM.SetActinic( PWMSlope(10,0,18,0,15,95,80,15) );
////// Place your custom code below here
if ((now()%SECS_PER_DAY==28800)) //if it is 8 AM
{ReefAngel.FeedingModeStart(); //START FEEDING MODE}
if ((now()%SECS_PER_DAY==64800)) //if it is 6 PM
{ReefAngel.FeedingModeStart(); //START FEEDING MODE}[/color]
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "Spotted" );
ReefAngel.ShowInterface();
}
Re: Auto Feed routine
Posted: Mon Jan 19, 2015 9:45 am
by rimai
Looks good to me.