Ah, spoke to soon. Initially it worked, but I changed the time and now when I load the ino file the screen turns white and both pumps stay on, along with my ato port (without being triggered by the float switch). If I comment out the code and upload it everything seems okay. Here's my ino with the autofeed commented out. When I loaded the autofeed code I did comment out the original wavemaker stuff so I don't think that's what caused the problem.
Code: Select all
/* Features
#define SIMPLE_MENU
#define InstalledRelayExpansionModules 1
#define WATERLEVELEXPANSION
#define RelayExp
#define SaveRelaysPresent
#define ENABLE_EXCEED_FLAGS
#define CUSTOM_VARIABLES
#define CUSTOM_MAIN
#define wifi
#define SALINITYEXPANSION
#define DisplayLEDPWM
#define VersionMenu
#define WDT
*/
#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 <AI.h>
#include <WaterLevel.h>
#include <ReefAngel.h>
////// Place global variable code below here
#define Return Port4
#define CaDoser Box1_Port3
#define AlkDoser Box1_Port4
////// 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 = Port4Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port2Bit | Port3Bit;
ReefAngel.WaterChangePortsE[0] = Port8Bit | Port7Bit | Port6Bit | Port5Bit ;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = Port1Bit;
ReefAngel.LightsOnPortsE[0] = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port3Bit;
ReefAngel.OverheatShutoffPortsE[0] = 0;
// Temperature and overheat functions
ReefAngel.TempProbe = T2_PROBE;
ReefAngel.OverheatProbe = T3_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 830 );
// Ports that are always on
ReefAngel.Relay.On( Port4 );
ReefAngel.Relay.On( Box1_Port5 );
ReefAngel.Relay.On( Box1_Port6 );
ReefAngel.Relay.On( Box1_Port7 );
ReefAngel.Relay.On( Box1_Port8 );
////// Place additional initialization code below here
ReefAngel.CustomVar[7]=1;
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.StandardLights( Port1,9,0,21,0 );
ReefAngel.SingleATO( true,Port2,360,0 );
ReefAngel.StandardHeater( Port3,781,785 );
// Turn Port5 on/off random cycles that lasts from 10 to 15 secs
ReefAngel.WavemakerRandom( Port5,10,15 );
ReefAngel.StandardLights( Port7,21,0,23,0 );
ReefAngel.StandardLights( Port8,21,0,9,0 );
// ReefAngel.DosingPumpRepeat( Box1_Port3,0,120,2 );
// ReefAngel.DosingPumpRepeat( Box1_Port4,5,120,3 );
////// Place your custom code below here
// Turn Port6 on/off on opposite cycle as Port 5
ReefAngel.Relay.Set(Port6,!ReefAngel.Relay.Status(Port5));
/*AUTOFEED if the hour is 11a, minute is 55 and seconds is 0
if ( ((hour() == 11) && (minute() == 55) && (second() == 00) ) )
{
ReefAngel.FeedingModeStart();
}
if (ReefAngel.DisplayedMenu=FEEDING_MODE)
{
ReefAngel.Relay.On (Port5);
ReefAngel.Relay.On (Port6);
}
else
{
ReefAngel.WavemakerRandom( Port5,10,15 );
ReefAngel.Relay.Set(Port6,!ReefAngel.Relay.Status(Port5));
}
*/
//Dose Ca
if ( ReefAngel.DisplayedMenu == DEFAULT_MENU ) //Ca Doser - Only works if Main screen is showing
{
/* && = and || = or
Hours between 12am and 5am
minute must be 0 (top of the hour)
seconds less than 2 (up to 2 seconds)
*/
if ( ((hour() >= 0) && (hour() <= 6)) && (minute() == 0) && //dose time
(second() < 2) ) //dose duration
{
ReefAngel.Relay.On(CaDoser);
}
else
{
ReefAngel.Relay.Off(CaDoser);
}
}
//Dose Alk
if ( ReefAngel.DisplayedMenu == DEFAULT_MENU ) //Alk Doser - Only works if Main screen is showing
{
/* && = and || = or
Hours between 12:05am and 7:05am
minute must be 0 (top of the hour)
seconds less than 3 (up to 3 seconds)
*/
if ( ((hour() >= 0) && (hour() <= 7)) && (minute() == 5) && //dose time
(second() < 3) ) //dose duration
{
ReefAngel.Relay.On(AlkDoser);
}
else
{
ReefAngel.Relay.Off(AlkDoser);
}
}
//Power Outage
ReefAngel.CustomVar[0]=ReefAngel.Relay.IsRelayPresent(EXP1_RELAY);
if (!ReefAngel.Relay.IsRelayPresent(EXP1_RELAY))
{
ReefAngel.Relay.Off (Port1);
ReefAngel.Relay.Off (Port2);
ReefAngel.Relay.Off (Port3);
ReefAngel.Relay.Off (Port5);
ReefAngel.Relay.Off (Port6);
ReefAngel.Relay.Off (Port7);
ReefAngel.Relay.Off (Port8);
/*
ReefAngel.Relay.Off (Daylight); //port 1
ReefAngel.Relay.Off (AutoTopOff); //port 2
ReefAngel.Relay.Off (Heater); //port 3
ReefAngel.Relay.Off (WavemakerL); //port 5
ReefAngel.Relay.Off (WavemakerR); //port 6
ReefAngel.Relay.Off (WavemakerR); //port 7
ReefAngel.Relay.Off (FugeLight); //port 8
*/
}
if (!ReefAngel.HighATO.IsActive())
{
ReefAngel.Relay.Off( Box1_Port6 );
}
else
{
ReefAngel.Relay.On( Box1_Port6 );
}
//ATO/HEATER PORTAL PORTAL ALERT
if ( InternalMemory.read(ATO_Single_Exceed_Flag) == 1 )
{
ReefAngel.CustomVar[1]=1;
}
else
{
ReefAngel.CustomVar[1]=0;
}
if ( InternalMemory.read(Overheat_Exceed_Flag) == 1 )
{
ReefAngel.CustomVar[2]=1;
}
else
{
ReefAngel.CustomVar[2]=0;
}
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "chase", "2600" );
ReefAngel.ShowInterface();
}
void DrawCustomMain()
{
int x,y;
char text[10];
// Parameters
#if defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 14, ReefAngel.Params,
ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() );
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 14, ReefAngel.Params );
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
pingSerial();
// Salinity
ReefAngel.LCD.DrawText( COLOR_DARKKHAKI,DefaultBGColor,15,54, "SAL:" );
ReefAngel.LCD.DrawText( COLOR_DARKKHAKI,DefaultBGColor,39,54, ReefAngel.Params.Salinity );
pingSerial();
// Water Level
ReefAngel.LCD.DrawText( COLOR_OLIVEDRAB,DefaultBGColor,75,54, "WL:" );
ReefAngel.LCD.DrawText( COLOR_OLIVEDRAB,DefaultBGColor,94,54, ReefAngel.WaterLevel.GetLevel() );
pingSerial();
// Main Relay Box
byte TempRelay = ReefAngel.Relay.RelayData;
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
ReefAngel.LCD.DrawOutletBox( 12, 76, TempRelay );
pingSerial();
// Relay Expansion
TempRelay = ReefAngel.Relay.RelayDataE[0];
TempRelay &= ReefAngel.Relay.RelayMaskOffE[0];
TempRelay |= ReefAngel.Relay.RelayMaskOnE[0];
ReefAngel.LCD.DrawOutletBox( 12, 98, TempRelay );
pingSerial();
// Date and Time
ReefAngel.LCD.DrawDate( 6, 122 );
pingSerial();
}
void DrawCustomGraph()
{
}