Ramp up / Down Lights

Do you have a question on how to do something.
Ask in here.
Post Reply
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Ramp up / Down Lights

Post by wolfador »

Roberto made me a cable so I can control my Ai Nano.

I have the timers setup, just need help getting the lights to ramp up / down like the Ai controller did. I had them set for 30min's time to ramp to the next light schedule.

Here is the schedule I had with the Ai Controller:
5am - 30m ramp - W0 B4 R4 - moon cycle
9am - 30m ramp - W3 B8 R8
11am - 30m ramp - W15 B20 R20
1p - 60m - ramp - W30 B35 R35
5p - 60m ramp - W5 B32 R32
8p - 30m ramp - W3 B7 R7
10p - 21m ramp - W0 B2 R2 - moon cycle

Here is how the Ai is setup in my pde:

Code: Select all

  if (hour()>=5 && hour()<9)
    {
  ReefAngel.AI.SetChannel(White,0);
  ReefAngel.AI.SetChannel(Blue,4);
  ReefAngel.AI.SetChannel(RoyalBlue,4);
    }
    else if (hour()>=9 && hour()<11)
    {
  ReefAngel.AI.SetChannel(White,3);
  ReefAngel.AI.SetChannel(Blue,8);
  ReefAngel.AI.SetChannel(RoyalBlue,8);
    }
   else if (hour()>=11 && hour()<13)
    {
  ReefAngel.AI.SetChannel(White,15);
  ReefAngel.AI.SetChannel(Blue,20);
  ReefAngel.AI.SetChannel(RoyalBlue,20);
    }
   else if (hour()>=13 && hour()<17)
    {
  ReefAngel.AI.SetChannel(White,30);
  ReefAngel.AI.SetChannel(Blue,35);
  ReefAngel.AI.SetChannel(RoyalBlue,35);
    }
   else if (hour()>=17 && hour()<20)
    {
  ReefAngel.AI.SetChannel(White,5);
  ReefAngel.AI.SetChannel(Blue,32);
  ReefAngel.AI.SetChannel(RoyalBlue,32);
    }
   else if (hour()>=20 && hour()<22)
    {
  ReefAngel.AI.SetChannel(White,3);
  ReefAngel.AI.SetChannel(Blue,7);
  ReefAngel.AI.SetChannel(RoyalBlue,7);
    }
   else if (hour()>=22 && hour()<5)
    {
  ReefAngel.AI.SetChannel(White,0);
  ReefAngel.AI.SetChannel(Blue,2);
  ReefAngel.AI.SetChannel(RoyalBlue,2);
    }
Also need to add in the Moon cycle for the overnight timers and some cool stuff like thunderstorm and clouds :D
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

Nice :)
So, my question now is whether you would like to have the same ramp as you have now or you want to get it more smooth.
The way I see you had it setup before was at 9am, it would go from W0B4R4 to W3B8R8 withint 30mins and then stay at that level until 11am. Then ramp from W3B8R8 at 11am to W15B20R20 within 30 mins and stay at that level for another hour and a half. Then go on the same way through the entire schedule posted.
Seems like a ramp, flat, ramp flat, ramp, flat type of waveform.
The PWMSlope function creates a symmetrical waveform which would be ramp, flat, ramp.
Or, we could even go with a sinusoidal type of waveform.
Up to you.
Roberto.
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

I think making it smoother would be awesome and make great use of the Ai Nano.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

Let's start by doing just one slope function.
You may be able to change and play around to achieve best results.
If it still doen't look right, we can revise.

Code: Select all

#include <ReefAngel_Features.h>
#include <ReefAngel_Globals.h>
#include <ReefAngel_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <ReefAngel_EEPROM.h>
#include <ReefAngel_NokiaLCD.h>
#include <ReefAngel_ATO.h>
#include <ReefAngel_Joystick.h>
#include <ReefAngel_LED.h>
#include <ReefAngel_TempSensor.h>
#include <ReefAngel_Relay.h>
#include <ReefAngel_PWM.h>
#include <ReefAngel_Timer.h>
#include <ReefAngel_Memory.h>
#include <ReefAngel.h>
#include <ReefAngel_AI.h>

void setup()
{
  ReefAngel.Init();  
  ReefAngel.AI.SetPort(highATOPin);
}

