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.