PaulTurner911 Code
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Sorry I didnt get back to you last night. I have feed mode set to 3600, thats when the return pumps should activate. I was wanting NTM to activate at 1800 in feed mode.
Feedmode activated:
Countdown timer now reads 3600 all pumps OFF
Countdown timer reads 1800 activate NTM for 60min
Feedmode complete activate return pumps and continue running NTM for 30min
It seems you have everything working, I was just misunderstanding the scheduling of it. Could you set the times to the above schedule? Thanks.
Feedmode activated:
Countdown timer now reads 3600 all pumps OFF
Countdown timer reads 1800 activate NTM for 60min
Feedmode complete activate return pumps and continue running NTM for 30min
It seems you have everything working, I was just misunderstanding the scheduling of it. Could you set the times to the above schedule? Thanks.
Re: PaulTurner911 Code
I dont understand your scheduling...
For the record the timer stays at 0 during feeding mode so it doesn't start incrementing until feeding mode is over.
So whatever number is set is plus your feeding mode time already...
You want ntm running while your return pumps are off??? So confused..
If i recall we shortened feed mode to 15 minutes and extended the wavemaker time so that wavemakers were off for 30 minutes but returns kicked back on before. Once that was done we kicked in NTM. What you describe sounds way different
For the record the timer stays at 0 during feeding mode so it doesn't start incrementing until feeding mode is over.
So whatever number is set is plus your feeding mode time already...
You want ntm running while your return pumps are off??? So confused..
If i recall we shortened feed mode to 15 minutes and extended the wavemaker time so that wavemakers were off for 30 minutes but returns kicked back on before. Once that was done we kicked in NTM. What you describe sounds way different
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
I was wanting NTM to stir up uneaten food and what not then the return pump to turn on and remove from display tank. Ill shorten feed mode to 15 and run it, maybe Ill like your way better
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Any idea why my actinic channel is showing values?
Re: PaulTurner911 Code
Its only showing a value since Saturday. I dont' see any reference to the Actinic channel in the last code posted... Your PWMD looks nice though
Is it possible you overrode it somewhere or changed something in your code?
Is it possible you overrode it somewhere or changed something in your code?
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
My WP40 seems to zero out at some point and I reboot the controller to get it working. After a few days, its at zero again. ANy help would be great.
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Revisiting this, I would like to switch the order in which the two pumps are activated. I WOULD like NTM to turn on 15min before the return pump comes on. The reason is when I spot feed my corals I feed heavy and the fish come back out once the pumps kick on to eat what's being stirred up. To recap when I activate my feedmode it runs for 15min with no flow, then 15min in to the NTM the returns should kick on.lnevo wrote:I dont understand your scheduling...
For the record the timer stays at 0 during feeding mode so it doesn't start incrementing until feeding mode is over.
So whatever number is set is plus your feeding mode time already...
You want ntm running while your return pumps are off??? So confused..
If i recall we shortened feed mode to 15 minutes and extended the wavemaker time so that wavemakers were off for 30 minutes but returns kicked back on before. Once that was done we kicked in NTM. What you describe sounds way different
I think I could make it work by setting the mem loc for feed time to 30min and making some changes to:
if (now()-feeding<=900) {
// 30 minutes after feeding mode. Pump is off
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Speed=0;
} else if (now()-feeding<=(900+3600)) {
// First 30 minutes pump is off, Next 60 is NTM
I'm just not sure why it says 30min but 900 seconds in that section.?!
Thanks
Re: PaulTurner911 Code
The way the whole feeding timer is written it will not work the way you want. I will need to rework the logic. Right now feeding always equals now during feeding mode. So any check on that number will not reflect how long into feeding mode you are to reenable the return pump. I'll have to re-add the static boolean so that we only update feeding once,.. Give me some time to work on it.l
Re: PaulTurner911 Code
lnevo wrote:
Changed extension of feeding mode to 15 minutes so total duration is 30. Feel free to make the 900 back to 1800.
Fixed the timer issue you had as well...sorry bout that one.
Force night mode to Constant instead of whatever is default mode (NTM was today's mode.)
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Ok, so we changed to 1800 to 900 but never changed the comment line?lnevo wrote:lnevo wrote:
Changed extension of feeding mode to 15 minutes so total duration is 30. Feel free to make the 900 back to 1800.
Fixed the timer issue you had as well...sorry bout that one.
Force night mode to Constant instead of whatever is default mode (NTM was today's mode.)
Re: PaulTurner911 Code
Correct. Was trying to match up with what you were trying to do. I didn't change the comments.
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Thanks Bud!!!!
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Any chance you had time to revise the code and implement the boolean?
Re: PaulTurner911 Code
Sorry i haven't yet, it fell off my radar. Give me a bit still, been super busy and tomorrow I am picking up my new mandarin! Nice and fat and trained to eat frozen! So I'll be busy holding the fish bag on the train home
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Thanks! No rush by any means.
I guess Ive been lucky, my mandrin eats ANYTHING!!
TRAIN?!? Where do you live?
I guess Ive been lucky, my mandrin eats ANYTHING!!
TRAIN?!? Where do you live?
Re: PaulTurner911 Code
Long Island Rail Road to manhattan every day. Fun. Not.
Re: PaulTurner911 Code
Ok, so this should do...
0:00 Feeding Mode Start (all pumps off)
0:15 Smart_NTM
0:30 Feeding Mode End (return pump on)
1:15 Smart_NTM end / Resume previous mode
Good Luck, keep me posted.
0:00 Feeding Mode Start (all pumps off)
0:15 Smart_NTM
0:30 Feeding Mode End (return pump on)
1:15 Smart_NTM end / Resume previous mode
Good Luck, keep me posted.
Code: Select all
// Set timer when in feeding mode
static boolean feedingStarted;
static unsigned long feeding;
if (ReefAngel.DisplayedMenu==FEEDING_MODE && !feedingStarted) {
feedingStarted=true;
feeding = now();
} else {
feedingStarted=false;
}
// Feeding Mode is 30 minutes
if (now()-feeding<=900) {
// First 15 minutes after feeding mode. Pump is off
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Speed=0;
} else if (now()-feeding<=(900+3600)) {
// NTM after 15 minutes for the next 60 minutes
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=NutrientTransport;
ReefAngel.DCPump.Speed=InternalMemory.DCPumpSpeed_read(); // Resume previous speed
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Im getting an error 'redeclaration of long unsinged in feeding.
Here is my complete code
Here is my complete code
Code: Select all
#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 <Salinity.h>
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <Humidity.h>
#include <DCPump.h>
#include <ReefAngel.h>
////// Place global variable code below here
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port7Bit | Port8Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port7Bit | Port8Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = Port2Bit | Port3Bit | Port7Bit | Port8Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port3Bit | Port7Bit | Port8Bit;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
// Ports that are always on
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.DayLights( Port1 ); // Return Pump
ReefAngel.StandardFan( Port2 ); // Canopy Fans
ReefAngel.ActinicLights( Port3 ); // Actinic LEDS
//Port4 Kalk/ATO
//Port5 Kalk Stir
//Port 6 NOT USED (Possibly Skimmer)
ReefAngel.DayLights( Port7 ); // MH 1
ReefAngel.DayLights( Port8 ); //MH 2
//Moonlight Phase 9pm-10am (CH4-CH5)
if ( (hour() >=10) && (hour() <21) )
ReefAngel.PWM.SetChannel( 4,(0) );
else
ReefAngel.PWM.SetChannel( 4, MoonPhase() );
if ( (hour() >=10) && (hour() <21) )
ReefAngel.PWM.SetChannel( 5,(0) );
else
ReefAngel.PWM.SetChannel( 5, MoonPhase() );
//Over Flow Protection
if (ReefAngel.HighATO.IsActive())
ReefAngel.Relay.On(Port1);
else
ReefAngel.Relay.Off(Port1);
//ATO Protection
if (ReefAngel.LowATO.IsActive())
ReefAngel.Relay.On(Port4);
else
ReefAngel.Relay.Off(Port4);
//Kalk Dose 60sec @ 11pm-12pm (every 15min)
if (hour() >=23 || hour() < 12)
ReefAngel.Relay.Set(Port4, now()%900<60);
else
ReefAngel.Relay.Off(Port4);
//Kalk Stir 12pm-1pm
if (hour() >=12 & hour() < 13)
ReefAngel.Relay.On(Port5);
else
ReefAngel.Relay.Off(Port5);
ReefAngel.DCPump.UseMemory = true;
ReefAngel.DCPump.DaylightChannel = Sync;
////// Place your custom code below here
///// Place your custom code below here
// Add random mode if we set to Mode to Custom in portal
static int rmode;
static boolean changeMode=true;
// These are the modes we can cycle through. You can add more and even repeat...
byte modes[] = { ReefCrest, TidalSwell, ShortPulse, NutrientTransport };
if (now()%SECS_PER_DAY==0 || changeMode==true) { // Change at midnight or if controller rebooted
rmode=random(100)%sizeof(modes); // Change the mode once per day to pick from our array
changeMode=false;
}
// Set timer when in feeding mode
static unsigned long feeding;
if (ReefAngel.DisplayedMenu==FEEDING_MODE) {
feeding = now();
}
// Set timer when in feeding mode
static boolean feedingStarted;
static unsigned long feeding;
if (ReefAngel.DisplayedMenu==FEEDING_MODE && !feedingStarted) {
feedingStarted=true;
feeding = now();
} else {
feedingStarted=false;
}
// Feeding Mode is 30 minutes
if (now()-feeding<=900) {
// First 15 minutes after feeding mode. Pump is off
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Speed=0;
} else if (now()-feeding<=(900+3600)) {
// NTM after 15 minutes for the next 60 minutes
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=NutrientTransport;
ReefAngel.DCPump.Speed=InternalMemory.DCPumpSpeed_read(); // Resume previous speed
// Night mode (go to 30%)
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=Constant;
ReefAngel.DCPump.Speed=30;
} else if (InternalMemory.DCPumpMode_read()==11) {
// Custom Mode and nothing else going on
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=modes[rmode]; // Put the mode to the random mode :)
ReefAngel.DCPump.Speed=InternalMemory.DCPumpSpeed_read(); // Set speed from portal
} else {
ReefAngel.DCPump.UseMemory=true; // Will reset all values from memory
}
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "paulturner911" );
ReefAngel.ShowInterface();
}
void DrawCustomMain()
{
int x,y;
char text[10];
// Dimming Expansion
x = 15;
y = 2;
for ( int a=0;a<6;a++ )
{
if ( a>2 ) x = 75;
if ( a==3 ) y = 2;
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x,y,"Ch :" );
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+12,y,a );
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+24,y,ReefAngel.PWM.GetChannelValue(a) );
y += 10;
}
pingSerial();
// Parameters
#if defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params,
ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() );
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params );
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
pingSerial();
// Main Relay Box
byte TempRelay = ReefAngel.Relay.RelayData;
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
ReefAngel.LCD.DrawOutletBox( 12, 84, TempRelay );
pingSerial();
// Date and Time
ReefAngel.LCD.DrawDate( 6, 122 );
pingSerial();
}
void DrawCustomGraph()
{
}
Re: PaulTurner911 Code
You didn't delete this part...
// Set timer when in feeding mode
static unsigned long feeding;
if (ReefAngel.DisplayedMenu==FEEDING_MODE) {
feeding=now();
}
// Set timer when in feeding mode
static unsigned long feeding;
if (ReefAngel.DisplayedMenu==FEEDING_MODE) {
feeding=now();
}
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Somethings not right with the current code. The day after feedmode was activated the WP is at zero. Im guessing after NTM it never resumes our random custom mode. Also could you refresh me on the memory location of feedmode timer? Where could I find a list of all memory locations?
Re: PaulTurner911 Code
It's in the file in libraries/Globals/Globals.
Look for the string VarsStart.
Look for the string VarsStart.
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Any chance you could revisit your logic on the feedmode? I've set the feedtime in the memloc to 900 and once that completes the return pump AND the wp turn. I'd like the wp to run NTM for a while before the returns kick on. Any help would be great.
Re: PaulTurner911 Code
Set the feed mode to however long you want them off. 900 is when ntm kicks on.
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
This doesn't seem to be the case. I've currently set the feedmode to 1800.... At the 900 mark nothing happens, and 0 all pumps turn on and run NTM.
Re: PaulTurner911 Code
Did you change 900 in your code at all? The code I posted above sets the speed to 0 only for the first 900 seconds after feeding mode started..then its NTM until 4500 seconds.
Can you set the feeding mode time longer than 1800 and tell me what happens at the 1800 mark?
What is port1 port2 port7 and port8?
Can you set the feeding mode time longer than 1800 and tell me what happens at the 1800 mark?
What is port1 port2 port7 and port8?
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
I dont have an appropriate file reader to read globals/globals for memory locations.
Ive set the feedmode to 1860 and at 1800 nothing happens. Im assuming that at 960 the NTM should activate, it doesnt.
Port1- RETURN PUMP
2-FANS
7-MH
8-MH
these all turn off in feed mode
this is my code:
// Feeding Mode is 30 minutes
if (now()-feeding<=900) {
// First 15 minutes after feeding mode. Pump is off
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Speed=0;
} else if (now()-feeding<=(900+3600)) {
// NTM after 15 minutes for the next 60 minutes
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=NutrientTransport;
ReefAngel.DCPump.Speed=InternalMemory.DCPumpSpeed_read(); // Resume previous speed
// Night mode (go to 30%)
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=Constant;
ReefAngel.DCPump.Speed=30;
} else if (InternalMemory.DCPumpMode_read()==11) {
// Custom Mode and nothing else going on
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=modes[rmode]; // Put the mode to the random mode
ReefAngel.DCPump.Speed=InternalMemory.DCPumpSpeed_read(); // Set speed from portal
} else {
ReefAngel.DCPump.UseMemory=true; // Will reset all values from memory
}
////// Place your custom code above here
Ive set the feedmode to 1860 and at 1800 nothing happens. Im assuming that at 960 the NTM should activate, it doesnt.
Port1- RETURN PUMP
2-FANS
7-MH
8-MH
these all turn off in feed mode
this is my code:
// Feeding Mode is 30 minutes
if (now()-feeding<=900) {
// First 15 minutes after feeding mode. Pump is off
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Speed=0;
} else if (now()-feeding<=(900+3600)) {
// NTM after 15 minutes for the next 60 minutes
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=NutrientTransport;
ReefAngel.DCPump.Speed=InternalMemory.DCPumpSpeed_read(); // Resume previous speed
// Night mode (go to 30%)
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=Constant;
ReefAngel.DCPump.Speed=30;
} else if (InternalMemory.DCPumpMode_read()==11) {
// Custom Mode and nothing else going on
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=modes[rmode]; // Put the mode to the random mode
ReefAngel.DCPump.Speed=InternalMemory.DCPumpSpeed_read(); // Set speed from portal
} else {
ReefAngel.DCPump.UseMemory=true; // Will reset all values from memory
}
////// Place your custom code above here
Re: PaulTurner911 Code
Im baffled here too...between you and sacohen i feel like im losing my mind...
Roberto binder anyone need a second set of eyes...speed and mode should be reset at 901 seconds..
Roberto binder anyone need a second set of eyes...speed and mode should be reset at 901 seconds..