Page 1 of 1

Reef Angel Graphs

Posted: Mon Sep 17, 2012 5:38 am
by williet
Hi All

Has anyone played with the graph on Reefangel ?

Can you add a scale to it ? Also What does the default on display?
I think mine does PH at the moment could I like add temperature as well ?

Re: Reef Angel Graphs

Posted: Mon Sep 17, 2012 8:26 am
by rimai
Which graphs?
Portal or head unit LCD screen?

Re: Reef Angel Graphs

Posted: Mon Sep 17, 2012 10:28 am
by williet
Hi Roberto

The HeadUnit LCD Screen?

Re: Reef Angel Graphs

Posted: Mon Sep 17, 2012 10:55 am
by rimai
You will need to draw up your own graph if you want to change anything.
There is no much you can do with it :(
But it should display all 3 temps and pH on the same graph. Each one is color coded by the same color the numbers are displaying too.
Have you tried using the Portal charts?
This is mine: http://forum.reefangel.com/status/chart ... =reefangel

Re: Reef Angel Graphs

Posted: Mon Sep 17, 2012 12:19 pm
by jsclownfish
I have added custom menu's to move the graphs off the main screen. In that case I have a "pH Details" and a "Temp Details" screen which seperates out the two graphs. I have thought about making graphs for my flow meters as well on a detail menu option, but I don't really understand how the pointers work for that data.

Here is my custom menu code if you want to try something like that...

Code: Select all

void MenuEntry4()  //pH detail screen with 24 hr. max/min, time stamps, and graph
{
ReefAngel.ClearScreen(DefaultBGColor);
ReefAngel.LCD.DrawText(PHColor,DefaultBGColor, 5, 13,"PH:");
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.PH, 0, 36, 13, 100);
ReefAngel.LCD.DrawText(PHColor,DefaultBGColor,5, 23,"HI:");
ReefAngel.LCD.DrawSingleMonitor(maxPH, 0, 23, 23, 100);
ReefAngel.LCD.DrawText(PHColor,DefaultBGColor, 48, 23,"at");
ReefAngel.LCD.DrawText(PHColor,DefaultBGColor, 5, 33,"LO:"); 
ReefAngel.LCD.DrawSingleMonitor(minPH, 0, 23, 33, 100);
ReefAngel.LCD.DrawText(PHColor,DefaultBGColor, 48, 33,"at");
DrawTime(60,23,0, COLOR_WHITE,PHmax);
DrawTime(60,33,0,COLOR_WHITE, PHmin);
ReefAngel.LCD.Clear(DefaultBGColor,0,75,131,125);
ReefAngel.LCD.Clear(DefaultFGColor,1,75,1,125);
    for (byte i=6; i<=131; i+=3)
    {
        ReefAngel.LCD.PutPixel(GraphDotLineColor, i, 100);
    }
ReefAngel.LCD.DrawSingleGraph(PHColor,1,75,InternalMemory.T1Pointer_read()+360);
pingSerial();
bool bDone = false;
do
{
// wait indefinitely for a button press
wdt_reset();
delay(200);
if ( ReefAngel.Joystick.IsButtonPressed() )
{
bDone = true;
}
} while ( ! bDone );
ReefAngel.DisplayedMenu = ALT_SCREEN_MODE;

}
void MenuEntry5()  //Temperature detail screen with sump and room temp, 24 hr. max/min, time stamps, and graph
{
ReefAngel.ClearScreen(DefaultBGColor);
ReefAngel.LCD.DrawText(T1TempColor,DefaultBGColor,5,13,"TANK:");
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T1_PROBE], COLOR_BLACK, 36, 13, 10);
ReefAngel.LCD.DrawText(T1TempColor,DefaultBGColor,5,23,"HI:");
ReefAngel.LCD.DrawSingleMonitor(maxTemp, 0, 23, 23, 10);
ReefAngel.LCD.DrawText(T1TempColor,DefaultBGColor,48,23,"at");
ReefAngel.LCD.DrawText(T1TempColor,DefaultBGColor,5,33,"LO:");
ReefAngel.LCD.DrawSingleMonitor(minTemp, 0, 23, 33, 10);
ReefAngel.LCD.DrawText(T1TempColor,DefaultBGColor,48,33,"at");
ReefAngel.LCD.DrawText(T2TempColor,DefaultBGColor, 5 ,43,"R00M:");
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T2_PROBE], COLOR_BLACK, 36, 43, 10);
ReefAngel.LCD.DrawText(T3TempColor,DefaultBGColor, 5, 53,"SUMP:");
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T3_PROBE], COLOR_BLACK, 36, 53, 10);
DrawTime(60,23,0, COLOR_WHITE,tsmax);
DrawTime(60,33,0,COLOR_WHITE, tsmin);
    ReefAngel.LCD.Clear(DefaultBGColor,0,75,131,125);
    ReefAngel.LCD.Clear(DefaultFGColor,1,75,1,125);
    for (byte i=6; i<=131; i+=3)
    {
        ReefAngel.LCD.PutPixel(GraphDotLineColor, i, 100);
    }
ReefAngel.LCD.DrawSingleGraph(T1TempColor,1,75,InternalMemory.T1Pointer_read());
ReefAngel.LCD.DrawSingleGraph(T2TempColor,1,75,InternalMemory.T1Pointer_read()+120);
ReefAngel.LCD.DrawSingleGraph(T3TempColor,1,75,InternalMemory.T1Pointer_read()+240);
pingSerial();
bool bDone = false;
do
{
// wait indefinitely for a button press
wdt_reset();
delay(200);
if ( ReefAngel.Joystick.IsButtonPressed() )
{
bDone = true;
}
} while ( ! bDone );
ReefAngel.DisplayedMenu = ALT_SCREEN_MODE;
}
There is also some stuff about timestamoing the max and min readings if you would like me to post that code as well.

-Jon