I/O Expansion and ATO 1, 2, 3, 4....

Expansion modules and attachments
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

Thank you for your time with this.. I just tried to compile and received the following:

variable or field 'ATOoverIO' declared void

sketch_aug23a:26: error: variable or field 'ATOoverIO' declared void
sketch_aug23a:26: error: 'ATOIO' was not declared in this scope
sketch_aug23a:26: error: 'ato' was not declared in this scope
sketch_aug23a.cpp: In function 'void DrawCustomMain()':
sketch_aug23a:53: error: 'class ReefAngelClass' has no member named '_IO'
sketch_aug23a.cpp: At global scope:
sketch_aug23a:96: error: expected ',' or '...' before '&&' token
sketch_aug23a.cpp: In function 'void ATOoverIO(ATOIO)':
sketch_aug23a:98: error: 'ato' was not declared in this scope
sketch_aug23a:112: error: 'class IOClass' has no member named 'GetChanngel'
sketch_aug23a:126: error: expected unqualified-id before numeric constant
sketch_aug23a:126: error: expected `)' before numeric constant
sketch_aug23a:126: error: expected `)' before ';' token
sketch_aug23a:126: error: expected `)' before ';' token
sketch_aug23a.cpp: At global scope:
sketch_aug23a:134: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:135: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:136: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:137: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:138: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:139: error: expected constructor, destructor, or type conversion before '.' token
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

Fixed some of the obvious things, here is an update on the compilation fault-

variable or field 'ATOoverIO' declared void


sketch_aug23a:26: error: variable or field 'ATOoverIO' declared void
sketch_aug23a:26: error: 'ATOIO' was not declared in this scope
sketch_aug23a:26: error: 'ato' was not declared in this scope
sketch_aug23a.cpp: In function 'void ATOoverIO(ATOIO&)':
sketch_aug23a:126: error: expected unqualified-id before numeric constant
sketch_aug23a:126: error: expected `)' before numeric constant
sketch_aug23a:126: error: expected `)' before ';' token
sketch_aug23a:126: error: expected `)' before ';' token
sketch_aug23a.cpp: At global scope:
sketch_aug23a:134: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:135: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:136: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:137: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:138: error: expected constructor, destructor, or type conversion before '.' token
sketch_aug23a:139: error: expected constructor, destructor, or type conversion before '.' token
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

Updated code with compilation fault variable or field 'ATOoverIO' declared void

