Who wants a cheap, simple, Arduino-based LED controller?

i am looking for one of these to control the lunar cycle on my rgb led strip drivers,
will this build work on led strips and does anyone have a pre built one or a link to a pre built i could purchase.
if not i have the typhon manual but was just looking at running the led strips

The led strips have drivers already? If the driver is PWM compatible, the Typhon will work fine.
 
Hooked up my supplemental royal blues using a Typhon controller today. It is so much easier to program and more flexible than my ALC for the Reefkeeper. I wish I had heard about it before I spent 80.00 for the ALC controller that can only operate 2 channels and has a weird way of setting fade times.
 
i do not know if my drivers are pwm compatible i do know they have common anode
will this run with a typhon if so where can i get one, can you pm me if you have one for sale.
i think worst case is i need to look at new drivers or even new led set.
but need to get my hands on a typhon first.
 
Thank you iced98lx!
Anything specific you had to configure to make it work?
Does it matter that this chip has open-drain outputs?
How do you have registers configured??
Sorry for so many questions. .
 
the one I got uses i2c and was very easy to get up and going, didn't take long at all.

One thing to note, I seem to remember that the pwm resolution on the LDD's isn't very high, possibly not worth going to 16bit.. Maybe someone else has some info on that I'm at work and don't have a datasheet handy
 
finally got my RGB strips running off the arduino mega 2560 although i only have a freshwater aquarium i liked the idea of the typhon reef software,
at present i have the LED strips running but am now adding my wave make on to the arduino.
if anyone is interested here is the info.
Build
Build2
Light phase

I have set each color it's own channel, i can control when each color starts and how bright it gets
:beer:I would never have been able to do this without the help of this thread:beer:
 
I'm interested in taking an arduino mega and making a type ][ Typhon. What I mean is I would like to use 8 dimming channels and add temp, could use a 20x4 display or better. What would it take besides a RTC, 20x4 LCD and 4 buttons with 10k resistors?
Plus code of course. I've looked at the original code and I'm not sure about the I2C clock.
I've built one and love it for what it is, unfortunately I need more PWM channels.

I'ld like to hear from anyone that is interested in making something like this.

I'm building an AquaPorn controller as well. Great build, very cool

sb
 
I'm interested in taking an arduino mega and making a type ][ Typhon. What I mean is I would like to use 8 dimming channels and add temp, could use a 20x4 display or better. What would it take besides a RTC, 20x4 LCD and 4 buttons with 10k resistors?
Plus code of course. I've looked at the original code and I'm not sure about the I2C clock.
I've built one and love it for what it is, unfortunately I need more PWM channels.

I'ld like to hear from anyone that is interested in making something like this.

I'm building an AquaPorn controller as well. Great build, very cool

sb

If you are talking about building it from an existing "Mega Arduino"using shields and such, that shouldn't be too much trouble. But if you're saying that you want to redesign the original "Typhon" to use the Mega's 2560 chip, then you're in for quite an undertaking. The Mega2560 chip would be a royal pain to solder, but not impossible. Trouble is- the time spent to design the PcB, hunt down and order the components, build the completed unit, and write the software, It would still only provide you with up to14 pwm channels and 8bit dimming performance. The StormX controller has 16 channels and 12bit dimming with "no assembly required" .LOL
 
A cobbled together version of the StormX would be a possibility but it's so tiny I'd just buy one, not to dissuade you from DIY as It is very, very, addictive, but.....

You could probably also expand your existing typhon board using a few parts following the StormX controller model. It is I2C based and allows up to 16 pwm channels, plus all sorts of other possibilities with programing the spare pins.
 
If you are talking about building it from an existing "Mega Arduino"using shields and such, that shouldn't be too much trouble. But if you're saying that you want to redesign the original "Typhon" to use the Mega's 2560 chip, then you're in for quite an undertaking. The Mega2560 chip would be a royal pain to solder, but not impossible. Trouble is- the time spent to design the PcB, hunt down and order the components, build the completed unit, and write the software, It would still only provide you with up to14 pwm channels and 8bit dimming performance. The StormX controller has 16 channels and 12bit dimming with "no assembly required" .LOL

I was just thinking of throwing together a mega and some shields. Nothing too complicated. I'm thinking the programming would be the hard part. At least for me.
 
A cobbled together version of the StormX would be a possibility but it's so tiny I'd just buy one, not to dissuade you from DIY as It is very, very, addictive, but.....

