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.
Auto Calibrate Salinity Probe?
-
- Posts: 245
- Joined: Tue Jan 28, 2014 11:10 am
- Location: Northern VA
-
- Posts: 245
- Joined: Tue Jan 28, 2014 11:10 am
- Location: Northern VA
Re: Auto Calibrate Salinity Probe?
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!
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
Re: Auto Calibrate Salinity Probe?
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
Sent from my Pixel 2 using Tapatalk
-
- Posts: 245
- Joined: Tue Jan 28, 2014 11:10 am
- Location: Northern VA
Re: Auto Calibrate Salinity Probe?
Thanks yes. I was more making sure I put your codes in the right place. Will report back.
Jack
-
- Posts: 245
- Joined: Tue Jan 28, 2014 11:10 am
- Location: Northern VA
Re: Auto Calibrate Salinity Probe?
this morning was the first scheduled auto calibration. looks like everything went smoothly. thank you!
Jack
Re: Auto Calibrate Salinity Probe?
awesome!howaboutme wrote:this morning was the first scheduled auto calibration. looks like everything went smoothly. thank you!
glad to hear that everything appears to be going good.
Sent from my Pixel 2 using Tapatalk