work in progress

Share you PDE file with our community
Post Reply
fwadiver
Posts: 37
Joined: Fri Oct 19, 2012 9:00 am

work in progress

Post by fwadiver »

Well still working on it but here is what i have so far, mainly still trying to tweak the custom main. It was lifted from several forum members and i'm sill tweaking it.

While i'm fine with the dosing every hour or 2 hours for calcium I would like to set it up so it only doses alk between midnight and 9am to help balance ph swings. I have the brs dosers which at 1.1ml a min are very slow so i dont really need to break up my dosing so much.

Also am working on code for nutrient transport mode, i have seen the examples where people put it on right after feeding mode ends, but i would like to wait 30 mins after feeding, then do NT mode so that LPS has a chance to digest its food before the vortechs blow it away from them

Only other plan i have is to get the water level expansion and use it to implement an automatic water change as follows:

start water change mode (return pump and skimmer off)
wait 5 mins for sump level to stabilize with pumps off
read value of water level using expansion, store to variable
turn on water removal pump into bucket with float switch
when float switch activates shut off removal pump
start new water pump to add fresh salt water
when water level expansion level = water level variable stored before removal started turn off new water pump
exit water change mode

here is my ino/pde code

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 <ReefAngel.h>

////// Place global variable code below here
 byte vtechmode;

////// Place global variable code above here


void setup()
{
    // This must be the first line
    ReefAngel.Init();  //Initialize controller
    // Ports toggled in Feeding Mode (return, skimmer and closed loop pumps)
    ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port6Bit;
    ReefAngel.FeedingModePortsE[0] = Port1Bit;
    // Ports toggled in Water Change Mode (return and skimmer)
    ReefAngel.WaterChangePorts = Port1Bit | Port2Bit;
    ReefAngel.WaterChangePortsE[0] = 0;
        // Ports turned off when Overheat temperature exceeded (turn off daylights leave actinics on)
    ReefAngel.OverheatShutoffPorts = Port4Bit;
    ReefAngel.OverheatShutoffPortsE[0] = 0;
    // Use T2 probe as temperature and overheat functions (T2 is display tank temp
    ReefAngel.TempProbe = T2_PROBE;
    ReefAngel.OverheatProbe = T2_PROBE;


    // Ports that are always on
    ReefAngel.Relay.On( Port1 );
    ReefAngel.Relay.On( Port6 );
    ReefAngel.Relay.On( Box1_Port1 );
    ReefAngel.Relay.On( Box1_Port6 );
    ReefAngel.Relay.On( Box1_Port7 );
    ReefAngel.Relay.On( Box1_Port8 );

    ////// Place additional initialization code below here
    

    ////// Place additional initialization code above here
}

void loop()
{
    ReefAngel.Relay.DelayedOn( Port2 );//skimmer
    ReefAngel.ActinicLights( Port3 );
    ReefAngel.DayLights( Port4 );
    ReefAngel.StandardHeater( Port5 );//sump heater
    ReefAngel.MoonLights( Port7 );//moonlights
    ReefAngel.MoonLights( Port8 );//fuge light
    ReefAngel.StandardHeater( Box1_Port2 );//display heater
    ReefAngel.StandardFan( Box1_Port3 );//cooling fan
    ReefAngel.DosingPumpRepeat1( Box1_Port4 );//alk doser
    ReefAngel.DosingPumpRepeat2( Box1_Port5 );//cal doser
    ReefAngel.RF.UseMemory = true;
    ////// Place your custom code below here
    
    //sets nightmode on vortech pumps
    if ( (hour() >= 23) || (hour() <= 11) )  // from 11p - 11a
      {
          ReefAngel.RF.UseMemory=false;
          ReefAngel.RF.SetMode(Night,15,0);
          vtechmode = 9;
        }
   else
      {
          ReefAngel.RF.UseMemory=true;
          vtechmode = InternalMemory.RFMode_read();
         }

    ////// Place your custom code above here

    // This should always be the last line
    ReefAngel.Portal( "fwadiver" );
    ReefAngel.ShowInterface();
}