void loop()
{
  ReefAngel.AI.SetChannel(White,PWMSlope(9,0,22,0,0,30,240,0));
  ReefAngel.AI.SetChannel(Blue,PWMSlope(9,0,22,0,0,35,240,2));
  ReefAngel.AI.SetChannel(RoyalBlue,PWMSlope(9,0,22,0,0,35,240,2));
  ReefAngel.ShowInterface();
}
Let me know how it looks.
Roberto.
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

okay, I have it set to ramp up to 30,35,35 stopping at 5pm, after that it should start ramping down to 0,4,4 until 9am again. I read that the PWMSlope doesn't do inverted values. What would we do to get around that?

Thanks
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

Oh, the PWMSlope is symmetrical and the maximum amount of minutes it could slope up/down is 255 minutes.
The code I posted would ramp up, for example white channel, from 9am at 0% to 1pm at 30% and would stay at 30% from 1pm to 6pm. Then, ramp down from 6pm at 30% to 10pm at 0%, making a symmetrical shape.
By the looks of what you said, you were trying to create a pyramid type of waveform, instead of a trapezoid. Is it correct?
Roberto.
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

I guess I was looking to do an arc to better mimic the sun rising and setting but a trapezoid form will also work since that is what I was working with before.

I didn't know the PWMSlope would ramp back down so I just loaded the code you posted and will watch it here to see if it ramps down.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

We can do sinusoidal too if you would like.
There isn't such a function created yet, but it should be easy enough to do.
Roberto.
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

I am not sure it really do much for me now that I think about it since I am only going to 35% max power on the lights there is not much it could ramp up / down too. I think what we have now will work okay.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

I added the AI values to the /r99 xml readout / iPhone app so I can see how it ramps up without being there today. LOL. Looking okay so far.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

Cool!!
:mrgreen:
Let us know how RA and AI integration is working out for you when you are done testing it out :)
Roberto.
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

Still ramping up nicely.

Will the standard MoonPhase() in
http://forum.reefangel.com/viewtopic.ph ... e&start=10

work in this application? Full moon was set to 4% blue and 4% RoyalBlue on the Ai Controller.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

MoonPhase gives a value from 0 to 100.
You can just multiply that to 0.04 to achieve the 4%.
Roberto.
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

rimai wrote:MoonPhase gives a value from 0 to 100.
You can just multiply that to 0.04 to achieve the 4%.

Cool thats what I thought, I will load it up when I get home and try it out tonight.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

Moon Cycle worked good last night, I modified the times a bit for the main PWMSlope to shorten the white ramp to have the lights a little more blue when I get home from work.

Made a custom Main Screen to show the Ai LED values:

Image


Just gotta modify the spacing a bit to clean it up.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

duplicate
Last edited by wolfador on Tue Nov 08, 2011 8:54 am, edited 1 time in total.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

Nice!!!
You need to send a request to Curt to merge the changes you've made to the XML data, so everyone can use the AI data too in the future. :)
Roberto.
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

rimai wrote:Nice!!!
You need to send a request to Curt to merge the changes you've made to the XML data, so everyone can use the AI data too in the future. :)

I sent him a couple pull requests yesterday for it, he keeps finding small things wrong with it. :D I think I have it correctly now.


Now time to work on clouds and thunderstorms :lol:
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

Yeah, all you have to do is use the cloud and storm function that was created:
http://forum.reefangel.com/viewtopic.php?f=12&t=288
You will want to add a third variable for the royal blue channel.
Let me know if you have problems along the way.
Roberto.
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

