Help reduce size

Do you have a question on how to do something.
Ask in here.
Post Reply
agentgreen
Posts: 97
Joined: Wed Jul 06, 2011 6:45 am

Help reduce size

Post by agentgreen »

So it's been a while since I updated my RA, and I used the wizard to generate new code, and then modified it to be more like my old code. However, I'm oversized:

Binary sketch size: 32,406 bytes (of a 32,256 byte maximum)

Can someone help me trim this down 150 bytes haha.

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


////// 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 | Port5Bit | Port6Bit | Port7Bit;
    ReefAngel.FeedingModePortsE[0] = Port1Bit | Port2Bit | Port6Bit;
    // Ports toggled in Water Change Mode
    ReefAngel.WaterChangePorts = Port4Bit | Port5Bit | Port6Bit | Port7Bit;
    ReefAngel.WaterChangePortsE[0] = Port1Bit | Port2Bit | Port6Bit | Port7Bit | Port8Bit;
    // Ports toggled when Lights On / Off menu entry selected
    ReefAngel.LightsOnPorts = Port8Bit;
    ReefAngel.LightsOnPortsE[0] = Port3Bit;
    // Ports turned off when Overheat temperature exceeded
    ReefAngel.OverheatShutoffPorts = Port8Bit;
    ReefAngel.OverheatShutoffPortsE[0] = Port3Bit | Port7Bit | Port8Bit;
    // Use T1 probe as temperature and overheat functions
    ReefAngel.TempProbe = T1_PROBE;
    ReefAngel.OverheatProbe = T2_PROBE;


    // Ports that are always on
    ReefAngel.Relay.On( Port4 );
    ReefAngel.Relay.On( Port5 );
    ReefAngel.Relay.On( Port6 );
    ReefAngel.Relay.On( Port7 );
    ReefAngel.Relay.On( Box1_Port1 );
    ReefAngel.Relay.On( Box1_Port6 );

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

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

void loop()
{
    ReefAngel.DayLights( Port8 );
    ReefAngel.Relay.Set( Box1_Port3, !ReefAngel.Relay.Status( Port8 ) );
    ReefAngel.StandardHeater( Box1_Port7 );
    ReefAngel.StandardHeater( Box1_Port8 );
    ReefAngel.PWM.SetDaylight( MoonPhase() );
    ReefAngel.PWM.SetActinic( MoonPhase() );
    ////// Place your custom code below here
    // Turn on Port 3 when the temp of T2 gets above 80.0 degrees
    if ( ReefAngel.Params.Temp[T2_PROBE] >= 800 ) ReefAngel.Relay.On(Port3);
    // Turn off Port 3 when the temp of T2 gets below 80.0 degrees
    if ( ReefAngel.Params.Temp[T2_PROBE] < 780 ) ReefAngel.Relay.Off(Port3);

    // Only turn on ATO and Koralia 8 for 20 minutes every hour.
    if (minute()<=20)
    {
      ReefAngel.Relay.On(Box1_Port4);
    } else {
      ReefAngel.Relay.Off(Box1_Port4);
    }
    ////// Place your custom code above here

    // This should always be the last line
    ReefAngel.Portal( "agentgreen", "" );
    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();

    // pH Expansion
    ReefAngel.LCD.DrawText( COLOR_MEDIUMSEAGREEN,DefaultBGColor,15,54, "PHE:" );
    ReefAngel.LCD.DrawSingleMonitor( ReefAngel.Params.PHExp,COLOR_DARKKHAKI,39,54, 100 );    
    pingSerial();

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

    // Relay Expansion
    TempRelay = ReefAngel.Relay.RelayDataE[0];
    TempRelay &= ReefAngel.Relay.RelayMaskOffE[0];
    TempRelay |= ReefAngel.Relay.RelayMaskOnE[0];
    ReefAngel.LCD.DrawOutletBox( 12, 97, TempRelay );
    pingSerial();

    // Date and Time
    ReefAngel.LCD.DrawDate( 6, 122 );
    pingSerial();
}

void DrawCustomGraph()
{
    ReefAngel.LCD.DrawGraph( 5, 5 );
}

Last edited by agentgreen on Thu May 09, 2013 7:02 pm, edited 1 time in total.
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: Help reduce size

Post by rimai »

Do you have the ph expansion module?
Roberto.
agentgreen
Posts: 97
Joined: Wed Jul 06, 2011 6:45 am

Re: Help reduce size

Post by agentgreen »

rimai wrote:Do you have the ph expansion module?
I do not.
binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Post by binder »

you could get rid of those extra pingSerial() calls in the DrawCustomMain. you really only need one at the end of the function.
it may not make a huge difference but every little bit helps.
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: Help reduce size

Post by rimai »

Remove this and it will fit:

Code: Select all

    // pH Expansion
    ReefAngel.LCD.DrawText( COLOR_MEDIUMSEAGREEN,DefaultBGColor,15,54, "PHE:" );
    ReefAngel.LCD.DrawSingleMonitor( ReefAngel.Params.PHExp,COLOR_DARKKHAKI,39,54, 100 );    
    pingSerial();
Roberto.
agentgreen
Posts: 97
Joined: Wed Jul 06, 2011 6:45 am

Re: Help reduce size

Post by agentgreen »

rimai wrote:Remove this and it will fit:

Code: Select all

    // pH Expansion
    ReefAngel.LCD.DrawText( COLOR_MEDIUMSEAGREEN,DefaultBGColor,15,54, "PHE:" );
    ReefAngel.LCD.DrawSingleMonitor( ReefAngel.Params.PHExp,COLOR_DARKKHAKI,39,54, 100 );    
    pingSerial();
That worked, thanks! Must have mis-clicked in the wizard.
Post Reply