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 <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
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port5Bit | Port8Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port5Bit | Port8Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = Port2Bit | Port3Bit | Port4Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port7Bit;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 840 );
// Feeeding and Water Change mode speed
// ReefAngel.DCPump.FeedingSpeed=25;
// ReefAngel.DCPump.WaterChangeSpeed=25;
// Ports that are always on
ReefAngel.Relay.On( Port5 );
ReefAngel.Relay.On( Port6 );
ReefAngel.Relay.On( Port8 );
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.StandardATO( Port1,5000 );
ReefAngel.StandardLights( Port2,7,0,0,0 );
ReefAngel.StandardLights( Port3,7,0,22,0 );
ReefAngel.StandardLights( Port4,11,0,23,0 );
ReefAngel.StandardHeater( Port7,780,790 );
ReefAngel.PWM.SetChannel( 0, PWMSlope(7,0,23,0,0,100,90,0) );
ReefAngel.PWM.SetChannel( 1, PWMParabola(10,0,22,0,0,100,0) );
ReefAngel.PWM.SetChannel( 2, PWMParabola(8,30,20,0,0,100,0) );
ReefAngel.PWM.SetChannel( 3, PWMSlope(7,30,22,30,0,100,90,0) );
//Feed Mode Delay on Pump
static boolean feeding=false;
static unsigned long feedingstarted = now();
if (ReefAngel.DisplayedMenu==FEEDING_MODE)
{
if (!feeding)
{
feeding=true;
feedingstarted = now();
}
} else {
feeding=false;
}
///// Place your custom code below here
//IDK Rimai Posted
#define Mem_B_RFMode VarsStart+55
// Read memory for RF Wave Settings and use for Tunze/Jaebo
int mode; //=InternalMemory.RFMode_read();
int speed=InternalMemory.RFSpeed_read();
int duration=InternalMemory.RFDuration_read();
// Add random mode if we set to Mode to 12
static int rmode;
if (now()%1800==0) {
rmode=random(7); // Change the mode twice per hour to modes 0-6
}
static int RSpeed;
if (now()%900==0) {
RSpeed = random(40,75);
}
else if(RSpeed==0){
RSpeed = 80;
}
int DurMS;
int DurS;
if (now()%900==0) {
DurMS=random(250,500);
}
if (now()%900==0) {
DurS=random(2,15);
}
if (rmode==6) {
// Constant
ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( Constant,RSpeed,10 );
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
}
else if (rmode==1) {
// Lagoon
ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( Lagoon,RSpeed,10 );
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
} else if (rmode==2) {
// Reef Crest
ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( ReefCrest,RSpeed,10 );
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
} else if (rmode==3) {
// Short Pulse
ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( ShortPulse,RSpeed,DurMS );
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
} else if (rmode==0) {
// Long Pulse
ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( LongPulse,RSpeed,DurS );
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
} else if (rmode==5) {
// Tidal Swell
ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( TidalSwell,RSpeed,10 );
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
} else if (rmode==4) {
// Smart_NTM
ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( NutrientTransport,RSpeed,250 );
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
}
// Add night mode (constant 30%)
if (now()%SECS_PER_DAY<30600 || now()%SECS_PER_DAY >=81000) { // Time is before 8:30am and after 10:30pm
// Long Pulse
ReefAngel.PWM.SetDaylight( LongPulseMode(0,40,20,true) );
ReefAngel.PWM.SetActinic( LongPulseMode(0 ,40,5,false) );
}
////// Place your custom code above here
// This should always be the last line
// This should always be the last line
ReefAngel.Portal( "Bruz4023" );
ReefAngel.ShowInterface();
}