void DrawCustomMain()
{
      byte x = 6;
      byte y = 2;
      byte t;
      char text[7];
    // Parameters
    // Date and Time
      ReefAngel.LCD.DrawDate(6, 2);
      ReefAngel.LCD.Clear(COLOR_BLACK, 1, 11, 132, 11);
      pingSerial();
      
 
      
      //vortech Display
      
       ReefAngel.LCD.DrawText(0,255,18,12,"EcoSmart Vortech");
      if (vtechmode == 0) ReefAngel.LCD.DrawLargeText(COLOR_LIMEGREEN,255,35,22,"Constant");
      else if(vtechmode == 1) ReefAngel.LCD.DrawLargeText(COLOR_GOLD,255,42,21,"Lagoon");
      else if (vtechmode == 2) ReefAngel.LCD.DrawLargeText(COLOR_GOLD,255,25,21,"Reef Crest");
      else if (vtechmode == 3) ReefAngel.LCD.DrawLargeText(COLOR_CORNFLOWERBLUE,255,22,21,"Short Pulse");
      else if (vtechmode == 4) ReefAngel.LCD.DrawLargeText(COLOR_PINK,255,25,21,"Long Pulse");
      else if (vtechmode == 5) ReefAngel.LCD.DrawLargeText(COLOR_MAGENTA,255,8,21,"Nutrient Trnsp.");
      else if (vtechmode == 6) ReefAngel.LCD.DrawLargeText(COLOR_MAGENTA,255,23,21,"Tidal Swell");
      else if (vtechmode == 9) ReefAngel.LCD.DrawLargeText(COLOR_WHITE,0,45,21,"Night");
 
   
    ReefAngel.LCD.DrawText(0,255,10,30,"Display");
      ConvertNumToString(text, ReefAngel.Params.Temp[T3_PROBE], 10);
      ReefAngel.LCD.DrawLargeText(COLOR_INDIANRED, 255, 10, 40, text, Num8x8);
      pingSerial();

      ReefAngel.LCD.DrawText(0,255,100,30,"pH");
      ConvertNumToString(text, ReefAngel.Params.PH, 100);
      ReefAngel.LCD.DrawLargeText(COLOR_PLUM, 255, 85, 40, text, Num8x8);
      pingSerial();

      ReefAngel.LCD.DrawText(0,255,43,48,"Salinity");
      ConvertNumToString(text, ReefAngel.Params.Salinity, 100);
      ReefAngel.LCD.DrawLargeText(COLOR_LIMEGREEN, 255, 49, 58, text, Num8x8);
      pingSerial();


    // Main Relay Box
      byte TempRelay = ReefAngel.Relay.RelayData;
      TempRelay &= ReefAngel.Relay.RelayMaskOff;
      TempRelay |= ReefAngel.Relay.RelayMaskOn;
      ReefAngel.LCD.DrawOutletBox(12, 77, TempRelay);
    pingSerial();

    // Relay Expansion
    TempRelay = ReefAngel.Relay.RelayDataE[0];
    TempRelay &= ReefAngel.Relay.RelayMaskOffE[0];
    TempRelay |= ReefAngel.Relay.RelayMaskOnE[0];
    ReefAngel.LCD.DrawOutletBox( 12, 100, TempRelay );
    pingSerial();
    
    
     ReefAngel.LCD.DrawText(0,255,8,68,"Sump");
     ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T1_PROBE], COLOR_CORNFLOWERBLUE, 40, 68, 10);

     ReefAngel.LCD.DrawText(0,255,70,68,"Room");
     ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T2_PROBE], COLOR_CORNFLOWERBLUE, 99, 68, 10);
  
  
}

void DrawCustomGraph()
{
}
fwadiver
Posts: 37
Joined: Fri Oct 19, 2012 9:00 am

Re: work in progress

Post by fwadiver »

Well noticed my first glitch,

when vortechs go into night mode, you can still see tidal swell written underneath.
Post Reply