RA_Ino_ino_ATO2:27: error: variable or field 'ATOoverIO' declared void
RA_Ino_ino_ATO2:27: error: 'ATOIO' was not declared in this scope
RA_Ino_ino_ATO2:27: error: 'ato' was not declared in this scope
RA_Ino_ino_ATO2.cpp: In function 'void ATOoverIO(ATOIO&)':
RA_Ino_ino_ATO2:129: error: expected unqualified-id before numeric constant
RA_Ino_ino_ATO2:129: error: expected `)' before numeric constant
RA_Ino_ino_ATO2:129: error: expected `)' before ';' token
RA_Ino_ino_ATO2:129: error: expected `)' before ';' token
RA_Ino_ino_ATO2.cpp: At global scope:
RA_Ino_ino_ATO2:137: error: expected constructor, destructor, or type conversion before '.' token
RA_Ino_ino_ATO2:138: error: expected constructor, destructor, or type conversion before '.' token
RA_Ino_ino_ATO2:139: error: expected constructor, destructor, or type conversion before '.' token
RA_Ino_ino_ATO2:140: error: expected constructor, destructor, or type conversion before '.' token
RA_Ino_ino_ATO2:141: error: expected constructor, destructor, or type conversion before '.' token
RA_Ino_ino_ATO2:142: error: expected constructor, destructor, or type conversion before '.' token

Code: Select all

#include <Salinity.h>
#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 <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <ReefAngel.h>

// CustomMainscreen_IOExpansion
byte x,y;
byte bkcolor;


void DrawCustomMain()
{
  // the graph is drawn/updated when we exit the main menu &
  // when the parameters are saved
  ReefAngel.LCD.DrawDate(6, 112);
  pingSerial();
#if defined DisplayLEDPWM && ! defined RemoveAllLights
  ReefAngel.LCD.DrawMonitor(15, 60, ReefAngel.Params,
  ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue());
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
  ReefAngel.LCD.DrawMonitor(15, 60, ReefAngel.Params);
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
  pingSerial();
  byte TempRelay = ReefAngel.Relay.RelayData;
  TempRelay &= ReefAngel.Relay.RelayMaskOff;
  TempRelay |= ReefAngel.Relay.RelayMaskOn;
  ReefAngel.LCD.DrawOutletBox(12, 93, TempRelay);
  y=10;
  x=15;
  for (int a=0;a<6;a++)
  {
    if(ReefAngel.IO.GetChannel(a)) bkcolor=COLOR_RED; 
    else bkcolor=COLOR_GREEN; 
    if (a>2) x=75;
    if (a==3) y=10;
    ReefAngel.LCD.Clear(bkcolor, x, y-3, x+40,y-1);
    ReefAngel.LCD.Clear(bkcolor, x, y+8, x+40,y+10);
    ReefAngel.LCD.Clear(bkcolor, x, y, x+3,y+8);
    ReefAngel.LCD.Clear(bkcolor, x+37, y, x+40,y+8);
    ReefAngel.LCD.DrawText(COLOR_WHITE, bkcolor, x+3, y, "Input");
    ReefAngel.LCD.DrawText(COLOR_WHITE, bkcolor, x+32, y, a);
    y+=15;
  }
}

void DrawCustomGraph()
{
}

/*
  
 For more information about custom main screen: http://forum.reefangel.com/viewtopic.php?f=14&t=109
 
 */

// Define Relay Ports By Name
#define ATO1               1
#define ATO2               2
#define Skimmer            3
#define Daylights          4
#define Flowpumps1         5
#define Flowpumps2         6
#define Heaters            7
#define Return             8

// Custom ATO Functions
typedef struct _ATOIO {
  byte relay;  // port to control
  int timeout;  // max number of seconds that the ATO pump is allowed to run
  byte low_ioport; // IO port the low switch is connected
  byte high_ioport; // IO port the high switch is connected
  unsigned long timer;
  boolean topping; // are we currently topping off / running
} ATOIO;

void ATOoverIO(ATOIO &ato)
{
   unsigned long TempTimeout = ato.timeout;
   TempTimeout *= 1000;

   /*
   Is the low switch active (meaning we need to top off) and are we not currently topping off
   Then we set the timer to be now and start the topping pump
    */
  if ( ReefAngel.IO.GetChannel(ato.low_ioport) && (!ato.topping)) {
    ato.timer = millis();
    ato.topping = true;
    ReefAngel.Relay.On(ato.relay);
  }

   // If the high switch is activated, this is a safeguard to prevent over running of the top off pump
  if ( ReefAngel.IO.GetChannel(ato.high_ioport) ) {
    ato.topping = false;
    ReefAngel.Relay.Off(ato.relay);
  }

   /*
    If the current time minus the start time of the ATO pump is greater than the specified timeout value
    AND the ATO pump is currently running:
    We turn on the status LED and shut off the ATO pump
    This prevents the ATO pump from continuously running.
    */
  if ( (millis() - ato.timer > TempTimeout) && ato.topping ) {
    ReefAngel.LED.On();
    // Verify the bitset function works properly
    bitSet(ReefAngel.AlertFlags, ReefAngel.ATOTimeOutFlag);
    ReefAngel.Relay.Off(ato.relay);
  }
}
// End Custom ATO Functions

// Create additional ATO's
ATOIO ato2;
ato2.relay = ATO2;  // Relay to use
ato2.timeout = 150;  // 150s timeout
ato2.low_ioport = 0;  // IO Port 0
ato2.high_ioport = 1;  // IO Port 1
ato2.timer = 0;  // always initialize to 0
ato2.topping = false;  // always initialize to false

void setup()
{
  ReefAngel.Init(); // Initialize Controller
  ReefAngel.AddDateTimeMenu(); 
  ReefAngel.AddStandardMenu();
  ReefAngel.SetTemperatureUnit(Celsius);  // set Temperature to Celsius
  ReefAngel.FeedingModePorts = Port5Bit | Port6Bit; // Turn off Ports 5 and 6 when Feeding Mode is activated
  ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit; // Turn off Ports 1, 2, 3, 5, 6, 7 and 8 when Water Change Mode is activated
  ReefAngel.OverheatShutoffPorts = Port4Bit | Port7Bit; // Turn off Ports 4 and 7 when Overheat Occurs
  ReefAngel.LightsOnPorts = Port4Bit; // Turn on/off Ports 4 when Turn Lights On/Off is activated
  ReefAngel.OverheatProbe = T1_PROBE; // Use Temperature probe 1, 2 and 3 to check for overheat
  ReefAngel.TempProbe = T1_PROBE; // Use Temperature probe 1, 2 and 3 to check temperature
  
  // Always on
  ReefAngel.Relay.On(Return);
  ReefAngel.Relay.On(Skimmer);
  ReefAngel.Relay.On(Flowpumps1);
  ReefAngel.Relay.On(Flowpumps2);
}

void loop()
{
  ReefAngel.StandardATO(ATO1); // Standard ATO
  ATOoverIO(ato2); // Alternate ATO2
  ReefAngel.StandardLights(Daylights); // Daylight Lights
  ReefAngel.StandardHeater(Heaters); // Heater
  ReefAngel.PWM.StandardDaylight(); // Dimming for Daylight Channel
  ReefAngel.PWM.StandardActinic(30); // Dimming for Actinic Channel
  ReefAngel.ShowInterface(); // Display everything on the LCD screen
}




binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by binder »

ok. that's what I get for not testing it. I'll look more and get it figured out.

Sent from my XT1585 using Tapatalk
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

OK thank you sir! Do you have a separate system for testing or do you just upset yours? I'm thinking of keeping one just for testing as I have another one..
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

Any luck with us putting this one to bed...
binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by binder »

JclaasSA wrote:OK thank you sir! Do you have a separate system for testing or do you just upset yours? I'm thinking of keeping one just for testing as I have another one..
I have several. I have 1 specifically for testing. with what I am doing for you doesn't require anything other than compiling the code.
JclaasSA wrote:Any luck with us putting this one to bed...
not tonight. I had a big issue to deal with today that kept me from getting to it. I'm sure I made a simple error.

Sent from my XT1585 using Tapatalk
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

binder wrote:
JclaasSA wrote:OK thank you sir! Do you have a separate system for testing or do you just upset yours? I'm thinking of keeping one just for testing as I have another one..
I have several. I have 1 specifically for testing. with what I am doing for you doesn't require anything other than compiling the code.
JclaasSA wrote:Any luck with us putting this one to bed...
not tonight. I had a big issue to deal with today that kept me from getting to it. I'm sure I made a simple error.

Sent from my XT1585 using Tapatalk
I actually that that you would have one for testing, thats great! I will do the same with the extra unit i have, but i am under the impression that i may need to get a new board for it as the screen goes funny (Flickers) after a while and then goes off.

I hope you got your stuff sorted.
binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by binder »

JclaasSA wrote: I hope you got your stuff sorted.
I did, thanks. I completely re-plumbed my entire fish tank/sump and had some major problems. Fortunately I was able to fix the problems but took me a lot longer than expected. Then I had to deal with a small leak, that is hopefully fixed.

I did start to look at the code last night and was checking on some of the things I did and was making sure I was using the code properly. I will hopefully have something for you tonight.


Sent from my iPad using Tapatalk
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

Hectic! I know what that's like.. it's at least an evening or two's work and having stuff like leaks doesn't help reduce the time. I once converted a boyu tank for someone to include an overflow and a sump.. it was a 1m tank with the cuboard being two separate compartments at the bottom so I had to build to sumps (one for the skimmer and the othe for the return which I obviously had to join. Anyway it leaked in between them.. I almost thought I wasnt going to win! So that's probably my worse leak other than an anemone blocking the overflow at 5am haha

Thanks man I appreciate it.
binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by binder »

I had to scrap what I did partially due to a nuance with Arduino and sketches. Anyways, this function works but it's currently hard coded to ATO2. We can change it for future improvements if it works properly for you.

Code: Select all

#include <Salinity.h>
#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 <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <ReefAngel.h>

// CustomMainscreen_IOExpansion
byte x,y;
byte bkcolor;


void DrawCustomMain()
{
  // the graph is drawn/updated when we exit the main menu &
  // when the parameters are saved
  ReefAngel.LCD.DrawDate(6, 112);
  pingSerial();
#if defined DisplayLEDPWM && ! defined RemoveAllLights
  ReefAngel.LCD.DrawMonitor(15, 60, ReefAngel.Params,
  ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue());
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
  ReefAngel.LCD.DrawMonitor(15, 60, ReefAngel.Params);
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
  pingSerial();
  byte TempRelay = ReefAngel.Relay.RelayData;
  TempRelay &= ReefAngel.Relay.RelayMaskOff;
  TempRelay |= ReefAngel.Relay.RelayMaskOn;
  ReefAngel.LCD.DrawOutletBox(12, 93, TempRelay);
  y=10;
  x=15;
  for (int a=0;a<6;a++)
  {
    if(ReefAngel.IO.GetChannel(a)) bkcolor=COLOR_RED;
    else bkcolor=COLOR_GREEN;
    if (a>2) x=75;
    if (a==3) y=10;
    ReefAngel.LCD.Clear(bkcolor, x, y-3, x+40,y-1);
    ReefAngel.LCD.Clear(bkcolor, x, y+8, x+40,y+10);
    ReefAngel.LCD.Clear(bkcolor, x, y, x+3,y+8);
    ReefAngel.LCD.Clear(bkcolor, x+37, y, x+40,y+8);
    ReefAngel.LCD.DrawText(COLOR_WHITE, bkcolor, x+3, y, "Input");
    ReefAngel.LCD.DrawText(COLOR_WHITE, bkcolor, x+32, y, a);
    y+=15;
  }
}

void DrawCustomGraph()
{
}

/*

 For more information about custom main screen: http://forum.reefangel.com/viewtopic.php?f=14&t=109

 */

// Define Relay Ports By Name
#define ATO1               1
#define ATO2               2
#define Skimmer            3
#define Daylights          4
#define Flowpumps1         5
#define Flowpumps2         6
#define Heaters            7
#define Return             8

// Custom ATO Functions
unsigned long ATO2_timer = 0;
boolean ATO2_topping = false;
void ATOoverIO(byte relay, int timeout, byte low_ioport, byte high_ioport){
   unsigned long TempTimeout = timeout;
   TempTimeout *= 1000;

   //Is the low switch active (meaning we need to top off) and are we not currently topping off
   //Then we set the timer to be now and start the topping pump

  if ( ReefAngel.IO.GetChannel(low_ioport) && (!ATO2_topping)) {
    ATO2_timer = millis();
    ATO2_topping = true;
    ReefAngel.Relay.On(relay);
  }

   // If the high switch is activated, this is a safeguard to prevent over running of the top off pump
  if ( ReefAngel.IO.GetChannel(high_ioport) ) {
    ATO2_topping = false;
    ReefAngel.Relay.Off(relay);
  }

    // If the current time minus the start time of the ATO pump is greater than the specified timeout value
    // AND the ATO pump is currently running:
    // We turn on the status LED and shut off the ATO pump
    // This prevents the ATO pump from continuously running.

  if ( (millis() - ATO2_timer > TempTimeout) && ATO2_topping ) {
    ReefAngel.LED.On();
    // Verify the bitset function works properly
    //bitSet(ReefAngel.AlertFlags, ReefAngel.ATOTimeOutFlag);
    ReefAngel.Relay.Off(relay);
  }
}

void setup()
{
  ReefAngel.Init(); // Initialize Controller
  ReefAngel.AddDateTimeMenu();
  ReefAngel.AddStandardMenu();
  ReefAngel.SetTemperatureUnit(Celsius);  // set Temperature to Celsius
  ReefAngel.FeedingModePorts = Port5Bit | Port6Bit; // Turn off Ports 5 and 6 when Feeding Mode is activated
  ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit; // Turn off Ports 1, 2, 3, 5, 6, 7 and 8 when Water Change Mode is activated
  ReefAngel.OverheatShutoffPorts = Port4Bit | Port7Bit; // Turn off Ports 4 and 7 when Overheat Occurs
  ReefAngel.LightsOnPorts = Port4Bit; // Turn on/off Ports 4 when Turn Lights On/Off is activated
  ReefAngel.OverheatProbe = T1_PROBE; // Use Temperature probe 1, 2 and 3 to check for overheat
  ReefAngel.TempProbe = T1_PROBE; // Use Temperature probe 1, 2 and 3 to check temperature

  // Always on
  ReefAngel.Relay.On(Return);
  ReefAngel.Relay.On(Skimmer);
  ReefAngel.Relay.On(Flowpumps1);
  ReefAngel.Relay.On(Flowpumps2);

  // Initialize ATO2 values
  ATO2_timer = 0;  // always initialize to 0
  ATO2_topping = false;  // always initialize to false
}

void loop()
{
  ReefAngel.StandardATO(ATO1); // Standard ATO
  // ATOoverIO(Relay, Timeout, low io port, high io port)
  ATOoverIO(ATO2, 150, 0, 1); // Alternate ATO2
  ReefAngel.StandardLights(Daylights); // Daylight Lights
  ReefAngel.StandardHeater(Heaters); // Heater
  ReefAngel.PWM.StandardDaylight(); // Dimming for Daylight Channel
  ReefAngel.PWM.StandardActinic(30); // Dimming for Actinic Channel
  ReefAngel.ShowInterface(); // Display everything on the LCD screen
}

It compiles and will need tested. So give it a test and see how it does for you.
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

OK cool thanks will do so now as soon as possible should be this morning! Let you know...
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

Now this code compiles, that's great !

BUT am I too much of a perfectionist here or what buddy?? We are trying to have the standard ato funtion but just on the i/o expansion. I tested it using the same orientation of the floats as required in standard ato.

Standard ATO
Here is the way the Stand ardATO function works:
High switch mounted with wires at the bottom
Low switch mounted with the wires at the top
When water level lowers all the way to cause the low switch to be active (float is touching the end opposite from 2
wires coming out of it), the ATO pump/specified relay is turned on.
The ATO pump runs until the water level raises the low switch up from making contact, continues to raise the water
level until the high switch is active (float is touching the end opposite of the 2 wires coming out of it). The ATO pump
shuts off when the high switch is active OR if the ATO Timeout value is exceeded. The timeout prevents the pump
from running too long in case the reservoir runs dry or something else happens.
Water then evaporates out of the tank and lowers until the low switch is active.
Repeat process

The closest I get is with channel 0 float with wires at the bottom and channel 1 float with wires at the top but it turns the relay on and off without influence from float on channel 0.

Can you have a look at this again please with floats in standard ato orientation and revert back if i am talking nonsense!

Thanks.
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

You have already been a big help @binder - it's much appreciated! !

I look forward to your answer.
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

@rimai
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

@binder
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by rimai »

Probably you have the channels in the wrong position.
Try switching 0 on top and 1 at the bottom
Roberto.
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

rimai wrote:Probably you have the channels in the wrong position.
Try switching 0 on top and 1 at the bottom
Please upload this on your side and just test it for me. It appears to be code issue.
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

rimai wrote:Probably you have the channels in the wrong position.
Try switching 0 on top and 1 at the bottom
I did this.
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

@rimai please reply to my posts.
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by rimai »

What do you mean? I just did.
And then you asked to try to upload and replicate the problem here.
You have to wait until I find some time to do that.
You just requested that a couple of hours ago.
Roberto.
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by JclaasSA »

Float switches were tried in various positions including that way you advised that is why I am asking that the problem is replicated on your side please and I hear you @rimai.
JclaasSA
Posts: 25
Joined: Fri Aug 18, 2017 10:11 am

Re: WIFI Cloud and WIFI Attachment on 2 RA plusses

Post by JclaasSA »

Howzit @binder, @rimai, @Inevo. . will you guys upload that ato code your side and replicate to see if you also getting a different functionality please?
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by rimai »

Why don't you just start simple and use a simple on/off instead?
Much simpler and you can work on anything you want to add later.

Code: Select all

if (ReefAngel.IO.GetChannel(0)) then ReefAngel.Relay.On(Port2);
if (!ReefAngel.IO.GetChannel(1)) then ReefAngel.Relay.Off(Port2);
You will need to play around with the ! sign in the code, which means "NOT" depending on how you orient the float switches.
Basically the code reads is the channel 0 is active, turn on port 2 and if channel 1 is not active, turn off port 2.
Roberto.
binder
Posts: 2871
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: I/O Expansion and ATO 1, 2, 3, 4....

Post by binder »

agreed. one thing I learned from working with the code is make sure you understand it and test it out. so do like Roberto says, test out simple. first just have 1 float switch toggle a relay. this let's us know if you have the float switches working properly and connected properly. once you know both switches can control a port individually, then start combining them.

Sent from my XT1585 using Tapatalk
Post Reply