Custom memory or preloaded

Do you have a question on how to do something.
Ask in here.
Post Reply
sabo
Posts: 129
Joined: Tue Sep 24, 2013 3:18 am

Custom memory or preloaded

Post by sabo »

Hi, so I got my 4 wp40's doing what I want, by alternating to each side of the tank for six hours. This has the desired effect of kicking up all the detritus that settles behind the two rock piles I have. Now what I would like to do is be able to set the three variables in the reefcrest function via the android app. Ie, set the starting speed, the variation and whether they are sync or antisync. Looking at the memory allocations in the android app, it would probably make it simpler to read/use if I set my own custom memory with the appropriate variables. Two pumps are on daylight/actinic and two are on the expansion module. I also want to put my DC skimmer and return pumps on pwm so I can make adjustments on the fly with them at some point. Easier way to do it? I'm actually away at the moment so can't actually programming it, just trying to get a plan of attack in place. Here's my current code.

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

#define Return      1
#define Pwm_Exp     2
#define Unused      3
#define ATI         4
#define Jebao1_Rhs   5
#define Jebao2_Rhs   6
#define Jebao1_Lhs   7
#define Jebao2_Lhs   8

#define ATO         Box1_Port1
#define Fuge_Led    Box1_Port2
#define Heater1     Box1_Port3
#define Skimmer     Box1_Port4
#define Heater2     Box1_Port5
#define Unused      Box1_Port6
#define Swabby      Box1_Port7
#define Unused      Box1_Port8

////// 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 
    ReefAngel.AddSalinityExpansion();  // Salinity Expansion Module
    ReefAngel.AddPHExpansion();  // pH Expansion Module
    ReefAngel.AddWaterLevelExpansion();  // Water Level Expansion Module
    // Ports toggled in Feeding Mode
    ReefAngel.FeedingModePorts = 0;
    ReefAngel.FeedingModePortsE[0] = 0;
    // Ports toggled in Water Change Mode
    ReefAngel.WaterChangePorts = 0;
    ReefAngel.WaterChangePortsE[0] = 0;
    // Ports toggled when Lights On / Off menu entry selected
    ReefAngel.LightsOnPorts = 0;
    ReefAngel.LightsOnPortsE[0] = 0;
    // Ports turned off when Overheat temperature exceeded
    ReefAngel.OverheatShutoffPorts = 0;
    ReefAngel.OverheatShutoffPortsE[0] = Port3Bit | Port5Bit;
    // Use T1 probe as temperature and overheat functions
    ReefAngel.TempProbe = T2_PROBE;
    ReefAngel.OverheatProbe = T2_PROBE;
    // Set the Overheat temperature setting
    InternalMemory.OverheatTemp_write( 280 );


    // Ports that are always on
    ReefAngel.Relay.On( Pwm_Exp );
    ReefAngel.Relay.On( Return );
    ReefAngel.Relay.On( ATI );
    ReefAngel.Relay.On( Fuge_Led );
    ReefAngel.Relay.On( Heater1 );
    ReefAngel.Relay.On( Heater2 );
    ReefAngel.Relay.On( Skimmer );

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

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

void loop()
{
    ReefAngel.WaterLevelATO( ATO,180,70,90 );
    
    if (ReefAngel.LowATO.IsActive() && ReefAngel.HighATO.IsActive())
      {
        ReefAngel.Relay.On(Skimmer);
      }
     else
      {
        ReefAngel.Relay.Off(Skimmer);

    ReefAngel.DosingPumpRepeat( Swabby,0,360,120 );

    ////// Place your custom code below here
    
    if (hour()>=6 && hour()<12)
{
  ReefAngel.PWM.SetDaylight( ReefCrestMode(70,20,true) ); // ReefCrest at 60% +/- 20% on sync mode
  ReefAngel.PWM.SetActinic( ReefCrestMode(70,20,true) ); // ReefCrest at 60% +/- 20% on anti-sync mode
  ReefAngel.Relay.Off( Jebao1_Lhs );
  ReefAngel.Relay.Off( Jebao2_Lhs );
  ReefAngel.Relay.On( Jebao1_Rhs );
  ReefAngel.Relay.On( Jebao2_Rhs );
}
else if (hour()>=12 && hour()<18)
{
  ReefAngel.PWM.SetChannel( 0, ReefCrestMode(70,20,true) ); // ReefCrest at 60% +/- 20% on sync mode
  ReefAngel.PWM.SetChannel( 1, ReefCrestMode(70,20,true) ); // ReefCrest at 60% +/- 20% on anti-sync mode
  ReefAngel.Relay.Off( Jebao1_Rhs );
  ReefAngel.Relay.Off( Jebao2_Rhs );
  ReefAngel.Relay.On( Jebao1_Lhs );
  ReefAngel.Relay.On( Jebao2_Lhs );
}
else if (hour()>=18 && hour()<24)
{
  ReefAngel.PWM.SetChannel( 0, ReefCrestMode(50,20,true) ); // ReefCrest at 60% +/- 20% on sync mode
  ReefAngel.PWM.SetChannel( 1, ReefCrestMode(50,20,true) ); // ReefCrest at 60% +/- 20% on anti-sync mode
  ReefAngel.Relay.Off( Jebao1_Lhs );
  ReefAngel.Relay.Off( Jebao2_Lhs );
  ReefAngel.Relay.On( Jebao1_Rhs );
  ReefAngel.Relay.On( Jebao2_Rhs );
}
else
{
  ReefAngel.PWM.SetDaylight( ReefCrestMode(50,20,true) ); // ReefCrest at 60% +/- 20% on sync mode
  ReefAngel.PWM.SetActinic( ReefCrestMode(50,20,true) ); // ReefCrest at 60% +/- 20% on anti-sync mode
  ReefAngel.Relay.Off( Jebao1_Rhs );
  ReefAngel.Relay.Off( Jebao2_Rhs );
  ReefAngel.Relay.On( Jebao1_Lhs );
  ReefAngel.Relay.On( Jebao2_Lhs ); 
}


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

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

rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: Custom memory or preloaded

Post by rimai »

You can do the speed, but not the variation nor the sync/anti-sync.
You would need your own custom locations.
Roberto.
Post Reply