My CUSTOM Screen

Share you PDE file with our community
Post Reply
CASPAR
Posts: 49
Joined: Wed May 09, 2012 12:24 pm

My CUSTOM Screen

Post by CASPAR »

Hello everyone, just thought I would post a pic of my custom screen I created! Special Thanks to Curt Binders info wich can be found her: http://curtbinder.info/ragen/docs/RA_Cu ... Screen.pdf Also give shout out to Roberto for helping me tweak it a lil.......Thanks!
Attachments
MYMENU.JPG
MYMENU.JPG (49.4 KiB) Viewed 9666 times
Last edited by CASPAR on Wed Oct 10, 2012 10:50 am, edited 1 time in total.
Image
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: My CUSTOM Screen

Post by rimai »

That's super cool, but where is the code? ;)
Roberto.
CASPAR
Posts: 49
Joined: Wed May 09, 2012 12:24 pm

Re: My CUSTOM Screen

Post by CASPAR »

Had to resize my image!! lol here is the code I did: Roberto please put in right format if need be, Thanks

//The following features are enabled for this File:
#define VersionMenu
#define DisplayLEDPWM
#define wifi
#define WDT
#define SIMPLE_MENU
#define NUMBERS_8x16


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

////// Place global variable code below here
void DrawCustomMain()
{
byte x = 6;
byte y = 2;
byte t;
char text[10];

// Parameters
ReefAngel.LCD.DrawDate(6, 2);
ReefAngel.LCD.Clear(COLOR_BLACK, 1, 11, 132, 11);
pingSerial();

ReefAngel.LCD.DrawLargeText(COLOR_GREEN,255,12,16,"!My LiL OCEAN!", Font8x8);
pingSerial();

ReefAngel.LCD.DrawText(COLOR_LAWNGREEN,255, 6, 102, "--------------------");
ReefAngel.LCD.DrawText(COLOR_LAWNGREEN,255, 6, 126, "--------------------");
ReefAngel.LCD.DrawText(COLOR_RED,255,56,110, "ATO");
ReefAngel.LCD.DrawText(COLOR_LAWNGREEN,255, 2, 109, "*");
ReefAngel.LCD.DrawText(COLOR_LAWNGREEN,255, 2, 121, "*");
ReefAngel.LCD.DrawText(COLOR_INDIGO,255, 45, 111, "H");
ReefAngel.LCD.DrawText(COLOR_INDIGO,255, 45, 121, "I");
ReefAngel.LCD.DrawText(COLOR_INDIGO,255, 77, 111, "L");
ReefAngel.LCD.DrawText(COLOR_INDIGO,255, 77, 121, "O");
ReefAngel.LCD.DrawText(COLOR_LAWNGREEN,255, 126, 109, "*");
ReefAngel.LCD.DrawText(COLOR_LAWNGREEN,255, 126, 121, "*");


ReefAngel.LCD.DrawText(COLOR_RED,255,10,30,"TANK");
ConvertNumToString(text, ReefAngel.Params.Temp[T1_PROBE], 10);
ReefAngel.LCD.DrawLargeText(COLOR_PURPLE, 255, 10, 40, text, Num8x16);
pingSerial();

ReefAngel.LCD.DrawText(COLOR_RED,255,100,30,"pH");
ConvertNumToString(text, ReefAngel.Params.PH, 100);
ReefAngel.LCD.DrawLargeText(COLOR_PURPLE, 255, 85, 40, text, Num8x16);
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, 89, TempRelay );
pingSerial();
ReefAngel.LCD.DrawText(COLOR_RED,255,8,58,"CABINET");
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T2_PROBE], COLOR_PURPLE, 15, 68, 10);

ReefAngel.LCD.DrawText(COLOR_RED,255,95,58,"ROOM");
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T3_PROBE], COLOR_PURPLE, 92, 68, 10);

ReefAngel.LCD.DrawText(COLOR_BLACK,255,12,110, "Moon1");
ConvertNumToString(text, ReefAngel.PWM.GetDaylightValue(), 1);
strcat(text,"% ");
ReefAngel.LCD.DrawText(COLOR_RED,255,15,119, text);
//ReefAngel.PWM.GetDaylightValue(),
ReefAngel.LCD.DrawText(COLOR_BLACK,255,88,110, "Moon2");

ConvertNumToString(text, ReefAngel.PWM.GetActinicValue(), 1);
strcat(text,"% ");
ReefAngel.LCD.DrawText(COLOR_RED,255,92,119, text);

if (ReefAngel.HighATO.IsActive())
ReefAngel.LCD.FillCircle(57,122,3,COLOR_RED);
else
ReefAngel.LCD.FillCircle(57,122,3,COLOR_GREEN);

if (ReefAngel.LowATO.IsActive())
ReefAngel.LCD.FillCircle(70,122,3,COLOR_RED);
else
ReefAngel.LCD.FillCircle(70,122,3,COLOR_GREEN);

//ReefAngel.PWM.GetActinicValue());

//ReefAngel.LCD.DrawMonitor(15, 60, ReefAngel.Params,
//ReefAngel.PWM.GetDaylightValue(),
//ReefAngel.PWM.GetActinicValue());

}
void DrawCustomGraph()
{
}


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


