Reverse flag for RA_ATOClass
Reverse flag for RA_ATOClass
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.
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.
Re: Reverse flag for RA_ATOClass
Try this....
Remove C-clip from the float and flip the floating part.
Place the C-clip back.
Does that work for you?
Remove C-clip from the float and flip the floating part.
Place the C-clip back.
Does that work for you?
Roberto.
Reverse flag for RA_ATOClass
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
Would still be good for troubleshooting
Reverse flag for RA_ATOClass
How about an #define instead of changing code...
Why force a hardware change when we can do it in software
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
};
Re: Reverse flag for RA_ATOClass
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.
Don't forget to also add a function in ReefAngel.cpp for the auto feature selection to enable the define.
Roberto.
Reverse flag for RA_ATOClass
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...
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...
Reverse flag for RA_ATOClass
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
};
{
public:
#ifdef REVERSE_ATO_LOW
inline bool IsActive() { return digitalRead(lowATOPin); }
#else
inline bool IsActive() { return !digitalRead(lowATOPin); }
#endif
};
Re: Reverse flag for RA_ATOClass
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
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.
Reverse flag for RA_ATOClass
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.
Reverse flag for RA_ATOClass
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).
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).
Re: Reverse flag for RA_ATOClass
Ok, yeah I see that the #define does not get into the scope from the INO, I guess it needs to be explicitly declared in that file through the include of ReefAngel_Features.h through Globals.h. Anyway, I'll see what I can do later about the push request and adding the functions and keywords. That part seems pretty straightforward..
Re: Reverse flag for RA_ATOClass
I can't get it to recognize the keywords
Added to feature.txt
Added to keywords.txt
Added to ReefAngel.h
Added to debug sketch
But it's not picking up and adding to the ReefAngel_Features.h. Anything I'm missing?
Added to feature.txt
Code: Select all
REVERSE_ATO_LOW,ReefAngel.ReverseATOLow
REVERSE_ATO_HIGH,ReefAngel.ReverseATOHigh
Code: Select all
ReverseATOLow KEYWORD2
ReverseATOHigh KEYWORD2
Code: Select all
void inline ReverseATOLow() {};
void inline ReverseATOHigh() {};
Code: Select all
ReefAngel.ReverseATOHigh();
- jsclownfish
- Posts: 378
- Joined: Mon Oct 24, 2011 7:52 pm
- Location: Saint Louis
Re: Reverse flag for RA_ATOClass
Following along...I was wanting to do something similar http://forum.reefangel.com/viewtopic.php?f=20&t=1542. I have mine set up in a StandardATO format and it just seems more logical to me for the status to appear green if the water level is above the low float (closed position). It's become less important now with the water level expansion, but it would still be nice.
Jon
Jon
Re: Reverse flag for RA_ATOClass
You are missing a description on the feature.txt file
That's what it will display on the Arduino IDE when you compile the code as features found.
See if it works now.
Code: Select all
REVERSE_ATO_LOW,ReefAngel.ReverseATOLow,Inverted Low Float Switch
REVERSE_ATO_HIGH,ReefAngel.ReverseATOHigh,Inverted High Float Switch
See if it works now.
Roberto.
Reverse flag for RA_ATOClass
The pull request is in...i need to fix it though! I left a bit of decode in that isActive wont be declared unless its defined...
Also the feature.txt is not in the repo...
Also the feature.txt is not in the repo...
Re: Reverse flag for RA_ATOClass
Ok, pull request should be good now. There should be 3 commits.
Re: Reverse flag for RA_ATOClass
I'm going to have 2 float switches in parallel basically set up to disable the ATO when the water level is to high ineither area.
Due to space issues I need to set up my ATO float switches in reverse.
Where the float is down and the wires are at the top.
Like this...
If I do this I can use the following code to reverse the ATO Flag?
Due to space issues I need to set up my ATO float switches in reverse.
Where the float is down and the wires are at the top.
Like this...
If I do this I can use the following code to reverse the ATO Flag?
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
};
Re: Reverse flag for RA_ATOClass
You can also pull the plastic clip off the bottom and flip the float upside down to change it.
Sent from my HTC One X using Tapatalk 4 Beta
Sent from my HTC One X using Tapatalk 4 Beta
Re: Reverse flag for RA_ATOClass
I saw that from Roberto after I posted the question and I did that. It seems a lot easier to me.
Thanks.
Thanks.
Re: Reverse flag for RA_ATOClass
You could have gone either way. For some doing it in code is easier. I gave you the option
Re: Reverse flag for RA_ATOClass
Thanks. For me flipping the flota is easier now. I hope it will get to the point where coding is easier.