Hello, I have this in my controller PDE but I dont see the effects of clouds or lightning. Is there something wrong?. I do not see why clouds or lightning? please I need you if you look you see faulty. Thanks

// Autogenerated file by RAGen (v1.1.0.126), (12/03/2011 12:18)// RA_120311_1218.pde//// This version designed for v0.8.5 Beta 17 or later

/* The following features are enabled for this PDE File: #define DisplayImages#define DosingPumpSetup#define DateTimeSetup#define ATOSetup#define MetalHalideSetup#define SingleATOSetup#define StandardLightSetup*/

{ // ------------------------------------------------------------ // 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(14,30) // Always end the cloud effect before this setting // In this example, end could before 4:30pm#define End_Cloud_Before NumMins(20,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 result 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)) { DaylightPWMValue=ReversePWMSlope(cloudstart,cloudstart+cloudduration,DaylightPWMValue,0,180); if (lightningchance && (NumMins(hour(),minute())==(cloudstart+(cloudduration/2))) && second()<5) { if (random(100)<20) lightningstatus=1; else lightningstatus=0; if (lightningstatus) { DaylightPWMValue=100; ActinicPWMValue=100; } else { DaylightPWMValue=0; ActinicPWMValue=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; //End Cloud & Lighting }

When you add this line, you most likely get an error about sketch being too big.If you do, open your ReefAngel_Features.h file on notepad and paste the below code over the entire contents of that file. The file is located at "Documents\Arduino\libraries\ReefAngel_Features" folder

/* * Copyright 2010-11 Curt Binder * * Licensed under the Apache License, Version 2.0 (the "License") * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */

// Autogenerated file by RAGen (v1.1.0.126), (12/03/2011 12:18)// RA_120311_1218.pde//// This version designed for v0.8.5 Beta 17 or later

/* The following features are enabled for this PDE File: #define DisplayImages#define DosingPumpSetup#define DateTimeSetup#define ATOSetup#define MetalHalideSetup#define SingleATOSetup#define StandardLightSetup*/

{ // ------------------------------------------------------------ // 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(14,30) // Always end the cloud effect before this setting // In this example, end could before 4:30pm#define End_Cloud_Before NumMins(20,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 result 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)) { DaylightPWMValue=ReversePWMSlope(cloudstart,cloudstart+cloudduration,DaylightPWMValue,0,180); if (lightningchance && (NumMins(hour(),minute())==(cloudstart+(cloudduration/2))) && second()<5) { if (random(100)<20) lightningstatus=1; else lightningstatus=0; if (lightningstatus) { DaylightPWMValue=100; ActinicPWMValue=100; } else { DaylightPWMValue=0; ActinicPWMValue=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; //End Cloud & Lighting }

You must be editing the wrong file.You have to make sure you save before you try uploading the code.This is the size with the same features above:Binary sketch size: 31080 bytes (of a 32256 byte maximum)

// Autogenerated file by RAGen (v1.1.0.126), (12/03/2011 12:18)// RA_120311_1218.pde//// This version designed for v0.8.5 Beta 17 or later

/* The following features are enabled for this PDE File: #define DisplayImages#define DosingPumpSetup#define DateTimeSetup#define ATOSetup#define MetalHalideSetup#define SingleATOSetup#define StandardLightSetup*/

{ // ------------------------------------------------------------ // 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(14,30) // Always end the cloud effect before this setting // In this example, end could before 4:30pm#define End_Cloud_Before NumMins(20,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 result 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)) { DaylightPWMValue=ReversePWMSlope(cloudstart,cloudstart+cloudduration,DaylightPWMValue,0,180); if (lightningchance && (NumMins(hour(),minute())==(cloudstart+(cloudduration/2))) && second()<5) { if (random(100)<20) lightningstatus=1; else lightningstatus=0; if (lightningstatus) { DaylightPWMValue=100; ActinicPWMValue=100; } else { DaylightPWMValue=0; ActinicPWMValue=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; //End Cloud & Lighting }