help with menu
Posted: Sat Sep 21, 2013 4:07 pm
I am having problems getting my menu to work. Please help. My snipped code is as follows:
What am I doing wrong? Thx in advance!!
Code: Select all
// Custom Menu
#include <avr/pgmspace.h>
prog_char menu0_label[] PROGMEM = "Turn Lights On";
prog_char menu1_label[] PROGMEM = "Turn Lights Off";
prog_char menu2_label[] PROGMEM = "Start Feeding";
prog_char menu3_label[] PROGMEM = "Start Water Change";
prog_char menu4_label[] PROGMEM = "Clear Overheat";
prog_char menu5_label[] PROGMEM = "Calibrate pH";
prog_char menu6_label[] PROGMEM = "Calibrate Salinity";
PROGMEM const char *menu_items[] = {
menu0_label, menu1_label, menu2_label, menu3_label, menu4_label, menu5_label, menu6_label };
void MenuEntry1()
{
ReefAngel.DisplayMenuEntry("Item 1");ReefAngel.Relay.RelayMaskOn = ReefAngel.LightsOnPorts;
#ifdef RelayExp
for ( byte i = 0; i < MAX_RELAY_EXPANSION_MODULES; i++ )
{
ReefAngel.Relay.RelayMaskOnE[i] = ReefAngel.LightsOnPortsE[i];
}
#endif // RelayExp
ReefAngel.Relay.Write();
}
void MenuEntry2()
{
ReefAngel.DisplayMenuEntry("Item 2");ReefAngel.Relay.RelayMaskOn = 0;
#ifdef RelayExp
for ( byte i = 0; i < MAX_RELAY_EXPANSION_MODULES; i++ )
{
ReefAngel.Relay.RelayMaskOnE[i] = 0;
}
#endif // RelayExp
ReefAngel.Relay.Write();
}
void MenuEntry3()
{
ReefAngel.DisplayMenuEntry("Item 3");ReefAngel.FeedingModeStart();
}
void MenuEntry4()
{
ReefAngel.DisplayMenuEntry("Item 4");ReefAngel.WaterChangeModeStart();
}
void MenuEntry5()
{
ReefAngel.DisplayMenuEntry("Item 5");ReefAngel.OverheatClear();
}
void MenuEntry6()
{
ReefAngel.DisplayMenuEntry("Item 6");ReefAngel.SetupCalibratePH();
ReefAngel.DisplayedMenu = ALT_SCREEN_MODE;
}
void MenuEntry7()
{
ReefAngel.DisplayMenuEntry("Item 7");ReefAngel.SetupCalibrateSalinity();
}
// End Custom Menu Globals
// Define Relay Ports by Name
#define DT_LightsOne 1
#define DT_LightsTwo 2
#define Unused3 3
#define Unused4 4
#define DT_LWM 5
#define GT_LWM 6
#define Unused7 7
#define Unused8 8
#define Unused11 Box1_Port1
#define Unused12 Box1_Port2
#define GT_LightsOne Box1_Port3
#define GT_LightsTwo Box1_Port4
#define DT_RWM Box1_Port5
#define GT_RWM Box1_Port6
#define DT_Heat Box1_Port7
#define DT_Pump Box1_Port8
#define RV_Heat Box2_Port1
#define RV_Pump Box2_Port2
#define GT_Heat Box2_Port3
#define Unused24 Box2_Port4
#define GT_OverFill Box2_Port5
#define GT_Fill Box2_Port6
#define Skimmer Box2_Port7
#define GT_Pump Box2_Port8
void setup() {
ReefAngel.Init(); //Initialize controller
ReefAngel.InitMenu(pgm_read_word(&(menu_items[0])),SIZE(menu_items)); // Initialize the menu
ReefAngel.FeedingModePortsE[0] = Port8Bit; // Turn off on Box1 when feeding mode is activated is activated
ReefAngel.FeedingModePortsE[1] = Port7Bit | Port8Bit; // Turn off on Box2 when feeding mode is activated is activated
ReefAngel.WaterChangePorts = Port5Bit | Port6Bit ; // Turn off when water change mode is activated
ReefAngel.WaterChangePortsE[0] = Port5Bit | Port6Bit | Port7Bit | Port8Bit; // Turn off on Box1 when water change mode is activated
ReefAngel.WaterChangePortsE[1] = Port3Bit | Port8Bit | Port7Bit | Port6Bit | Port1Bit; // Turn off on Box1 when water change mode is activated
ReefAngel.PHExpMin = 1832;
ReefAngel.PHExpMax = 2150;
ReefAngel.TempProbe = T2_PROBE; // Set the 2nd plug to be DT Main temp
ReefAngel.OverheatProbe = T2_PROBE; // to monitor the overheat and temperatures
ReefAngel.OverheatShutoffPorts = Port1Bit | Port2Bit; // Items turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPortsE[0] = Port7Bit | Port3Bit | Box1_Port4; // Items turned off on Box1 when Overheat temperature exceeded
ReefAngel.OverheatShutoffPortsE[1] = Port3Bit | Port7Bit; // Items turned off on Box2 when Overheat temperature exceeded
InternalMemory.OverheatTemp_write( 829 ); // Set the DT Overheat temperature setting
ReefAngel.LightsOnPorts = Port1Bit | Port2Bit; // Toggle Lights
ReefAngel.LightsOnPortsE[0] = Port3Bit | Port4Bit; // Toggle Lights
// Ports that default on
ReefAngel.Relay.On(DT_Pump); // Turn on DT Pump
ReefAngel.Relay.On(GT_Pump); // Turn on GT Pump
ReefAngel.Relay.On(Skimmer); // Turn on Skimmer
}
void loop()
{
// CheckPower(); // Monitor for power outages
// CheckSwitches(); // Monitor for float switches
ReefAngel.StandardLights( DT_LightsOne,14,00,22,00 ); // DT Lights on at 2:00pm and off at 10:00pm
ReefAngel.StandardLights( DT_LightsTwo,22,00,01,00 ); // DT-Moon Lights on at 10:00am and off at 1:00am
ReefAngel.StandardLights( GT_LightsOne,14,00,21,45 ); //GT Lights Main 2:00pm - 9:45pm
ReefAngel.StandardLights( GT_LightsTwo,15,00,22,30 ); //GT Lights Actinic 3:00pm - 10:30pm