Auto Calibrate Salinity Probe?

Do you have a question on how to do something.
Ask in here.
Post Reply
howaboutme
Posts: 245
Joined: Tue Jan 28, 2014 11:10 am
Location: Northern VA

Re: Auto Calibrate Salinity Probe?

Post by howaboutme »

Thanks Curt! I think I understand. I'll play with this the next few days and report back.

I hope I'm not shooting myself in the foot and defeating the purpose of monitoring salinity. I've been doing this manually and am confident in my ability to keep the tank stable in normal circumstances so I'm comfortable trying this out. We'll see. :)
Jack
howaboutme
Posts: 245
Joined: Tue Jan 28, 2014 11:10 am
Location: Northern VA

Re: Auto Calibrate Salinity Probe?

Post by howaboutme »

Curt,

Can you check my code? I've adjusted the start time and run time. It compiles with no errors. I just want a 2nd eye before I load and test. Thanks!

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

////// Place global variable code below here

// Set to start at 9:45am and run for 10 minutes
    #define AUTO_SAL_START_HOUR     9
    #define AUTO_SAL_START_MINUTE   45
    #define AUTO_SAL_RUN_TIME       10

////// 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 
    ReefAngel.AddSalinityExpansion();  // Salinity Expansion Module
    // Ports toggled in Feeding Mode
    ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port5Bit;
    // Ports toggled in Water Change Mode
    ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port5Bit | Port8Bit;
    // Ports toggled when Lights On / Off menu entry selected
    ReefAngel.LightsOnPorts = 0;
    // Ports turned off when Overheat temperature exceeded
    ReefAngel.OverheatShutoffPorts = Port2Bit | Port3Bit | Port8Bit;
    // Use T1 probe as temperature and overheat functions
    ReefAngel.TempProbe = T1_PROBE;
    ReefAngel.OverheatProbe = T1_PROBE;
    // Salinity Temp Compensation
    ReefAngel.Salinity.SetCompensation(0);

    // Ports that are always on
    ReefAngel.Relay.On( Port3 );
    ReefAngel.Relay.On( Port4 );
    ReefAngel.Relay.On( Port5 );

    ////// Place additional initialization code below here
    
        ReefAngel.CustomLabels[0]="ATO Pump"; 
        ReefAngel.CustomLabels[1]="Skimmer"; 
        ReefAngel.CustomLabels[2]="Light"; 
        ReefAngel.CustomLabels[3]="Nero3"; 
        ReefAngel.CustomLabels[4]="Return Pump"; 
        ReefAngel.CustomLabels[5]="Unused"; 
        ReefAngel.CustomLabels[6]="Unused"; 
        ReefAngel.CustomLabels[7]="Heater"; 

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

void loop()
{  
    ReefAngel.SingleATOLow( Port1 );
    ReefAngel.StandardLights( Port2 ); // putting skimmer on timer
    ReefAngel.StandardHeater( Port8 );
    
    ////// Place your custom code below here
    
     // First 10 minutes after WC disable ATO for port 1
          static time_t wcTimer;
          if (ReefAngel.DisplayedMenu == WATERCHANGE_MODE) wcTimer=now();
          if (now()-wcTimer > 0 && now()-wcTimer < 600) {
          ReefAngel.Relay.Off(Port1);
          }
          else {ReefAngel.SingleATOLow (Port1 );
          }

    // Compute the current time
    int CurrentTime = NumMins(hour(), minute());
    // Compute the starting time for the auto salinity calibration
    int AutoSalStartTime = NumMins(AUTO_SAL_START_HOUR, AUTO_SAL_START_MINUTE);
    // Compute the ending time for the auto salinity calibration by adding in the run time
    int AutoSalEndTime = AutoSalStartTime + AUTO_SAL_RUN_TIME;

    // Check if it's time to start the auto salinity calibration
    if (  AutoSalStartTime == CurrentTime ) {
      // Switch to Salinity Calibration ONLY if we are on the main / default menu
      // Don't switch to the calibration menu if we are doing something else (water change, feeding, etc)
      if ( (ReefAngel.DisplayedMenu == DEFAULT_MENU) || (ReefAngel.DisplayedMenu == MAIN_MENU) ) {
        ReefAngel.ChangeMode = SAL_CALIBRATE_MENU;
      }
    }
    // Check if we are at the end of the Run Time for the auto salinity calibration
    if ( AutoSalEndTime == CurrentTime ) {
      // Simulate a button press ONLY if we are still on the Salinity Calibration menu screen
      if (ReefAngel.DisplayedMenu == SAL_CALIBRATE_MENU) {
        ButtonPress++;
      }
    }
    ////// Place your custom code above here

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

Jack
binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: Auto Calibrate Salinity Probe?

Post by binder »

looks ok. your changing of the time looks good and it appears that you just copied my code (which is expected).

Sent from my Pixel 2 using Tapatalk
howaboutme
Posts: 245
Joined: Tue Jan 28, 2014 11:10 am
Location: Northern VA

Re: Auto Calibrate Salinity Probe?

Post by howaboutme »

Thanks yes. I was more making sure I put your codes in the right place. Will report back.
Jack
howaboutme
Posts: 245
Joined: Tue Jan 28, 2014 11:10 am
Location: Northern VA

Re: Auto Calibrate Salinity Probe?

Post by howaboutme »

this morning was the first scheduled auto calibration. looks like everything went smoothly. thank you!
Jack
binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: Auto Calibrate Salinity Probe?

Post by binder »

howaboutme wrote:this morning was the first scheduled auto calibration. looks like everything went smoothly. thank you!
awesome!
glad to hear that everything appears to be going good.

Sent from my Pixel 2 using Tapatalk
Post Reply