You could probably also expand your existing typhon board using a few parts following the StormX controller model. It is I2C based and allows up to 16 pwm channels, plus all sorts of other possibilities with programing the spare pins.

I will look that up and see what I can do with that. My thoughts was I would most likely run out of program memory before I got what I wanted.

I still have a homemade I2C shield for my Typhon that allowed me to use all 6 PWM pins. I ran my 20x4 LCD off it with temp. My problem with that was if I enabled all 6 channels the lcd would flicker. If I just did five led channels then it was stable. I ended up going back to the original. One extra channel wasn't enough to make it worth my while.
 
Anyone look at the Typhon_B sketch? I've been using it since Oct. 2011.
I posted the zip in post 778. I got it some where and liked it.

Anyway I was trying to modify it to have 8 channels instead of 4 and come across the fact that it has temp built in. Anyone ever get it working? O2 just reposted it a couple posts back.
It would be great if someone that can do a little programming could get the temp to work.

I have loaded a Mega2560 with this code and was trying to get it to display 8 channels. Thought it would be easy to fix. I can get the code in but I can only get 4 channels to come up to select the start/stop times ect. Anyone got suggestions?
sb
 
i took mine from 4 channel to 5 channel and do not see whey you can not just add more channels and state pins on the mega 2560, the 4 line lcd would give space to put the information on the display
here is the 5 channel


to get 5 channels i just added to these lines
Code:
// LED variables. These control the behavior of lighting. Change these to customize behavoir
int minCounter = 0;         // counter that resets at midnight.
int oldMinCounter = 0;      // counter that resets at midnight.
int oneLed = 44;             // pin for channel 1
int twoLed = 45;            // pin for channel 2
int threeLed = 46;          // pin for channel 3
int fourLed = 47;            // pin for channel 4
int fiveLed = 48;            // pin for channel 5

int oneVal = 0;             // current value for channel 1
int twoVal = 0;             // current value for channel 2
int threeVal = 0;           // current value for channel 3
int fourVal = 0;            // current value for channel 4
int fiveVal = 0;            // current value for channel 5

Code:
EEPROMVar<int> fiveStartMins = 480;
EEPROMVar<int> fivePhotoPeriod = 510;  
EEPROMVar<int> fiveMax = 100;          
EEPROMVar<int> fiveFadeDuration = 00;

Code:
//check & set fade durations
  if(oneFadeDuration > onePhotoPeriod/2 && onePhotoPeriod >0){oneFadeDuration = onePhotoPeriod/2;}
  if(oneFadeDuration<1){oneFadeDuration=1;}
  
  if(twoFadeDuration > twoPhotoPeriod/2 && twoPhotoPeriod >0){twoFadeDuration = twoPhotoPeriod/2;} 
  if(twoFadeDuration<1){twoFadeDuration=1;}
  
  if(threeFadeDuration > threePhotoPeriod/2 && threePhotoPeriod >0){threeFadeDuration = threePhotoPeriod/2;}
  if(threeFadeDuration<1){threeFadeDuration=1;}
  
  if(fourFadeDuration > fourPhotoPeriod/2 && fourPhotoPeriod > 0){fourFadeDuration = fourPhotoPeriod/2;}
  if(fourFadeDuration<1){fourFadeDuration=1;}
  
  if(fiveFadeDuration > fivePhotoPeriod/2 && fivePhotoPeriod > 0){fiveFadeDuration = fivePhotoPeriod/2;}
  if(fiveFadeDuration<1){fiveFadeDuration=1;}
  //check & set any time functions
  
  
  //set outputs
  if(!override){
  oneVal = setLed(minCounter, oneLed, oneStartMins, onePhotoPeriod, oneFadeDuration, oneMax);
  twoVal = setLed(minCounter, twoLed, twoStartMins, twoPhotoPeriod, twoFadeDuration, twoMax);
  threeVal = setLed(minCounter, threeLed, threeStartMins, threePhotoPeriod, threeFadeDuration, threeMax);
  fourVal = setLed(minCounter, fourLed, fourStartMins, fourPhotoPeriod, fourFadeDuration, fourMax);
  fiveVal = setLed(minCounter, fiveLed, fiveStartMins, fivePhotoPeriod, fiveFadeDuration, fiveMax);
  }
  else{
    ovrSetAll(overpercent);
  }

REMEMBER to add menu cout to what you want
so on / off would be 2 menus
on/off/fade would be 3 and so on
where i added a 5th menu group it took it to 25 menu count