Grr sketch too big :( anything I can remove?

Binary sketch size: 32768 bytes (of a 32256 byte maximum)
Features.h

Code: Select all

#define DisplayImages
#define wifi
#define CUSTOM_MAIN
#define SIMPLE_MENU
#define AI_LED
I can remove the DisplayImages but it still only gets me down to 32408 and I happen to like the images :mrgreen:

Code: Select all

#include <ReefAngel_Features.h>
#include <ReefAngel_Globals.h>
#include <ReefAngel_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <ReefAngel_EEPROM.h>
#include <ReefAngel_NokiaLCD.h>
#include <ReefAngel_ATO.h>
#include <ReefAngel_Joystick.h>
#include <ReefAngel_LED.h>
#include <ReefAngel_TempSensor.h>
#include <ReefAngel_Relay.h>
#include <ReefAngel_PWM.h>
#include <ReefAngel_Timer.h>
#include <ReefAngel_Memory.h>
//#include <ReefAngel_Salinity.h>
#include <ReefAngel_AI.h>
#include <ReefAngel.h>

byte WhiteValue=0;
byte BlueValue=0;
byte RoyalBlueValue=0;

#define Port8   8
#define Heater  7
#define Port6   6
#define Port5   5
#define FugePH  4
#define PH      3
#define SOL     2
#define FugeLT  1

#define T1LOW   720
#define T1HIGH  850
#define T2LOW   500
#define T2HIGH  850
#define T3LOW   650
#define T3HIGH  1000

// Labels for the web banner
#include <avr/pgmspace.h>
prog_char id_label[] PROGMEM = "wolfador";
prog_char probe1_label[] PROGMEM = "Water";
prog_char probe2_label[] PROGMEM = "Room";
prog_char probe3_label[] PROGMEM = "Ai%20Nano";
prog_char relay1_label[] PROGMEM = "Fuge%20Light";
prog_char relay2_label[] PROGMEM = "Ai%20Sol%20Nano";
prog_char relay3_label[] PROGMEM = "PowerHead";
prog_char relay4_label[] PROGMEM = "Fuge%20Pump";
prog_char relay5_label[] PROGMEM = "NA";
prog_char relay6_label[] PROGMEM = "NA";
prog_char relay7_label[] PROGMEM = "Heater";
prog_char relay8_label[] PROGMEM = "NA";


PROGMEM const char *webbanner_items[] = {
id_label, probe1_label, probe2_label, probe3_label, relay1_label, relay2_label,
relay3_label, relay4_label, relay5_label, relay6_label, relay7_label, relay8_label};

void WifiSendAlert(byte id, boolean IsAlert)
{
static byte alert_status;
if (IsAlert)
{
if ((alert_status & 1<<(id-1))==0)
{
alert_status|=1<<(id-1);
Serial.print("GET /status/alert.asp?e=4122988294@txt.att.net&id=");
Serial.println(alert_status,DEC);
Serial.println("\n\n");
}}
else
{
if (id==0)
{
alert_status=0;
delay(900);
}
else
{
alert_status&=~(1<<(id-1));
}}}

void DrawCustomMain()
{
     // the graph is drawn/updated when we exit the main menu &
     // when the parameters are saved
     ReefAngel.LCD.DrawDate(6, 115);
     pingSerial();
#if defined AI_LED && ! defined RemoveAllLights
     ReefAngel.LCD.DrawMonitor(15, 68, ReefAngel.Params);
     ReefAngel.LCD.DrawText(DPColor, DefaultBGColor, 70, 78 ,"W:");
     ReefAngel.LCD.DrawSingleMonitor(ReefAngel.AI.GetChannel(0), DPColor, 84, 78, 1);
     ReefAngel.LCD.DrawText(APColor , DefaultBGColor, 70, 90 ,"B:");
     ReefAngel.LCD.DrawSingleMonitor(ReefAngel.AI.GetChannel(1), APColor, 84, 90, 1);
     ReefAngel.LCD.DrawText(APColor , DefaultBGColor, 94, 90 ,"RB:");
     ReefAngel.LCD.DrawSingleMonitor(ReefAngel.AI.GetChannel(2), APColor, 115, 90, 1);
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
     ReefAngel.LCD.DrawMonitor(15, 65, 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, 100, TempRelay);
}
void DrawCustomGraph()
{
     ReefAngel.LCD.DrawText(DefaultFGColor, DefaultBGColor, 20, 2, "Wolfador's 10G");
     ReefAngel.LCD.DrawGraph(5,10);
}
//*********************************************************************************************************************************
// Random Cloud/Thunderstorm effects function
void CheckCloud()
{

  // ------------------------------------------------------------
  // Change the values below to customize your cloud/storm effect

  // Frequency in days based on the day of the month - number 2 means every 2 days, for example (day 2,4,6 etc)
  // For testing purposes, you can use 1 and cause the cloud to occur everyday
#define Clouds_Every_X_Days 1 

  // Percentage chance of a cloud happening today
  // For testing purposes, you can use 100 and cause the cloud to have 100% chance of happening
#define Cloud_Chance_per_Day 100

  // Minimum number of minutes for cloud duration.  Don't use max duration of less than 6
#define Min_Cloud_Duration 7

  // Maximum number of minutes for the cloud duration. Don't use max duration of more than 255
#define Max_Cloud_Duration 15

  // Minimum number of clouds that can happen per day
#define Min_Clouds_per_Day 3

  // Maximum number of clouds that can happen per day
#define Max_Clouds_per_Day 5

  // Only start the cloud effect after this setting
  // In this example, start could after 11:30am
#define Start_Cloud_After NumMins(11,30)

  // Always end the cloud effect before this setting
  // In this example, end could before 8:00pm
#define End_Cloud_Before NumMins(18,30)

  // Percentage chance of a lightning happen for every cloud
  // For testing purposes, you can use 100 and cause the lightning to have 100% chance of happening
#define Lightning_Change_per_Cloud 100

  // Note: Make sure to choose correct values that will work within your PWMSLope settings.
  // For example, in our case, we could have a max of 5 clouds per day and they could last for 50 minutes.
  // Which could mean 250 minutes of clouds. We need to make sure the PWMSlope can accomodate 250 minutes of effects or unforseen resul could happen.
    // Also, make sure that you can fit double those minutes between Start_Cloud_After and End_Cloud_Before.
  // In our example, we have 510 minutes between Start_Cloud_After and End_Cloud_Before, so double the 250 minutes (or 500 minutes) can fit in that 510 minutes window.
    // It's a tight fit, but it did.

    //#define printdebug // Uncomment this for debug print on Serial Monitor window
  #define forcecloudcalculation // Uncomment this to force the cloud calculation to happen in the boot process. 


  // Change the values above to customize your cloud/storm effect
  // ------------------------------------------------------------
  // Do not change anything below here

  static byte cloudchance=255;
  static byte cloudduration=0;
  static int cloudstart=0;
  static byte numclouds=0;
  static byte lightningchance=0;
  static byte cloudindex=0;
  static byte lightningstatus=0;
  static int LastNumMins=0;
  // Every day at midnight, we check for chance of cloud happening today
  if (hour()==0 && minute()==0 && second()==0) cloudchance=255;

#ifdef forcecloudcalculation
    if (cloudchance==255)
#else
    if (hour()==0 && minute()==0 && second()==1 && cloudchance==255) 
#endif
    {
      //Pick a random number between 0 and 99
      cloudchance=random(100); 
      // if picked number is greater than Cloud_Chance_per_Day, we will not have clouds today
      if (cloudchance>Cloud_Chance_per_Day) cloudchance=0;
      // Check if today is day for clouds. 
      if ((day()%Clouds_Every_X_Days)!=0) cloudchance=0; 
      // If we have cloud today
      if (cloudchance)
      {
        // pick a random number for number of clouds between Min_Clouds_per_Day and Max_Clouds_per_Day
        numclouds=random(Min_Clouds_per_Day,Max_Clouds_per_Day);
        // pick the time that the first cloud will start
        // the range is calculated between Start_Cloud_After and the even distribuition of clouds on this day. 
        cloudstart=random(Start_Cloud_After,Start_Cloud_After+((End_Cloud_Before-Start_Cloud_After)/(numclouds*2)));
        // pick a random number for the cloud duration of first cloud.
        cloudduration=random(Min_Cloud_Duration,Max_Cloud_Duration);
        //Pick a random number between 0 and 99
        lightningchance=random(100);
        // if picked number is greater than Lightning_Change_per_Cloud, we will not have lightning today
        if (lightningchance>Lightning_Change_per_Cloud) lightningchance=0;
      }
    }
  // Now that we have all the parameters for the cloud, let's create the effect

  if (cloudchance)
  {
    //is it time for cloud yet?
    if (NumMins(hour(),minute())>=cloudstart && NumMins(hour(),minute())<(cloudstart+cloudduration))
    {
      WhiteValue=ReversePWMSlope(cloudstart,cloudstart+cloudduration,WhiteValue,0,180);
      if (lightningchance && (NumMins(hour(),minute())==(cloudstart+(cloudduration/2))) && second()<5) 
      {
        if (random(100)<20) lightningstatus=1; 
        else lightningstatus=0;
        if (lightningstatus)
        {
          WhiteValue=50; 
          BlueValue=50;
          RoyalBlueValue=50;
        }
        else 
        {
          WhiteValue=0; 
          BlueValue=0;
          RoyalBlueValue=0;
        }
        delay(1);
      }
    }
    if (NumMins(hour(),minute())>(cloudstart+cloudduration))
    {
      cloudindex++;
      if (cloudindex < numclouds)
      {
        cloudstart=random(Start_Cloud_After+(((End_Cloud_Before-Start_Cloud_After)/(numclouds*2))*cloudindex*2),(Start_Cloud_After+(((End_Cloud_Before-Start_Cloud_After)/(numclouds*2))*cloudindex*2))+((End_Cloud_Before-Start_Cloud_After)/(numclouds*2)));
        // pick a random number for the cloud duration of first cloud.
        cloudduration=random(Min_Cloud_Duration,Max_Cloud_Duration);
        //Pick a random number between 0 and 99
        lightningchance=random(100);
        // if picked number is greater than Lightning_Change_per_Cloud, we will not have lightning today
        if (lightningchance>Lightning_Change_per_Cloud) lightningchance=0;
      }
    }
  }
  
  if (LastNumMins!=NumMins(hour(),minute()))
  {
    LastNumMins=NumMins(hour(),minute());
    ReefAngel.LCD.Clear(255,0,120,132,132);
    ReefAngel.LCD.DrawText(0,255,5,120,"C");
    ReefAngel.LCD.DrawText(0,255,11,120,"00:00");
    ReefAngel.LCD.DrawText(0,255,45,120,"L");
    ReefAngel.LCD.DrawText(0,255,51,120,"00:00");
    if (cloudchance && (NumMins(hour(),minute())<cloudstart))
    {
      int x=0;
      if ((cloudstart/60)>=10) x=11; else x=17;
      ReefAngel.LCD.DrawText(0,255,x,120,(cloudstart/60));
      if ((cloudstart%60)>=10) x=29; else x=35;
      ReefAngel.LCD.DrawText(0,255,x,120,(cloudstart%60));
    }
    ReefAngel.LCD.DrawText(0,255,90,120,cloudduration);
    if (lightningchance) 
    {
      int x=0;
      if (((cloudstart+(cloudduration/2))/60)>=10) x=51; else x=57;
      ReefAngel.LCD.DrawText(0,255,x,120,((cloudstart+(cloudduration/2))/60));
      if (((cloudstart+(cloudduration/2))%60)>=10) x=69; else x=75;
      ReefAngel.LCD.DrawText(0,255,x,120,((cloudstart+(cloudduration/2))%60));
    }
  }   
}

byte ReversePWMSlope(long cstart,long cend,byte PWMStart,byte PWMEnd, byte clength)
{
  long n=elapsedSecsToday(now());
  cstart*=60;
  cend*=60;
  if (n<cstart) return PWMStart;
  if (n>=cstart && n<=(cstart+clength)) return map(n,cstart,cstart+clength,PWMStart,PWMEnd);
  if (n>(cstart+clength) && n<(cend-clength)) return PWMEnd;
  if (n>=(cend-clength) && n<=cend) return map(n,cend-clength,cend,PWMEnd,PWMStart);
  if (n>cend) return PWMStart;
}

void setup()
{
    ReefAngel.Init();

    ReefAngel.LoadWebBanner(pgm_read_word(&(webbanner_items[0])), SIZE(webbanner_items));
    ReefAngel.Timer[4].SetInterval(180);
    ReefAngel.Timer[4].Start();

    ReefAngel.FeedingModePorts = B00001100;
    ReefAngel.WaterChangePorts = B01001100;
    //ReefAngel.OverheatShutoffPorts = B10110000;
   // ReefAngel.LightsOnPorts = B00000010;
  
  //WifiAuthentication("wolfador:gixxer");   

    ReefAngel.Relay.On(FugePH);
    ReefAngel.Relay.On(PH);
    ReefAngel.Relay.On(SOL);
    
    ReefAngel.AI.SetPort(highATOPin);
}

void loop()
{
    ReefAngel.ShowInterface();

    // Specific functions
    ReefAngel.StandardLights(FugeLT,23,0,10,0); 
    ReefAngel.StandardHeater(Heater);
    
    // Web Banner stuff
if(ReefAngel.Timer[4].IsTriggered())
{
ReefAngel.Timer[4].Start();
ReefAngel.WebBanner();
}

//This will send an alert if T1 is below 77 and reset if above 78
if (ReefAngel.Params.Temp1<770 && ReefAngel.Params.Temp1>0) WifiSendAlert(3,true);
if (ReefAngel.Params.Temp1>780 && ReefAngel.Params.Temp1<1850) WifiSendAlert(3,false);
//This will send an alert if T1 is above 83 and reset if below 80
if (ReefAngel.Params.Temp1>820 && ReefAngel.Params.Temp1>1850) WifiSendAlert(4,true);
if (ReefAngel.Params.Temp1<800 && ReefAngel.Params.Temp1>0) WifiSendAlert(4,false);

   if (hour()>=22 || hour()<9)
    {
  ReefAngel.AI.SetChannel(White,0);
  ReefAngel.AI.SetChannel(Blue,MoonPhase()*0.06);
  ReefAngel.AI.SetChannel(RoyalBlue,MoonPhase()*0.06);
    }
    else
    {
      WhiteValue=PWMSlope(9,0,21,0,3,30,200,3);
      BlueValue=PWMSlope(9,0,21,0,8,35,240,8);
      RoyalBlueValue=PWMSlope(9,0,21,0,8,35,240,8);
      CheckCloud();
      ReefAngel.AI.SetChannel(White,WhiteValue);
      ReefAngel.AI.SetChannel(Blue,BlueValue);
      ReefAngel.AI.SetChannel(RoyalBlue,RoyalBlueValue);
      
  //ReefAngel.AI.SetChannel(White,PWMSlope(9,0,21,0,3,30,200,3));
  //ReefAngel.AI.SetChannel(Blue,PWMSlope(9,0,21,0,8,35,240,8));
  //ReefAngel.AI.SetChannel(RoyalBlue,PWMSlope(9,0,21,0,8,35,240,8));
    }

}
Attachments
Ai_Clouds.pde
(4.92 KiB) Downloaded 428 times
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

If I remove the WifiSendAlert() it compiles and gets it down to 32054 bytes (of a 32256 byte maximum).

Would like to keep that if possible though.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

You can do custom menu to save more spave :)
Roberto.
binder
Posts: 2865
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: Ramp up / Down Lights

