JerkyJunky's Starter Screen
Posted: Fri Nov 16, 2012 6:37 pm
Been a fun couple days programming in a new screen for my RA. Here is what I have so far:
http://i.imgur.com/9UVk9.jpg
The wavemaker stuff is filler until I get an actual unit, but the rest is legit. Here is the code:
Now to add in the cloud logic, the sunrise by location code, the ATO controls, and the heater settings. WHEW! Going to be a fun weekend.
http://i.imgur.com/9UVk9.jpg
The wavemaker stuff is filler until I get an actual unit, but the rest is legit. Here is the 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
#define FONT_8x16
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.AddStandardMenu(); // Add Standard Menu
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port5Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port5Bit | Port8Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = 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( 800 );
// Ports that are always on
ReefAngel.Relay.On( Port5 );
ReefAngel.Relay.On( Port6 );
ReefAngel.Relay.On( Port7 );
ReefAngel.Relay.On( Port8 );
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.StandardLights( Port1,19,45,8,15 );
ReefAngel.StandardLights( Port3,19,59,8,1 );
ReefAngel.StandardLights( Port4,7,59,20,1 );
ReefAngel.PWM.SetDaylight( PWMSlope(8,0,20,0,15,100,60,0) );
ReefAngel.PWM.SetActinic( PWMSlope(20,0,8,0,15,100,60,0) );
////// Place your custom code below here
////// Place your custom code above here
// This should always be the last line
ReefAngel.ShowInterface();
}
void DrawCustomMain()
{
byte offset = 3;
byte waterLevel = ReefAngel.WaterLevel.GetLevel();
byte dispLights = ReefAngel.PWM.GetDaylightValue();
byte sumpLights = ReefAngel.PWM.GetActinicValue();
byte TempRelay = ReefAngel.Relay.RelayData;
byte atoPort = 3;
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
char text[10];
// Header = Title + Date and Time
ReefAngel.LCD.DrawText(COLOR_GREEN, DefaultBGColor, 15, offset, "JerkyJunky's Reef");
ReefAngel.LCD.DrawDate(6, offset + 10);
ReefAngel.LCD.Clear(COLOR_GREEN, 1, offset + 20, 128, offset + 20);
offset = 26;
pingSerial();
// Main Relay Box & Parameters
ReefAngel.LCD.DrawCircleOutletBoxHorizontal(2, offset, TempRelay);
ReefAngel.LCD.DrawText(COLOR_BLACK, DefaultBGColor, 50, offset, "Temp:");
ConvertNumToString(text, ReefAngel.Params.Temp[T1_PROBE], 10);
ReefAngel.LCD.DrawLargeText(COLOR_PURPLE, 255, 49, offset + 9, text, Font8x16);
ReefAngel.LCD.DrawText(COLOR_BLACK, DefaultBGColor, 101, offset, "pH:");
ConvertNumToString(text, ReefAngel.Params.PH, 100);
ReefAngel.LCD.DrawLargeText(COLOR_ORANGE, 255, 93, offset + 9, text, Font8x16);
ReefAngel.LCD.Clear(COLOR_GREEN, 1, offset + 23, 128, offset + 23);
offset = offset + 27;
pingSerial();
// Lights
if (dispLights > 0)
ReefAngel.LCD.DrawText(COLOR_GREEN, DefaultBGColor, 10, offset, "Display");
else
ReefAngel.LCD.DrawText(COLOR_RED, DefaultBGColor, 10, offset, "Display");
if (sumpLights > 0)
ReefAngel.LCD.DrawText(COLOR_GREEN, DefaultBGColor, 72, offset, "Refugium");
else
ReefAngel.LCD.DrawText(COLOR_RED, DefaultBGColor, 72, offset, "Refugium");
ConvertNumToString(text, dispLights, 1);
strcat(text, "%");
ReefAngel.LCD.DrawLargeText(COLOR_BLUE, DefaultBGColor, 15, offset + 9, text, Font8x16);
ConvertNumToString(text, sumpLights, 1);
strcat(text, "%");
ReefAngel.LCD.DrawLargeText(COLOR_BLUE, DefaultBGColor, 95, offset + 9, text, Font8x16);
ReefAngel.LCD.Clear(COLOR_GREEN, 1, offset + 24, 128, offset + 24);
offset = offset + 27;
pingSerial();
// Water Level & ATO
if (waterLevel >= 100)
{
ReefAngel.LCD.DrawText(COLOR_BLUE, DefaultBGColor, 5, offset, "Tank Level");
ReefAngel.LCD.DrawLargeText(COLOR_BLUE, DefaultBGColor, 25, offset + 9, "Full", Font8x16);
}
else if (waterLevel >= 50)
{
ReefAngel.LCD.DrawText(COLOR_ORANGE, DefaultBGColor, 5, offset, "Tank Level");
ConvertNumToString(text, waterLevel, 1);
strcat(text, "%");
ReefAngel.LCD.Clear(DefaultBGColor, 1, offset + 9, 128, offset + 18);
ReefAngel.LCD.DrawLargeText(COLOR_ORANGE, DefaultBGColor, 25, offset + 9, text, Font8x16);
}
else
{
ReefAngel.LCD.DrawText(COLOR_RED, DefaultBGColor, 5, offset, "Tank Level");
ConvertNumToString(text, waterLevel, 1);
strcat(text, "%");
ReefAngel.LCD.DrawLargeText(COLOR_RED, DefaultBGColor, 25, offset + 9, text, Font8x16);
}
ReefAngel.LCD.DrawText(COLOR_BLACK, DefaultBGColor, 70, offset + 2, "ATO:");
if (ReefAngel.LowATO.IsActive())
{
ReefAngel.LCD.DrawText(COLOR_GREEN, DefaultBGColor, 95, offset + 2, "Avail");
}
else
{
ReefAngel.LCD.DrawText(COLOR_RED, DefaultBGColor, 95, offset + 2, "Empty");
}
ReefAngel.LCD.DrawText(COLOR_BLACK, DefaultBGColor, 72, offset + 12, "Pump:");
if ((TempRelay&(1<<(atoPort - 1)))==1<<(atoPort - 1))
{
ReefAngel.LCD.Clear(DefaultBGColor, 102, offset + 12, 128, offset + 21);
ReefAngel.LCD.DrawText(COLOR_GREEN, DefaultBGColor, 102, offset + 12, "On");
}
else
{
ReefAngel.LCD.DrawText(COLOR_RED, DefaultBGColor, 102, offset + 12, "Off");
}
ReefAngel.LCD.Clear(COLOR_GREEN, 1, offset + 24, 128, offset + 24);
offset = offset + 27;
pingSerial();
// Wavemaker
ReefAngel.LCD.DrawText(COLOR_BLACK, DefaultBGColor, 8, offset, "Vortech Mode");
ReefAngel.LCD.DrawText(COLOR_BLACK, DefaultBGColor, 95, offset, "Speed");
ReefAngel.LCD.DrawLargeText(COLOR_ORANGE, DefaultBGColor, 5, offset + 9, "Reef Crest", Font8x16);
ReefAngel.LCD.DrawLargeText(COLOR_GREEN, DefaultBGColor, 98, offset + 9, "XX%", Font8x16);
}
void DrawCustomGraph()
{
}