Re: hedrickms code
Posted: Fri Sep 19, 2014 3:35 am
Sweet! Very nice.
Community discussion about Reef Angel Controllers and reefing related subjects
http://forum.reefangel.com/
Code: Select all
void JebaoMode()
{
static boolean feedingalert = false;
static boolean pumpstormalert = false;
static unsigned long isfeeding;
static int ranMode = random (9);
static WiFiAlert pumpAlert;
if (ReefAngel.DCPump.Mode == Custom)
{
if (ReefAngel.DisplayedMenu==FEEDING_MODE)
{
isfeeding = now();
feedingalert = false; //reset feeding flag so alert can be sent if needed
}
if (now()-isfeeding<5400) // Continue for the 90 minutes
{
if (!feedingalert)
{
pumpAlert.Send("Pump+Mode+NTM+Feeding!+Activated.");
feedingalert = true;
}
ReefAngel.PWM.SetDaylight( NutrientTransportMode(30,70,140,true));
ReefAngel.PWM.SetActinic( NutrientTransportMode(30,70,140,false));
}
else if ((now()%SECS_PER_DAY >= 82800) || (now()%SECS_PER_DAY < 28800)) // night mode 11pm -> 8am
{
if (now()%SECS_PER_DAY == 82800) pumpstormalert = false; //reset pump flag so alert can be sent if needed
if (!pumpstormalert)
{
pumpAlert.Send("Pump+Mode+Sine+NightMode!+Activated.");
pumpstormalert = true;
}
ReefAngel.PWM.SetDaylight(SineMode(30,50,20, true));
ReefAngel.PWM.SetActinic(SineMode(30,50,20, false));
}// end night mode 8am
else // choose a random pump mode (ReefCrest, TidalSwell, ShortPulse, LongPulse, Else) between 0 and 8
{
if (now()%SECS_PER_DAY == 28800)//at 8am set pump mode and determine if storm
{
pumpstormalert = false; //reset pump flag so alert can be sent if needed
//set random pump mode at start of each day (midnight) and determine if storm will occur
ranMode = random(30);
if (ranMode!=29 || ranMode!=17) ranMode = random (9);//if not storm set normal random pump mode
}
if (ranMode==29 || ranMode==17)//storm mode
{
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+STORM!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
StormMode();
}
else
{
switch (ranMode)
{
case 0:
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+ShortPule+case0!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
ReefAngel.PWM.SetActinic( ShortPulseMode(0,60,400,true) );
ReefAngel.PWM.SetDaylight( ShortPulseMode(0,60,400,false) );
break;
case 1:
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+ReefCrest+case1!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
ReefAngel.PWM.SetDaylight( ReefCrestMode(50,20,true) );
ReefAngel.PWM.SetActinic( ReefCrestMode(50,20,false) );
break;
case 2:
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+TidalSwell+case2!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
ReefAngel.PWM.SetDaylight( TidalSwellMode(70,true) );
ReefAngel.PWM.SetActinic( TidalSwellMode(70,false) );
break;
case 3:
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+TidalSwell+case3!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
ReefAngel.PWM.SetDaylight( TidalSwellMode(50,true) );
ReefAngel.PWM.SetActinic( TidalSwellMode(50,false) );
break;
case 4:
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+TideMode+case4!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
ReefAngel.PWM.SetDaylight( TideMode(50,30,70) );
ReefAngel.PWM.SetActinic( TideMode(50,30,70) );
break;
case 5:
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+LongPulse+case5!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
ReefAngel.PWM.SetDaylight( LongPulseMode(20,60,10,true) );
ReefAngel.PWM.SetActinic( LongPulseMode(20,60,10,false) );
break;
case 6:
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+ElseMode+case6!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
ReefAngel.PWM.SetDaylight( ElseMode(50,30,true) );
ReefAngel.PWM.SetActinic( ElseMode(50,30,false) );
break;
case 7:
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+SineWave+case7!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
ReefAngel.PWM.SetDaylight(SineMode(40,70,20, true));
ReefAngel.PWM.SetActinic(SineMode(40,70,20, false));
break;
case 8:
if (!pumpstormalert)
{
//enter storm mode for pumps (random)
pumpAlert.Send("Pump+Mode+ShortPule+case8!+Activated.");
pumpstormalert = true; //reset pump flag so alert can be sent if needed
}
ReefAngel.PWM.SetActinic( ShortPulseMode(10,50,600,true) );
ReefAngel.PWM.SetDaylight( ShortPulseMode(10,50,600,false) );
break;
}//end of random pump mode
}//end else switch
}//end else pump mode
} //end of DCPump custom
} // End Void JebaoRandomMode()