Code:
  //iterate through the menus
  if(menu.uniquePress()){
    analogWrite(bkl,bklOn);
    bklTime = millis();
    if(menuCount < 25){
      menuCount++;
    }else {
      menuCount = 1;

Code:
  printHMS(hour, minute, second);
    lcd.setCursor(0,1);
    lcd.print(oneVal);
    lcd.setCursor(4,1);
    lcd.print(twoVal);
    lcd.setCursor(8,1);
    lcd.print(threeVal);
    lcd.setCursor(12,1);
    lcd.print(fourVal);
     lcd.setCursor(12,0);
    lcd.print(fiveVal);


Then you just put in the menu what you want.
my channel 5 switches a relay to bring on wave maker twice a day.
Code:
if(menuCount == 19){
    //set start time for channel five
    lcd.setCursor(0,0);
    lcd.print("Channel 5 Start");
    lcd.setCursor(0,1);
    printMins(fiveStartMins, true);
    if(plus.uniquePress() && fiveStartMins < 1440){
        fiveStartMins++;
        if(fivePhotoPeriod >0){fourPhotoPeriod--;}
        else{fivePhotoPeriod=1439;}
      bklTime = millis();
    }
    if(minus.uniquePress() && fiveStartMins > 0){
        fiveStartMins--;
        if(fivePhotoPeriod<1439){fivePhotoPeriod++;}
        else{fivePhotoPeriod=0;}
      bklTime = millis();
    }
  }


  if(menuCount == 20){
    //set end time for channel five
    lcd.setCursor(0,0);
    lcd.print("Channel 5 End");
    lcd.setCursor(0,1);
    printMins(fiveStartMins+fivePhotoPeriod, true);
    if(plus.uniquePress()){
      if(fivePhotoPeriod < 1439){
      fivePhotoPeriod++;}
      else{
        fivePhotoPeriod=0;
      }
      bklTime = millis();
    }
    if(minus.uniquePress()){
      if(fivePhotoPeriod >0){
        fivePhotoPeriod--;}
      else{
        fivePhotoPeriod=1439;
      }
      bklTime = millis();
    }
  }



  if(menuCount == 21){
   //set start time for channel five
    lcd.setCursor(0,0);
    lcd.print("Channel 5 Start");
    lcd.setCursor(0,1);
    printMins(fiveStartMins, true);
    if(plus.uniquePress() && fiveStartMins < 1440){
        fiveStartMins++;
        if(fivePhotoPeriod >0){fourPhotoPeriod--;}
        else{fivePhotoPeriod=1439;}
      bklTime = millis();
    }
    if(minus.uniquePress() && fiveStartMins > 0){
        fiveStartMins--;
        if(fivePhotoPeriod<1439){fivePhotoPeriod++;}
        else{fivePhotoPeriod=0;}
      bklTime = millis();
    } 
  }

 if(menuCount == 22){
    //set end time for channel five
    lcd.setCursor(0,0);
    lcd.print("Channel 5 End");
    lcd.setCursor(0,1);
    printMins(fiveStartMins+fivePhotoPeriod, true);
    if(plus.uniquePress()){
      if(fivePhotoPeriod < 1439){
      fivePhotoPeriod++;}
      else{
        fivePhotoPeriod=0;
      }
      bklTime = millis();
    }
    if(minus.uniquePress()){
      if(fivePhotoPeriod >0){
        fivePhotoPeriod--;}
      else{
        fivePhotoPeriod=1439;
      }
      bklTime = millis();
    }
  }

  if(menuCount == 23){
    //set intensity for channel five
    lcd.setCursor(0,0);
    lcd.print("Channel 5 Max");
    lcd.setCursor(1,1);
    lcd.print(fiveMax);
    if(plus.uniquePress() && fiveMax < 100){
      lcd.clear();
      fiveMax++;
      bklTime = millis();
    }
    if(minus.uniquePress() && fiveMax > 0){
      lcd.clear();
      fiveMax--;
      bklTime = millis();
    }
  }

failing that you could go posh and build a
[HTML=https://www.youtube.com/watch?v=gN4XQHNijxw]Jarduino[/HTML]0){
fivePhotoPeriod--;}
else{
fivePhotoPeriod=1439;
}
bklTime = millis();
}
}

if(menuCount == 23){
//set intensity for channel five
lcd.setCursor(0,0);
lcd.print(
 
Back
Top