Unfortunately nothing happens.
Heres the code I tried. Maybe you'll see something I don't. Thanks
Code: Select all
#include <Salinity.h>
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_TS.h>
#include <RA_TouchLCD.h>
#include <RA_TFT.h>
#include <RA_TS.h>
#include <Font.h>
#include <RA_Wifi.h>
#include <RA_Wiznet5100.h>
#include <SD.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetDHCP.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_ATO.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 <RA_CustomLabels.h>
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <Humidity.h>
#include <PAR.h>
#include <DCPump.h>
#include <ReefAngel.h>
#include <SoftwareSerial.h>
// Define Relay Ports by Name
#define heaters Box1_Port1
#define skimmer Box1_Port2
#define actinics Box1_Port3
#define t5 Box1_Port4
#define sumplight Box1_Port5
#define fan Box1_Port6
#define radions Box1_Port7
#define return Box1_Port8
#define cafeed Box2_Port1 // CaRx Feed Pump
#define co2 Box2_Port2 // Co2 Solenoid
#define carecirc Box2_Port3 // CaRx Recirculation Pump
#define dosing1 Box2_Port4
#define ozone Box2_Port5
#define dosing2 Box2_Port6
#define powerheads Box2_Port7
#define dosing3 Box2_Port8
// Virtual Relays
#define co2purge Box3_Port1
////// Place global variable code below here
void SeasonalTemps ()
{
static int heatArray[][2] = { {778,784},// default in case of error in month=0 (May)
{762,768},//January (winter)
{766,772},//February (winter)
{770,776},//March (early spring)
{774,780},//April (spring)
{778,784},//May (spring)
{782,788},//June (early summer)
{786,792},//July (summer)
{782,788},//August (summer)
{778,784},//September (early fall)
{772,780},//October (fall)
{770,776},//November (fall)
{766,772} };//December (early winter)
ReefAngel.StandardHeater( heaters,heatArray[month()][0],heatArray[month()][1]);
}//end seasonalTemps
//co2purge
enum State {
IDLE,
TURN_OFF_CO2_AND_PUMPS,
WAIT_TO_FEED_PUMP,
TURN_ON_FEED_PUMP,
WAIT_TO_TURN_OFF_FEED_PUMP,
COMPLETE_CYCLE
};
State currentState = IDLE; // Initial state
unsigned long lastUpdateTime = 0; // Last update time
//end co2purge
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.Star();
ReefAngel.AddExtraTempProbes(); // Adds 3 More Temp Probes
ReefAngel.AddHumidityExpansion(); // Humidity Expansion
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = 0;
ReefAngel.FeedingModePortsE[0] = Port8Bit;
ReefAngel.FeedingModePortsE[1] = Port7Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = 0;
ReefAngel.WaterChangePortsE[0] = Port8Bit;
ReefAngel.WaterChangePortsE[1] = Port7Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = 0;
ReefAngel.OverheatShutoffPortsE[0] = Port2Bit | Port3Bit | Port4Bit | Port7Bit;
ReefAngel.OverheatShutoffPortsE[1] = 0;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
ReefAngel.LightsOnPortsE[0] = Port5Bit | Port7Bit;
ReefAngel.LightsOnPortsE[1] = 0;
// Use T2 probe as temperature and overheat functions
ReefAngel.TempProbe = T2_PROBE;
ReefAngel.OverheatProbe = T3_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 820 );
// Ports that default on
ReefAngel.Relay.On( return );// Return
ReefAngel.Relay.On( powerheads ); // DC power heads on smart bar
// Ports that default off
ReefAngel.Relay.Off( heaters ); // Heaters
ReefAngel.Relay.Off( dosing1 ); // Dosing Pump 1
ReefAngel.Relay.Off( dosing2 ); // Dosing Pump 2
ReefAngel.Relay.Off( dosing3 ); // Dosing Pump 3
//Virtual Relays
ReefAngel.Relay.Off( co2purge );// Purge Co2 from Calcium Reactor
ReefAngel.Relay.Off( Box3_Port2 );
ReefAngel.Relay.Off( Box3_Port3 );
ReefAngel.Relay.Off( Box3_Port4 );
ReefAngel.Relay.Off( Box3_Port5 );
ReefAngel.Relay.Off( Box3_Port6 );
ReefAngel.Relay.Off( Box3_Port7 );
ReefAngel.Relay.Off( Box3_Port8 );//Test Virtual Switch
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
SeasonalTemps();
ReefAngel.ActinicLights( actinics ); // Royal blue led strip
ReefAngel.DayLights( t5 ); // T5's
ReefAngel.StandardLights( sumplight,23,0,9,0 ); //Sump light
ReefAngel.StandardFan( fan ); // Hood Fan
ReefAngel.StandardLights( radions,1,30,9,30 ); //Radions
ReefAngel.StandardLights( co2,12,35,23,30 ); // Co2 Solenoid
ReefAngel.StandardLights( carecirc,12,30,23,55 ); // CaRx Recirculation Pump
ReefAngel.DosingPumpRepeat1( dosing1 );
ReefAngel.DosingPumpRepeat( ozone,180,1440,1200 ); // Ozone, on 3am=180mins offset from midnight, 1440=every 1440 mins (once a day), for 20 mins=1200 sec's
ReefAngel.DosingPumpRepeat2( dosing2 );
ReefAngel.DosingPumpRepeat3( dosing3 );
// Dimming Channels
ReefAngel.PWM.DaylightPWMParabola();
ReefAngel.PWM.ActinicPWMParabola(14,15,21,45,0,100,0);
ReefAngel.PWM.Daylight2PWMParabola();
ReefAngel.PWM.Actinic2PWMParabola();
boolean buzzer=false;
if ( buzzer ) ReefAngel.BuzzerOn(2); else ReefAngel.BuzzerOff();
////// Place your custom code below here
// Turn off skimmer if return pump is off
if (!ReefAngel.Relay.Status(return)) {
ReefAngel.Relay.Override(skimmer, 0); // Turn off skimmer
} else {
ReefAngel.Relay.DelayedOn(skimmer,5); // Delay start skimmer when return pump is back on
}
// Skimmer
if ((ReefAngel.HighATO.IsActive()) || (hour()>=9 && hour()<=18)) ReefAngel.Relay.Off( skimmer); // Turns off when collection container is full or from 9am-7pm
else ReefAngel.Relay.DelayedOn( skimmer,5); //delay start 5 mins
// CaRx Feed Pump
if ((hour() == 6 && minute() <=10) || (hour()>=13 && hour()<23) || (hour() == 23 && minute() <50)) ReefAngel.Relay.On(cafeed);//On from 6-6:10am and 1-11:50pm
else ReefAngel.Relay.Off(cafeed);
//start co2purge
unsigned long currentMillis = millis();
// Check if the condition to start the sequence is true
if (ReefAngel.Relay.Status(co2purge) && currentState == IDLE) {
currentState = TURN_OFF_CO2_AND_PUMPS;
}
switch (currentState) {
case TURN_OFF_CO2_AND_PUMPS:
// Turn off CO2 and Calcium Reactor pumps
ReefAngel.Relay.Off(co2);
ReefAngel.Relay.Off(carecirc);
ReefAngel.Relay.Off(cafeed);
lastUpdateTime = currentMillis; // Reset the timer
currentState = WAIT_TO_FEED_PUMP;
break;
case WAIT_TO_FEED_PUMP:
// Wait for 1 minute before turning on the feed pump
if (currentMillis - lastUpdateTime >= 60000) { // 60000 milliseconds = 1 minute
currentState = TURN_ON_FEED_PUMP;
}
break;
case TURN_ON_FEED_PUMP:
// Turn on the feed pump
ReefAngel.Relay.On(cafeed);
lastUpdateTime = currentMillis; // Reset the timer
currentState = WAIT_TO_TURN_OFF_FEED_PUMP;
break;
case WAIT_TO_TURN_OFF_FEED_PUMP:
// Wait for 10 minutes before turning off the feed pump
if (currentMillis - lastUpdateTime >= 600000) { // 600000 milliseconds = 10 minutes
currentState = COMPLETE_CYCLE;
}
break;
case COMPLETE_CYCLE:
// Turn off Box3_Port1
ReefAngel.Relay.Off(co2purge);
currentState = IDLE; // Reset the state to IDLE
break;
case IDLE:
// Do nothing or handle other tasks
break;
}
//end co2purge
//light mover
//if (hour()>=9 && hour()<=21) ReefAngel.DosingPumpRepeat( Port6,0,90,2 ); // from 9am - 9pm, with 0 minutes offset from midnight moves every 90 minutes 2 seconds
//else ReefAngel.Relay.Off( Port6);
//carbon dosing
//if (hour()>=6 && hour()<23) ReefAngel.DosingPumpRepeat1( Port8 );
//else ReefAngel.Relay.Off( Port8);
//kalk dosing
//if ((hour()>13 && hour()<20) || (ReefAngel.Params.PH > 845)) ReefAngel.Relay.Off( Port7); // Kalk off 1pm - 8pm & if pH is > 8.45
// else ReefAngel.PHControl( Port7 );
////// Place your custom code above here
ReefAngel.Network.Cloud();
// This should always be the last line
ReefAngel.ShowTouchInterface();
}
// RA_STRING1=4rBCB5aEN369IDJFYl/ESQ==::NTdkYmJkMzM0ODdmMmE0NA==
// RA_STRING2=null
// RA_STRING3=null
// RA_LABEL LABEL_TEMP1=FishRoom
// RA_LABEL LABEL_TEMP2=Sump
// RA_LABEL LABEL_TEMP3=OverFlow
// RA_LABEL LABEL_TEMP4=LightCanopy
// RA_LABEL LABEL_TEMP5=Cabinet
// RA_LABEL LABEL_TEMP6=NotInUse
// RA_LABEL LABEL_DAYLIGHT=Daylight
// RA_LABEL LABEL_ACTINIC=Actinic
// RA_LABEL LABEL_ACTINIC2=Actinic 2
// RA_LABEL LABEL_DAYLIGHT2=Daylight 2
// RA_LABEL LABEL_PORT11=Heaters
// RA_LABEL LABEL_PORT12=Skimmer
// RA_LABEL LABEL_PORT13=Blue Leds
// RA_LABEL LABEL_PORT14=T5's
// RA_LABEL LABEL_PORT15=Sump Light
// RA_LABEL LABEL_PORT16=Fan
// RA_LABEL LABEL_PORT17=Radions
// RA_LABEL LABEL_PORT18=Return
// RA_LABEL LABEL_PORT21=Ca Feed
// RA_LABEL LABEL_PORT22=Co2 Sol
// RA_LABEL LABEL_PORT23=Ca Recir
// RA_LABEL LABEL_PORT24=Doser1
// RA_LABEL LABEL_PORT25=Ozone
// RA_LABEL LABEL_PORT26=Doser2
// RA_LABEL LABEL_PORT27=Power Heads
// RA_LABEL LABEL_PORT28=Doser3
// RA_LABEL LABEL_PORT31=Purge Co2
// RA_LABEL LABEL_PORT32=Virtual
// RA_LABEL LABEL_PORT33=Virtual
// RA_LABEL LABEL_PORT34=Virtual
// RA_LABEL LABEL_PORT35=Virtual
// RA_LABEL LABEL_PORT36=Virtual
// RA_LABEL LABEL_PORT37=Virtual
// RA_LABEL LABEL_PORT38=Test
//