-
Posts: 281 Joined: Wed Jan 23, 2013 12:36 pm
|
 Posted: Sat Mar 07, 2015 10:47 am
- 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
////// 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 = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit ; // Ports toggled in Water Change Mode ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit ; // Ports toggled when Lights On / Off menu entry selected ReefAngel.LightsOnPorts = Port7Bit | Port3Bit ; // Ports turned off when Overheat temperature exceeded ReefAngel.OverheatShutoffPorts = Port1Bit |Port2Bit | Port3Bit | Port5Bit| Port6Bit | Port7Bit| Port8Bit ; // Use T1 probe as temperature and overheat functions ReefAngel.TempProbe = T1_PROBE; ReefAngel.OverheatProbe = T1_PROBE; // Feeeding and Water Change mode speed ReefAngel.DCPump.FeedingSpeed=0; ReefAngel.DCPump.WaterChangeSpeed=0;
// Ports that are always on
////// Place additional initialization code below here
////// Place additional initialization code above here }
void loop() { ReefAngel.Relay.DelayedOn( Port1,1 ); // Return Pump ReefAngel.Relay.DelayedOn( Port2,90 );// Skimmer ReefAngel.ActinicLights( Port3 ); // Actinic LEDS ReefAngel.StandardFan(Port4,790,800);//Chiller 79-80 ReefAngel.StandardHeater(Port5,750,760);//Heater 75-76 //Port6 Kalk/ATO ReefAngel.DayLights( Port7 ); // White LEDS //Port 8 Empty //Moonlight Phase 9pm-10am (CH4-CH5) if ( (hour() >=10) && (hour() <21) ) ReefAngel.PWM.SetChannel( 4,(0) ); else ReefAngel.PWM.SetChannel( 4, MoonPhase() ); if ( (hour() >=10) && (hour() <21) ) ReefAngel.PWM.SetChannel( 5,(0) ); else ReefAngel.PWM.SetChannel( 5, MoonPhase() );
//Over Flow Protection if (ReefAngel.HighATO.IsActive()) ReefAngel.Relay.On(Port1); else ReefAngel.Relay.Off(Port1);
//ATO Protection if (ReefAngel.LowATO.IsActive()) ReefAngel.Relay.On(Port6); else ReefAngel.Relay.Off(Port6);
//Kalk Dose 10pm-11pm if (hour() >=22 || hour() < 23) ReefAngel.Relay.On(Port6); else ReefAngel.Relay.Off(Port6);
ReefAngel.DCPump.UseMemory = true; ReefAngel.DCPump.DaylightChannel = Sync; ReefAngel.DCPump.ActinicChannel = AntiSync; ////// Place your custom code below here
///// Place your custom code below here
// Add random mode if we set to Mode to Custom in portal static int rmode; static boolean changeMode=true;
// These are the modes we can cycle through. You can add more and even repeat... byte modes[] = { Else, Lagoon, ReefCrest, ShortPulse, LongPulse, Gyre, NutrientTransport };
if (now()%SECS_PER_DAY==0 || changeMode==true) { // Change at midnight or if controller rebooted rmode=random(100)%sizeof(modes); // Change the mode once per day to pick from our array changeMode=false; }
// Set timer when in feeding mode static unsigned long feeding; if (ReefAngel.DisplayedMenu==FEEDING_MODE) feeding=now();
if (now()-feeding<900) { // First 15 minutes after feeding mode stops. Return Pump is off ReefAngel.Relay.Off(Port1); // First 15 minutes after feeding mode stops. Smart_NTM ReefAngel.DCPump.UseMemory=false; ReefAngel.DCPump.Mode=NutrientTransport; } else if (now()-feeding<4500) { // 15 minutes plus 1 hour // Continue NTM for the next 60 minutes (75 minutes total) ReefAngel.DCPump.UseMemory=false; ReefAngel.DCPump.Mode=NutrientTransport; } else if (now()%SECS_PER_DAY<30600 || now()%SECS_PER_DAY>=81000) { // 8:30am / 10:30pm // Night mode (go to 30%) ReefAngel.DCPump.UseMemory=false; ReefAngel.DCPump.Mode=Constant; ReefAngel.DCPump.Speed=30; } else if (InternalMemory.DCPumpMode_read()==11) { // Custom Mode and nothing else going on ReefAngel.DCPump.UseMemory=false; ReefAngel.DCPump.Duration=InternalMemory.DCPumpDuration_read(); if (modes[rmode]==Else) { ReefAngel.DCPump.UseMemory=false; ReefAngel.DCPump.Mode=Constant; ReefAngel.DCPump.Speed=ElseMode(InternalMemory.DCPumpSpeed_read(),25,true ); // ElseMode on sync mode, Portal Speed Setting +/- 25% } else { ReefAngel.DCPump.Mode=modes[rmode]; // Put the mode to the random mode :) ReefAngel.DCPump.Speed=InternalMemory.DCPumpSpeed_read(); // Set speed from portal } } else { ReefAngel.DCPump.UseMemory=true; // Will reset all values from memory }
////// Place your custom code above here
// This should always be the last line ReefAngel.Portal( "paulturner911" ); ReefAngel.ShowInterface(); }
void DrawCustomMain() { int x,y; char text[10]; // Dimming Expansion x = 15; y = 2; for ( int a=0;a<6;a++ ) { if ( a>2 ) x = 75; if ( a==3 ) y = 2; ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x,y,"Ch :" ); ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+12,y,a ); ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+24,y,ReefAngel.PWM.GetChannelValue(a) ); y += 10; } pingSerial();
// Parameters #if defined DisplayLEDPWM && ! defined RemoveAllLights ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params, ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() ); #else // defined DisplayLEDPWM && ! defined RemoveAllLights ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params ); #endif // defined DisplayLEDPWM && ! defined RemoveAllLights pingSerial();
// Main Relay Box byte TempRelay = ReefAngel.Relay.RelayData; TempRelay &= ReefAngel.Relay.RelayMaskOff; TempRelay |= ReefAngel.Relay.RelayMaskOn; ReefAngel.LCD.DrawOutletBox( 12, 80, TempRelay ); pingSerial();
// Date and Time ReefAngel.LCD.DrawDate( 6, 122 ); pingSerial(); }
void DrawCustomGraph() { }
I coded this and the ATO should only run from 10pm-11pm in my eyes. BUT, It doesnt seem to function correctly since I just uploaded and its 12.45pm and Port6 is ON. Any help would be great.

|