Reverse flag for RA_ATOClass

Requests for new functions or software apps
User avatar
Posts: 5362
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Thu Mar 28, 2013 8:05 pm
Can we add a boolean to the RA_ATOClass that when set to true will return the opposite result with IsActive()?

This would have a few benefits for those troubleshooting who may have hooked up the switch upside down or for those that need the switch in that orientation.

For me this would help because I have two switches on one bracket and right now they are set perfectly. But for it to act properly in the SingleATO function I've current hacked the function to negate isActive.

Also, if I had to flip my low switch it may not reach where I need it to which would reduce my alert threshold which I don't want to do.

Posts: 12308
Joined: Fri Mar 18, 2011 6:47 pm
PostPosted: Thu Mar 28, 2013 8:11 pm
Try this....
Remove C-clip from the float and flip the floating part.
Place the C-clip back.
Does that work for you?
Roberto.
User avatar
Posts: 5362
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Thu Mar 28, 2013 8:37 pm
That'll work... I didn't know our switches could do that. That'll be the route I go, I guess..

Would still be good for troubleshooting :)
User avatar
Posts: 5362
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Fri Mar 29, 2013 5:07 pm
How about an #define instead of changing code...

Code: Select all
class RA_ATOHighClass : public RA_ATOClass
{
public:
#ifdef REVERSE_HIGH_ATO
    inline bool IsActive() { return digitalRead(highATOPin); }
#else
    inline bool IsActive() { return !digitalRead(highATOPin); }
#endif
};


Why force a hardware change when we can do it in software :)

Posts: 12308
Joined: Fri Mar 18, 2011 6:47 pm
PostPosted: Fri Mar 29, 2013 7:02 pm
Send me a pull request :)
Don't forget to also add a function in ReefAngel.cpp for the auto feature selection to enable the define.
Roberto.
User avatar
Posts: 5362
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Fri Mar 29, 2013 8:30 pm
What would a user do to enable the auto detection...

I'm thinking the user would just #define REVERSE_ATO_HIGH / LOW if they wanted it...it's not like there would be a new function to detect and add the feature. Kind of like the large fonts... If you want it you add the #define..

Also as far as the push request...I've already forgotten all the git commands...you can either refresh me in the commands, or the code is right above :) I'd be happy to write it out for ato low...
User avatar
Posts: 5362
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Fri Mar 29, 2013 8:32 pm
class RA_ATOLowClass : public RA_ATOClass
{
public:
#ifdef REVERSE_ATO_LOW
inline bool IsActive() { return digitalRead(lowATOPin); }
#else
inline bool IsActive() { return !digitalRead(lowATOPin); }
#endif
};

Posts: 12308
Joined: Fri Mar 18, 2011 6:47 pm
PostPosted: Fri Mar 29, 2013 8:46 pm
There is no way to define it other than using the auto feature selection I created for the Arduino IDE.
This define needs to be inside ReefAngel_Features.h file to be seen and compiled.
That's why we have dummy functions that trigger the auto feature selection to add stuff to ReefAngel_Features.h file.
For example:
ReefAngel.AddDateTimeMenu();
This function when added to the INO code, triggers the #define DateTimeSetup
All features are added this way into the compiled code.
A list of keywords and features is inside the file /update/feature.txt
Roberto.
User avatar
Posts: 5362
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Fri Mar 29, 2013 8:58 pm
Not sure I follow why a #define in my ino wouldn't trigger...but at least I understand the concept of what you mean. I'll look at it tomorrow and provide the rest of the code ;) just not sure if I'll have time to learn git again :( I'll see what I can do.
User avatar
Posts: 5362
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Sat Mar 30, 2013 5:31 am
Just thinking this morning and realized i may still have to flip the float magnets around, but then remembered why I was doing it initially..

I'm planning on moving both floats to one port. Since essentially they do the same thing (shut off my return) most of the time...

I have two choices to do that. I can either wire the switches in paralelle and leave them in their current orientation which would require this code change. Or i could run them in series which would require me to flip the float and no code change.

Its either one switch breaks the circuit in series, or one switch makes the circuit in parallel. I think in the end i'll go with it in series and change the floats to match, but still debating in my head if there is a right way to go.

I still think the code change is relevant and could be useful for someone and who knows I may still want to use it someday.

I need to see how the skimmate switch defaults (supposedly on until full).
Next

Return to Requests

Who is online

Users browsing this forum: No registered users and 1 guest

cron