SWINGRRRR
Premium Member
You guys really **** me off, you know this is going to cost me $$$$.
Just depreciate it a little and then you make your money back in taxes.
You guys really **** me off, you know this is going to cost me $$$$.
Does this make any sense to add to the if?
Code:""if (mins > start + period && mins <= start + period - fade) { analogWrite(randPin, randNumber) delay (randTime);"" int randPin = random(1-8); //I know not exact pins, Ill have to look at my Mega and shield to get exact int randTime = random (1500, 3500); int randDim = random (85, 255) //Random dimming from 33% to 100%
Ill have to change the mins equation to figure out what time to run it at. How will the delay time mess with the RTC time if any?
OK, can y'all look over this. This is all 8 channels. You can add or delete as you need. Again, I am using the Mega, so YMMV. I got it to compile so I guess its something. I think I need to change the fade duration, but I am not sure with the 15 minute stagger. I know they are out of order, but thats for a reason so it will rise E->W and reverse.
The next thing Id like to add is a callDayofWeek. Im thinking maybe clouds on even days, full on the next. That way I don't have to figure out how to split the day up even more.
EDIT: Looking back over I think I need to lower the fadeDuration. Otherwise wont it take 8 hours just to fade up?
I'm waiting on my shield. :wavehand: (Just messing with ya. I know you are a busy man.)That looks OK, try it out!
I didn't notice that. I just wanted the whites on as a kinda moon light. I want to do the moon phasing stuff later on. I just threw the 100's in there off the top of my head.One other thing - it looks like in the "night" mode you are setting some of the banks to 100. Since your fading routine will take all the banks down to zero at the last minute of the day, those banks will suddenly jump up to 100 when night hits.
Thanks for the very detailed explanation.
How can I add LCD display command to the sketches?
Thanks
I'm waiting on my shield. :wavehand: (Just messing with ya. I know you are a busy man.)
I didn't notice that. I just wanted the whites on as a kinda moon light. I want to do the moon phasing stuff later on. I just threw the 100's in there off the top of my head.
Thanks for the very detailed explanation.
How can I add LCD display command to the sketches?
Thanks
lcd.print("hello, world!;
You could use the setLed functions, or create a moonlight function, and basically do the same thing at night as you're doing during the day. It could even check the day of the month and vary the moonlight intensity to mimic moon phases.
Another cool extension would be checking the day of the year and varying the start/stop times to mimic day length changes.
Someone asked me about this sketch today:
There are all sorts of problems in it and it's got some obscurities. Here it is cleaned up a bit. Plus added some comments near the section that you should change to alter the schedule and behavior of the dimming.
Code:/* Arduino LED controller for reef aquariums // paramterized LED lighting control for reef aquariums // use a DS1307 RTC to kick off lighting schedules // fade up on a given slope // delay a set amount // fade back down // such that the photoperiod lasts the correct amount of time // Circuit // // PWM pins described below connected to dimming circuits on drivers // ledMaster pin below connected to a 120V AC relay to turn the LED drivers on and off (optional) // grounds from drivers connected to arduino ground // DS1307 RTC connected via I2C // // // */ // Pins to control LEDs. Change these if you're using different pins. int blueLed = 9; // LED PWM channel for blues int whiteLed = 10; // LED PWM channel for whites // Set up RTC #include "Wire.h" #define DS1307_I2C_ADDRESS 0x68 // RTC variables byte second, rtcMins, oldMins, rtcHrs, oldHrs, dayOfWeek, dayOfMonth, month, year; // Other variables. These control the behavior of lighting. Change these to customize behavoir int minCounter = 0; // counter that resets at midnight. Don't change this. int blueStartMins = 480; // minute to start blues. Change this to the number of minutes past // midnight you want the blues to start. int whiteStartMins = 480; // minute to start whites. Same as above. int bluePhotoPeriod = 510; // photoperiod in minutes, blues. Change this to alter the total // photoperiod for blues. int whitePhotoPeriod = 510; // photoperiod in minutes, whites. Same as above. int fadeDuration = 60; // duration of the fade on and off for sunrise and sunset. Change // this to alter how long the fade lasts. int blueMax = 255; // max intensity for blues. Change if you want to limit max intensity. int whiteMax = 255; // max intensity for whites. Same as above. /****** LED Functions ******/ /***************************/ //function to set LED brightness according to time of day //function has three equal phases - ramp up, hold, and ramp down void setLed(int mins, // current time in minutes int ledPin, // pin for this channel of LEDs int start, // start time for this channel of LEDs int period, // photoperiod for this channel of LEDs int fade, // fade duration for this channel of LEDs int ledMax // max value for this channel ) { if (mins > start && mins <= start + fade) { analogWrite(ledPin, map(mins - start, 0, fade, 0, ledMax)); } if (mins > start + period && mins <= start + period - fade) { analogWrite(ledPin, ledMax); } if (mins > start + period - fade && mins <= start + period) { analogWrite(ledPin, map(mins - start + period - fade, 0, fade, ledMax, 0)); } } /***** RTC Functions *******/ /***************************/ // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return ( (val/10*16) + (val%10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return ( (val/16*10) + (val%16) ); } // 1) Sets the date and time on the ds1307 // 2) Starts the clock // 3) Sets hour mode to 24 hour clock // Assumes you're passing in valid numbers. void setDateDs1307(byte second, // 0-59 byte minute, // 0-59 byte hour, // 1-23 byte dayOfWeek, // 1-7 byte dayOfMonth, // 1-28/29/30/31 byte month, // 1-12 byte year) // 0-99 { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.send(0); Wire.send(decToBcd(second)); Wire.send(decToBcd(minute)); Wire.send(decToBcd(hour)); Wire.send(decToBcd(dayOfWeek)); Wire.send(decToBcd(dayOfMonth)); Wire.send(decToBcd(month)); Wire.send(decToBcd(year)); Wire.endTransmission(); } // Gets the date and time from the ds1307 void getDateDs1307(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.send(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); *second = bcdToDec(Wire.receive() & 0x7f); *minute = bcdToDec(Wire.receive()); *hour = bcdToDec(Wire.receive() & 0x3f); *dayOfWeek = bcdToDec(Wire.receive()); *dayOfMonth = bcdToDec(Wire.receive()); *month = bcdToDec(Wire.receive()); *year = bcdToDec(Wire.receive()); } void setup() { // init I2C Wire.begin(); } /***** Main Loop ***********/ /***************************/ void loop() { // get time from RTC and put in hrs and mins variables getDateDs1307(&second, &rtcMins, &rtcHrs, &dayOfWeek, &dayOfMonth, &month, &year); minCounter = rtcHrs * 60 + rtcMins; // determine if it is day or night, and act accordingly if ((minCounter > blueStartMins || minCounter > whiteStartMins) && (minCounter < blueStartMins + bluePhotoPeriod || minCounter < whiteStartMins + whitePhotoPeriod)) { //day // set LED states setLed(minCounter, blueLed, blueStartMins, bluePhotoPeriod, fadeDuration, blueMax); setLed(minCounter, whiteLed, whiteStartMins, whitePhotoPeriod, fadeDuration, whiteMax); } else { //night analogWrite(blueLed, 0); analogWrite(whiteLed, 0); } // Get ready for next iteration of loop delay(1000); }
you can assign it to any pin you want.Which pin is the LedMaster - controlling relay, assigned to?
Thanks
What kind of drivers are you guys using to run the leds? I kind of understand the programming and the clouds but I am concerned about only having 24 LEDS and two menawells. Can this effect be seen with so little amounts of LEDS? Can I turn on and off single LED in a string off 12? Thats my dum question for the day, LOL....
Thanks for the lead Swingrrrr... Jeff
FWIW One of the people using my "ELN shield" told me they'd run it on both styles of ELN, so I'd suppose it works.
Have any extra shields? Are these the prototypes you were selling for cost of shipping? Shot me a PM if you have any. Thank you again for your help, the sites and recommendations you sent me a while back came in handy ... JeffFWIW One of the people using my "ELN shield" told me they'd run it on both styles of ELN, so I'd suppose it works.
Dont think he is ignoring you. Last I heard he got called away to D.C. Opps, Ive probably said to much.Have any extra shields? Are these the prototypes you were selling for cost of shipping? Shot me a PM if you have any. Thank you again for your help, the sites and recommendations you sent me a while back came in handy ... Jeff
can someone help me with some code? I will be using 6 pins, 2 for blue, and 4 for white integrated with a rtc.
Dont think he is ignoring you. Last I heard he got called away to D.C. Opps, Ive probably said to much.
SWINGRRRR;17184700Sure. What are you wanting to do?[/QUOTE said:Ok let me try to explain what I want.
I want the blues to come on at a set time and ramp up stay on for as set time then go off. they will be on two channels.
I will have four channels of white
i want them to come on staggered say 30 minutes apart. ramp up , stay on for a set time, then ramp down in the same order.
I would also like to have storm added, but not necessary at this time. would just be fun to play with.
my only real concern is if the power goes out I need the lights to come back on. I'm not sure how to add a check for that. I know I can use the rtc, but not sure how.
Dont think he is ignoring you. Last I heard he got called away to D.C. Opps, Ive probably said to much.
Sound pretty much like what I wanted. I posted a sketch on page one that will do what you want, you'd just have to adapt it to your needs.Ok let me try to explain what I want.
I want the blues to come on at a set time and ramp up stay on for as set time then go off. they will be on two channels.
I will have four channels of white
i want them to come on staggered say 30 minutes apart. ramp up , stay on for a set time, then ramp down in the same order.
I would also like to have storm added, but not necessary at this time. would just be fun to play with.
my only real concern is if the power goes out I need the lights to come back on. I'm not sure how to add a check for that. I know I can use the rtc, but not sure how.