Can you help to code..

Do you have a question on how to do something.
Ask in here.
Post Reply
kimacom
Posts: 33
Joined: Fri Jul 27, 2012 9:52 am

Can you help to code..

Post by kimacom »

Hi,
I just got the RA+, wifi and tried many things :D
I know this is great controller, btw i need to know how to code first.. :( not easy..
my qestion is
If port #5 "always on" and it off by accidentally or on purpose,
is it possible to turn on automatically after cetain time out? like turn on after 5min or 1hr

thanks ahead
Tim
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Can you help to code..

Post by rimai »

Try this:

Code: Select all

#include <Salinity.h>
#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 <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <ReefAngel.h>

unsigned long LastPort5On=now();

void setup()
{
  ReefAngel.Init();  
  ReefAngel.Relay.On(Port5);
}

void loop()
{
  if (ReefAngel.Relay.Status(Port5)) LastPort5On=now();
  if (now()-LastPort5On > 10)
  {
    ReefAngel.Relay.On(Port5);
    ReefAngel.Relay.RelayMaskOff|=Port5Bit;
  }
  ReefAngel.ShowInterface();
}
It's set for 10 seconds, but you can change to whatever number of seconds you would like.
Roberto.
kimacom
Posts: 33
Joined: Fri Jul 27, 2012 9:52 am

Re: Can you help to code..

Post by kimacom »

Great, so is this ok port#5,6 turn on after 5min, 4hr?

#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 <ReefAngel.h>

////// Place global variable code below here
unsigned long LastPort5On=now();
unsigned long LastPort6On=now();

////// Place global variable code above here


void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port5Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port6Bit | Port8Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = 0;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 860 );


// Ports that are always on
ReefAngel.Relay.On( Port6 );
ReefAngel.Relay.On( Port8 );

////// Place additional initialization code below here

ReefAngel.Relay.On(Port5);

////// Place additional initialization code above here
}

void loop()
{
ReefAngel.StandardATO( Port1,60 );
ReefAngel.StandardLights( Port2,9,0,11,0 );
ReefAngel.StandardHeater( Port3,775,785 );
ReefAngel.StandardFan( Port4,785,805 );
ReefAngel.Wavemaker( Port5,0 );
ReefAngel.Relay.Set( Port7, !ReefAngel.Relay.Status( Port8 ) );
ReefAngel.PWM.SetDaylight( PWMParabola(11,0,19,0,12,40,12) );
ReefAngel.PWM.SetActinic( PWMParabola(9,0,23,0,12,40,12) );
////// Place your custom code below here

if (ReefAngel.Relay.Status(Port5)) LastPort5On=now();
if (now()-LastPort5On > 300)
{
ReefAngel.Relay.On(Port5);
ReefAngel.Relay.RelayMaskOff|=Port5Bit;
}
if (ReefAngel.Relay.Status(Port6)) LastPort6On=now();
if (now()-LastPort6On > 14400)
{
ReefAngel.Relay.On(Port6);
ReefAngel.Relay.RelayMaskOff|=Port6Bit;
////// Place your custom code above here

// This should always be the last line
ReefAngel.Portal( "kimacom" );
ReefAngel.ShowInterface();
}

if wrong, please correct me,
and one more question, there is port #7 (opposite #8 ) could be delayed on start after #8 off?

thanks again
Tim
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Can you help to code..

Post by rimai »

You were just missing on last closing bracket on your last if statement.
Other than that, it looks good to me :)
Good job!!
You could use same concept for Port 7.
Declare a new variable up top
Then keep checking for status of port 8 and do something if the delay expires.

Try this:

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 <ReefAngel.h>

////// Place global variable code below here
unsigned long LastPort5On=now();
unsigned long LastPort6On=now();
unsigned long LastPort8On=now();

////// Place global variable code above here


void setup()
{
 // This must be the first line
 ReefAngel.Init(); //Initialize controller
 // Ports toggled in Feeding Mode
 ReefAngel.FeedingModePorts = Port5Bit;
 // Ports toggled in Water Change Mode
 ReefAngel.WaterChangePorts = Port1Bit | Port6Bit | Port8Bit;
 // Ports toggled when Lights On / Off menu entry selected
 ReefAngel.LightsOnPorts = 0;
 // Ports turned off when Overheat temperature exceeded
 ReefAngel.OverheatShutoffPorts = 0;
 // Use T1 probe as temperature and overheat functions
 ReefAngel.TempProbe = T1_PROBE;
 ReefAngel.OverheatProbe = T1_PROBE;
 // Set the Overheat temperature setting
 InternalMemory.OverheatTemp_write( 860 );


 // Ports that are always on
 ReefAngel.Relay.On( Port6 );
 ReefAngel.Relay.On( Port8 );

 ////// Place additional initialization code below here

 ReefAngel.Relay.On(Port5);

 ////// Place additional initialization code above here
}

void loop()
{
 ReefAngel.StandardATO( Port1,60 );
 ReefAngel.StandardLights( Port2,9,0,11,0 );
 ReefAngel.StandardHeater( Port3,775,785 );
 ReefAngel.StandardFan( Port4,785,805 );
 ReefAngel.Wavemaker( Port5,0 );
 ReefAngel.Relay.Set( Port7, !ReefAngel.Relay.Status( Port8 ) );
 ReefAngel.PWM.SetDaylight( PWMParabola(11,0,19,0,12,40,12) );
 ReefAngel.PWM.SetActinic( PWMParabola(9,0,23,0,12,40,12) );
 ////// Place your custom code below here

 if (ReefAngel.Relay.Status(Port5)) LastPort5On=now();
 if (now()-LastPort5On > 300)
 {
 ReefAngel.Relay.On(Port5);
 ReefAngel.Relay.RelayMaskOff|=Port5Bit;
 }
 if (ReefAngel.Relay.Status(Port6)) LastPort6On=now();
 if (now()-LastPort6On > 14400)
 {
 ReefAngel.Relay.On(Port6);
 ReefAngel.Relay.RelayMaskOff|=Port6Bit;
 }
 
 ReefAngel.Relay.Off(Port7);
if (ReefAngel.Relay.Status(Port8)) LastPort8On=now();
 if (now()-LastPort8On > 3)
 {
 ReefAngel.Relay.On(Port7);
 }

 ////// Place your custom code above here

 // This should always be the last line
 ReefAngel.Portal( "kimacom" );
 ReefAngel.ShowInterface();
}
Roberto.
kimacom
Posts: 33
Joined: Fri Jul 27, 2012 9:52 am

Re: Can you help to code..

Post by kimacom »

Great.
so, port#7 will be turn on 3sec after port#8 off, right?
and can i give the time out port#7 for during like 10min?
or it will turn off automatically after port #8 turn on
because i use port #7 as water change pump(sump water out) so,
should i turn on port #8 first(means water change mode off) or just give exact time out for port#7(which means not opposite port #8)
i am confusing...

Thank you Sir!
Have a nice day.
binder
Posts: 2865
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: Can you help to code..

Post by binder »

just to chime in, this type of changes could prevent water change and feeding change modes. this just means that if the ports get turned off by those modes that they will get turned back on by your code overrides.
kimacom
Posts: 33
Joined: Fri Jul 27, 2012 9:52 am

Re: Can you help to code..

Post by kimacom »

Yes, you are right.
So, I just remove the main pump port to manual switch, so i can turn it on and off with water change pump as well.

thanks
Post Reply