Post by binder »

rimai wrote:You can do custom menu to save more spave :)
i agree. you can trigger the modes via wifi so that can save the memory with less menu options.

curt
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

I did a custom menu with just the Feeding and WaterChange modes. I think I will add a Thunderstorm menu item to to show it off.

Got the Clouds code working and went through a test cycle. Looked neat. Next time it goes through I will try and grab a video.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

Cool!!
Yes, I'd love to see video :)
Roberto.
binder
Posts: 2865
Joined: Fri Mar 18, 2011 6:20 pm
Location: Illinois
Contact:

Re: Ramp up / Down Lights

Post by binder »

wolfador wrote:
rimai wrote:Nice!!!
You need to send a request to Curt to merge the changes you've made to the XML data, so everyone can use the AI data too in the future. :)
I sent him a couple pull requests yesterday for it, he keeps finding small things wrong with it. :D I think I have it correctly now.
Yeah, I have to find the small things in order to keep the code footprint down and keep up with the "high quality code" for the controller.
Code is merged in master branch. :ugeek:

curt
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

binder wrote: Yeah, I have to find the small things in order to keep the code footprint down and keep up with the "high quality code" for the controller.
Code is merged in master branch. :ugeek:

curt
Cool thanks. I will finalize it into the iPhone app now.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Ramp up / Down Lights

Post by rimai »

Can we officially say that RA is capable of controlling Aqua Illumination fixtures?
Where is the video proof of it? ;)
Roberto.
wolfador
Posts: 241
Joined: Sun Sep 04, 2011 9:59 am
Location: Pittsburgh, PA

Re: Ramp up / Down Lights

Post by wolfador »

yes we can, have not been home this weekend to get a video lol. Will get one soon.
John
ReefAngel and ReefAngel-HD developer
If the RA iOS app has helped please consider a donation
Image
Post Reply