Why is my ATO acting like it is set for single ATO?

Do you have a question on how to do something.
Ask in here.
Post Reply
gaberosenfield
Posts: 89
Joined: Thu Mar 08, 2012 5:11 pm
Location: Redwood City, California

Why is my ATO acting like it is set for single ATO?

Post by gaberosenfield »

I mounted my float switches yesterday and tried to set them up for dual ATO. But for some reason it is acting like a single ATO. Only one float switch activates and/or deactivates the ATO pump. The other one does nothing. Whichever switch is plugged in closest to the pH monitor is the one that controls everything. Here's my code:

Code: Select all

// Autogenerated file by RAGen (v1.2.2.171), (06/07/2012 14:54)
// RA_060712_1454.ino
//
// This version designed for v0.9.0 or later

/* The following features are enabled for this File: 
#define VersionMenu
#define DisplayLEDPWM
#define CUSTOM_MENU
#define CUSTOM_MENU_ENTRIES 7
*/


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

////// Place global variable code below here


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

#include <avr/pgmspace.h>
prog_char menu0_label[] PROGMEM = "Feeding";
prog_char menu1_label[] PROGMEM = "Water Change";
prog_char menu2_label[] PROGMEM = "pH Calibration";
prog_char menu3_label[] PROGMEM = "Lights On";
prog_char menu4_label[] PROGMEM = "Lights Off";
prog_char menu5_label[] PROGMEM = "Date/Time";
PROGMEM const char *menu_items[] = {
menu0_label, menu1_label, menu2_label, menu3_label, menu4_label, menu5_label  };

void MenuEntry1()
{
ReefAngel.DisplayMenuEntry("Item 1");
ReefAngel.FeedingModeStart();

}
void MenuEntry2()
{
ReefAngel.DisplayMenuEntry("Item 2");
ReefAngel.WaterChangeModeStart();

}
void MenuEntry3()
{
ReefAngel.DisplayMenuEntry("Item 3");
ReefAngel.SetupCalibratePH();
ReefAngel.DisplayedMenu = ALT_SCREEN_MODE;

}
void MenuEntry4()
{
ReefAngel.DisplayMenuEntry("Item 4");
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 MenuEntry5()
{
ReefAngel.DisplayMenuEntry("Item 5");
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 MenuEntry6()
{
ReefAngel.DisplayMenuEntry("Item 6");
ReefAngel.SetupDateTime();
ReefAngel.DisplayedMenu = ALT_SCREEN_MODE;

}

void setup()
{
    // This must be the first line
    ReefAngel.Init();  //Initialize controller
    // Initialize the custom menu
    ReefAngel.InitMenu(pgm_read_word(&(menu_items[0])),SIZE(menu_items));

    // Ports toggled in Feeding Mode
    ReefAngel.FeedingModePorts = Port2Bit | Port3Bit | Port4Bit | Port5Bit | Port6Bit;
    // Ports toggled in Water Change Mode
    ReefAngel.WaterChangePorts = Port2Bit | Port3Bit | Port4Bit | Port5Bit | Port6Bit;
    // Ports toggled when Lights On / Off menu entry selected
    ReefAngel.LightsOnPorts = Port1Bit;

    // Ports that are always on
    ReefAngel.Relay.On(Port4);
    ReefAngel.Relay.On(Port5);
    ////// Place additional initialization code below here
     ReefAngel.Timer[1].SetInterval(8);//Wavemaker Timer
    ReefAngel.Timer[1].Start();
    ReefAngel.Timer[2].SetInterval(8);//Wavemaker Delay Timer

// Initialize and start the RA Client logging timer
    ReefAngel.Timer[4].SetInterval(15);  // set interval to 15 seconds
    ReefAngel.Timer[4].Start();
    ////// Place additional initialization code above here
}

void loop()
{
    // Specific functions that use Internal Memory values
    ReefAngel.StandardLights(Port1);
    ReefAngel.StandardHeater(Port2);
    ReefAngel.StandardLights(Port3,19,00,11,00);
    ReefAngel.StandardATO(Port7,360);

    // PWMSlope based on Internal Memory values for Standard Lights
    ReefAngel.PWM.ActinicPWMSlope(90);
    ReefAngel.PWM.DaylightPWMSlope();
    
    ////// Place your custom code below here
    if (ReefAngel.Timer[1].IsTriggered())//Wavemakers' Control
  {
    ReefAngel.Timer[2].Start();
    ReefAngel.Relay.On(Port6);//Wavemaker 2
  }
  
  if (ReefAngel.Timer[2].IsTriggered())//Wavemakers' Control
  {
    ReefAngel.Relay.Off(Port6);
    ReefAngel.Timer[1].Start();
  }

// Dump Params
	if(ReefAngel.Timer[4].IsTriggered())
	{
			Serial.flush();
			Serial.print("<RA><T1>");
			Serial.print(ReefAngel.TempSensor.ReadTemperature(ReefAngel.TempSensor.addrT1));
			Serial.print("</T1><T2>");
			Serial.print(ReefAngel.TempSensor.ReadTemperature(ReefAngel.TempSensor.addrT2));
			Serial.print("</T2><T3>");
			Serial.print(ReefAngel.TempSensor.ReadTemperature(ReefAngel.TempSensor.addrT3));
			Serial.print("</T3><PH>");
			Serial.print(ReefAngel.Params.PH);
			Serial.print("</PH><R>");
			Serial.print(ReefAngel.Relay.RelayData,DEC);
			Serial.print("</R><RON>");
			Serial.print(ReefAngel.Relay.RelayMaskOn,DEC);
			Serial.print("</RON><ROFF>");
			Serial.print(ReefAngel.Relay.RelayMaskOff,DEC);
			Serial.print("</ROFF></RA>");
			ReefAngel.Timer[4].Start();
	}
    ////// Place your custom code above here

    // This should always be the last line
    ReefAngel.ShowInterface();
}
Anyone have any idea what's going on?
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Why is my ATO acting like it is set for single ATO?

Post by rimai »

Try switching them around.
Does it work now?
Roberto.
gaberosenfield
Posts: 89
Joined: Thu Mar 08, 2012 5:11 pm
Location: Redwood City, California

Re: Why is my ATO acting like it is set for single ATO?

Post by gaberosenfield »

Switching what around? When I switch which ports the switches are plugged into, then the other switch becomes the single float switch in control while the first switch does nothing.
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Why is my ATO acting like it is set for single ATO?

Post by rimai »

Are they pointing away from each other?
http://forum.reefangel.com/viewtopic.php?f=7&t=240
Roberto.
gaberosenfield
Posts: 89
Joined: Thu Mar 08, 2012 5:11 pm
Location: Redwood City, California

Re: Why is my ATO acting like it is set for single ATO?

Post by gaberosenfield »

Yes; one up and one down.
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Why is my ATO acting like it is set for single ATO?

Post by rimai »

Could it be that the float itself was mounted incorrectly from the manufacturer?
Can you test conductivity or use the ControllerTestCode?
Roberto.
Post Reply