void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.AddDateTimeMenu();
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port3Bit |Port4Bit | Port7Bit | Port8Bit;
ReefAngel.FeedingModePortsE[0] = Port8Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port3Bit | Port4Bit| Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.WaterChangePortsE[0] = Port8Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
ReefAngel.LightsOnPortsE[0] = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port8Bit;
ReefAngel.OverheatShutoffPortsE[0] = 0;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 795 );


// Ports that are always on
ReefAngel.Relay.On( Port4 );
ReefAngel.Relay.On( Port7 );
ReefAngel.Relay.On( Box1_Port1 );
ReefAngel.Relay.On( Box1_Port2 );
ReefAngel.Relay.On( Box1_Port3 );
ReefAngel.Relay.On( Box1_Port4 );
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.StandardHeater( Port8,779,780 );
ReefAngel.StandardLights( Port1,19,0,11,0 );
ReefAngel.StandardLights( Port2,11,0,19,0 );
if (ReefAngel.HighATO.IsActive())
ReefAngel.SingleATO( true,Port3,60,0 );
else
ReefAngel.Relay.Off( Port3 );

ReefAngel.Relay.DelayedOn( Port4,3 );
ReefAngel.Relay.DelayedOn( Port7,5 );
ReefAngel.Relay.DelayedOn( Box1_Port8,5 );
ReefAngel.LCD.BacklightOn();
ReefAngel.WavemakerRandom1( Port5,15,45 );
ReefAngel.WavemakerRandom2( Port6,30,90 );
MyCustomWavemakerRandom1( Box1_Port5,30,60 );
MyCustomWavemakerRandom2( Box1_Port6,75,90 );
if (hour()>=19 || hour()<11)
ReefAngel.PWM.SetDaylight( MoonPhase() );
else
ReefAngel.PWM.SetDaylight( 0 );

ReefAngel.PWM.SetActinic( CustomSlope(19,0,15,100,960) );
////// Place your custom code below here


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

// This should always be the last line
ReefAngel.Portal( "CASPAR" );
ReefAngel.ShowInterface();
}
byte CustomSlope(byte startHour, byte startMinute, byte startPWM, byte endPWM, long Duration)
{

unsigned long Start = previousMidnight(now())+((unsigned long)NumMins(startHour, startMinute)*60);
if (hour()<startHour) Start-=86400;
unsigned long StartD = Start + (Duration*60);
if ( now() >= Start && now() <= StartD )
return constrain(map(now(), Start, StartD, startPWM, endPWM),startPWM, endPWM);
// lastly return the existing value
return 0;
}



int x,y;
char text[10];
// Parameters
#if defined DisplayLEDPWM && ! defined RemoveAllLights


#else // defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 62, ReefAngel.Params );
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights


// Main Relay Box
byte TempRelay = ReefAngel.Relay.RelayData;





// Relay Expansion





// Date and Time









void MyCustomWavemakerRandom1(byte WMRelay, int MinWMTimer, int MaxWMTimer)
{
static time_t MyWMRTimer1=now()+MinWMTimer;
if (now()>MyWMRTimer1)
{
MyWMRTimer1=now()+random(MinWMTimer, MaxWMTimer);
ReefAngel.Relay.Toggle(WMRelay);
}
}

void MyCustomWavemakerRandom2(byte WMRelay, int MinWMTimer, int MaxWMTimer)
{
static time_t MyWMRTimer2=now()+MinWMTimer;
if (now()>MyWMRTimer2)
{
MyWMRTimer2=now()+random(MinWMTimer, MaxWMTimer);
ReefAngel.Relay.Toggle(WMRelay);
}
}
Image
CASPAR
Posts: 49
Joined: Wed May 09, 2012 12:24 pm

Re: My CUSTOM Screen

Post by CASPAR »

Now if there was a way to change the whole background color of the screen that would be awesome!!!!
Image
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: My CUSTOM Screen

Post by rimai »

Next library update
Roberto.
CASPAR
Posts: 49
Joined: Wed May 09, 2012 12:24 pm

Re: My CUSTOM Screen

Post by CASPAR »

And this is one of my tanks mounted in-wall....
Attachments
TANK.JPG
TANK.JPG (109.77 KiB) Viewed 9665 times
Image
dbmet
Posts: 235
Joined: Thu Nov 10, 2011 11:49 am

Re: My CUSTOM Screen

Post by dbmet »

Thats sweet.. Any idea on which parts I would need if I didn't have the expansion box and wanted everything else like this especially the ATO Part..
Image
dbmet
Posts: 235
Joined: Thu Nov 10, 2011 11:49 am

Re: My CUSTOM Screen

Post by dbmet »

Nevermind I got it.. Very Cool Thanks for sharing.. Wifes gonna start wondering why I'm always next to the aquarium with a laptop? Lol
Image
binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: My CUSTOM Screen

Post by binder »

That's a pretty nice little screen you created there. Good job. Glad my document was helpful for you. :)
CASPAR
Posts: 49
Joined: Wed May 09, 2012 12:24 pm

Re: My CUSTOM Screen

Post by CASPAR »

All thanks to Curt and Roberto.........
Image
dnastynice
Posts: 16
Joined: Sun Oct 07, 2012 8:53 am
Location: columbus GA

Re: My CUSTOM Screen

Post by dnastynice »

looking great man. I may need you to make me a custom screen 8)
Post Reply