Wp 25 code

Do you have a question on how to do something.
Ask in here.
User avatar
Posts: 5361
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Mon Sep 22, 2014 12:20 pm
Here's the code converted to use DCPump just to get that out of the way.

The only thing it doesn't do at this moment is allow you to use the portal to change it. We should see the mode and speed change properly and be reflected in the portal (just not in the Internal Memory section).

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.SetTemperatureUnit( Celsius ); // set to Celsius Temperature

ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port1Bit | Port2Bit | Port3Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 285 );

// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
ReefAngel.DCPump.DaylightChannel=Sync;
ReefAngel.DCPump.ActinicChannel = None;

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

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


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

void loop()
{
ReefAngel.StandardATO( Port1,120 );
ReefAngel.Relay.DelayedOn( Port2,5 );
ReefAngel.StandardHeater( Port3,252,255 );
ReefAngel.StandardLights( Port4,20,0,8,0 );
ReefAngel.StandardLights( Port6,8,10,19,50 );
ReefAngel.StandardLights( Port7,8,5,19,55 );

////// Place your custom code below here
if (hour()<12)
ReefAngel.StandardLights(Port5, 6, 0, 8, 5);
else
ReefAngel.StandardLights(Port5, 18, 0, 20, 5);

ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( LongPulse,40,10 ); // Long pulse at 40% with 10s pulse on sync mode

if (hour()>=8 && hour()<12)
{
  ReefAngel.DCPump.SetMode( TidalSwell, 60, 0 ); // Tidal Swell at 60% on sync mode
}
if (hour()>=12 && hour()<16)
{
  ReefAngel.DCPump.SetMode( ReefCrest, 80, 0 ); // ReefCrest at 80% + - 20 on sync mode
}
if (hour()>=16 && hour()<17)
{
  ReefAngel.DCPump.SetMode( NutrientTransport, 90, 0 ); // Nutrient Transport on sync mode
}
if (hour()>=17 && hour()<20)
{
  ReefAngel.DCPump.SetMode( ReefCrest, 80, 0 ); // ReefCrest at 75% + - 20 on sync mode
}
if (hour()>=20)
{
  ReefAngel.DCPump.SetMode( TidalSwell, 60, 0 ); // Tidal Swell at 60% on sync mode
}
////// Place your custom code above here

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

Posts: 23
Joined: Thu Jun 05, 2014 4:25 pm
PostPosted: Mon Sep 22, 2014 12:32 pm
Thanks a lot for that. Will get it loaded up tomorrow.
Sorry for being a bit of a pest but no much idea about coding.
Be good for the likes of me if you could set different modes at time you want by the wizard.
Wizard=Easy ....... Coding = Brick wall with head stuck in it.
Thanks
mask
User avatar
Posts: 5361
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Mon Sep 22, 2014 12:40 pm
For the most part you did alright getting that chunk of code in and honestly not sure 100% the why it's not working part, except for telling it to use DCPump and then not using it. I think that's our biggest problem. Because you never say to use InternalMemory everything is getting default 0 0 0 and even though we are specifying the speeds to the Daylight channel directly, the DCPump is overriding it. I think this is the main issue and should be addressed by the above.

Posts: 23
Joined: Thu Jun 05, 2014 4:25 pm
PostPosted: Tue Sep 23, 2014 12:06 am
Have got that loaded up now. Working perfect.
That's great working exactly the way I was wanting.
Big thanks for all the help.
Only got to get a delay on the ATO port to make code finished
Something like this maybe?
ReefAngel.DelayedOn(Port1, 5);
But thought I read somewhere about delay on ATO a no go
thanks
mask
User avatar
Posts: 1426
Joined: Fri Mar 29, 2013 3:51 pm
Location: Oklahoma City
PostPosted: Tue Sep 23, 2014 3:19 am
What kind of delay are you looking for? Are you using a single or double switch ATO?

--Colin
User avatar
Posts: 5361
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Tue Sep 23, 2014 3:32 am
Yeah delayed on won't work. I'll write something up for you in a little while.
User avatar
Posts: 5361
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Tue Sep 23, 2014 4:36 am
try this:

Code: Select all
static unsigned long atoTimer;

if (ReefAngel.DisplayedMenu==WATERCHANGE_MODE) atoTimer=now();

if (now()-atoTimer < 300) {
  ReefAngel.Relay.Off(Port1);
} else {
  ReefAngel.StandardATO(Port1,120);
}

Posts: 23
Joined: Thu Jun 05, 2014 4:25 pm
PostPosted: Tue Sep 23, 2014 9:11 am
Hi
Colin it's a standard 2 float switch ATO, was just needing a short delay after water change/feeding mode.
Thanks for all the help with the coding Lee.
Everything seems to be working fine now. Here's finished code, may help others needing same

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.SetTemperatureUnit( Celsius ); // set to Celsius Temperature

ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port1Bit | Port2Bit | Port3Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 285 );

// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
ReefAngel.DCPump.DaylightChannel=Sync;
ReefAngel.DCPump.ActinicChannel = None;

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

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


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

void loop()
{
ReefAngel.StandardATO( Port1,120 );
ReefAngel.Relay.DelayedOn( Port2,5 );
ReefAngel.StandardHeater( Port3,252,255 );
ReefAngel.StandardLights( Port4,20,0,8,0 );
ReefAngel.StandardLights( Port6,8,10,19,50 );
ReefAngel.StandardLights( Port7,8,5,19,55 );

////// Place your custom code below here
static unsigned long atoTimer;

if (ReefAngel.DisplayedMenu==WATERCHANGE_MODE) atoTimer=now();

if (now()-atoTimer < 300) {
  ReefAngel.Relay.Off(Port1);
} else {
  ReefAngel.StandardATO(Port1,120);
}

if (hour()<12)
ReefAngel.StandardLights(Port5, 6, 0, 8, 5);
else
ReefAngel.StandardLights(Port5, 18, 0, 20, 5);

ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( LongPulse,40,10 ); // Long pulse at 40% with 10s pulse on sync mode

if (hour()>=8 && hour()<12)
{
  ReefAngel.DCPump.SetMode( TidalSwell, 60, 0 ); // Tidal Swell at 60% on sync mode
}
if (hour()>=12 && hour()<16)
{
  ReefAngel.DCPump.SetMode( ReefCrest, 80, 0 ); // ReefCrest at 80% + - 20 on sync mode
}
if (hour()>=16 && hour()<17)
{
  ReefAngel.DCPump.SetMode( NutrientTransport, 90, 0 ); // Nutrient Transport on sync mode
}
if (hour()>=17 && hour()<20)
{
  ReefAngel.DCPump.SetMode( ReefCrest, 80, 0 ); // ReefCrest at 75% + - 20 on sync mode
}
if (hour()>=20)
{
  ReefAngel.DCPump.SetMode( TidalSwell, 60, 0 ); // Tidal Swell at 60% on sync mode
}
////// Place your custom code above here

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

Return to How do I code ...

Who is online

Users browsing this forum: No registered users and 4 guests