Best Power Source for RGB Light Strips

Hello,
Looking for best way to power 2 RGB strips controlled by Arduino Uno + Sparkfun Spectrum shield.

RGB strips found here: https://www.amazon.com/SUPERNIGHT-Waterproof-300LEDs-Changing-Flexible/dp/B00DTOAWZ2/ref=sr_1_1?s=hi&ie=UTF8&qid=1476760680&sr=1-1&keywords=SUPERNIGHT+(TM)+16.4FT+5M+SMD+5050+Waterproof+300LEDs+RGB+Color+Changing+Flexible+LED+Strip+Light

Any advice/links would be greatly appreciated.

Would this work pretty well? From what I read about the LED strips this power supply seems to cover the expected wattage/current pretty well. Any thoughts?

You need a 12V 10Amp power supply.
You can probably get by with that one you posted if you don't plan on having all LEDs show white at max brightness often.

INTP,
Thank you for your response. Is it safe to assume if I wanted to add two more strips I would need 1 power supply as you described per set? Is there anything else I would need such as amplifiers, transistors etc?

I purchased this power supply HERE
These RGB strips HERE
These transistors HERE

and using the spectrum analyzer and following this example I think I have everything I need for my project.

Any other hardware that I may be overlooking? How should I power the Arduino? Id like to have it disconnected from my laptop if possible.

Not really an Arduino question but still related to my project...
If I purchase these speakers HERE and I modify a jack to plug into the spectrum analyzer, what will actually be powering these speakers? The same power supply powering my led strips?
How could I power these speakers separately from my boards/strips or any other suggestions on decently loud speakers that I can use in this project?

As an update, I got my project working however there was a good amount of noise and after seeking help I was told to use a threshold check to remove some of the lower signals the analyzer was reading.

I was told to enter this statement: if(signal < threshold) signal = 0;

and in the code it looked like this:

int threshold = { 80, 45, 90, 100, 52, 112, 90 }; // replace those numbers with real ones

void Read_Frequencies(){
  //Read frequencies for each band
  for (freq_amp = 0; freq_amp<6; freq_amp++)
  {
    Frequencies_One[freq_amp] = analogRead(DC_One);
    if(Frequencies_One[freq_amp] < threshold[freq_amp] )  Frequencies_One[freq_amp] = 0;

    Frequencies_Two[freq_amp] = analogRead(DC_Two);
    if(Frequencies_Two[freq_amp] < threshold[freq_amp] )  Frequencies_Two[freq_amp] = 0;

    digitalWrite(STROBE, HIGH);
    digitalWrite(STROBE, LOW);
  }
}

This addition alone greatly reduced the noise.

So I got the analyzer to work with regular LEDs but now I want to check it with the actual LED strips I will be using. So I can one section of the RGB strip off and have wired everything up according to this example:

But I am not super clear on EXACTLY how to tie in the power supply (this one)

Currently, I have -V from power supply connected to Arduino ground and all of the right most pins on the transistors.
+v from power supply is connected to 5v arduino and to the 12v input on the RGB strip

The center pin of each transistor is connected to one of the RGB inputs on the strip and the left most pin on the transistors are connected tot he corresponding pins on the shield/arduino.

I want to make sure before I actually plug this thing it is not going to fry.

Thank you!

v from power supply is connected to 5v arduino and to the 12v input on the RGB strip

Never connect two power supply outputs together, grounds are fine but the voltage output is not.

In this case connecting a 12V supply to the 5V Arduino pin is going to instantly destroy your Arduino"

Mike,
Can you point me in the correct direction?

Well you might like to power the Arduino and the strip by plugging the 12V into the power input jack of the Arduino as well as the LED strip.
Or use the layout in that link you posted

and wire it into the Vin pin.

Mr. Grumpy Mike,
So tell me if I am getting this correct:

Setup 1:
From my power supply modify (I would have to makeone) and run a DC power plug into the arduino DC jack. From the same "port"of the power supply that is connected to the arduino run another line directly to the RGB strip. Additionally make sure the power supply ground and the arduino ground are connected.

Setup 2:
Run power from power supply to Vin of arduino. Make sure power supply ground and arduino ground are connected. With respect to power how is the arduino and RGB strip connected?

If I am running two strips that can draw up to 10 amps, which method would you recommend?

Thank you
Aure

Yes either method would work. With 1) there is no need to add an extra ground between the power supply and the Arduino because the power jack provides that.

If you are running as much as 10A you will also need a bulk decoupling capacitor across the power supply of at least 1,000 uF and maybe more.

Also you can not use Solderless bread board at those sorts of currents everything needs to be soldered up.

Get one strip working first.

int threshold = { 80, 45, 90, 100, 52, 112, 90 }; // replace those numbers with real ones

Mr. Grumpy Mike,
Your note says replace these numbers with real ones. Are these the threshold values for each separate channel? Are they represented in hz? I have read the Tronix tutorial here, it states frequency at specific points for each band (forgive me if my verbage is incorrect). So, would I vary the thresholds with respect to the frequency of each band? I.E. a threshold of 20 for the band at 63 Hz, a threshold of 100 for the band at 160 Hz and so on.

Is this even close to correct? If not, how do I select an efficient threshold for each band?

Thank you again good sir

[Are these the threshold values for each separate channel

Yes.

Are these the threshold values for each separate channel

No. They are values that you read from the chip.

The first value in the array is used for the lowest frequency band, then next value in the array is for the next highest band and so on.

To get the real values have noting going into the chip and print out the readings you get. This will be varying so take the highest reading.

Mr. Grumpy Mike,
I got my project working by first starting with a small strip of the RGB strip.

I have a few questions. So I want to use these lights for Halloween and I am really only interested in the Red light. You mentioned before to possibly skip creating excess noise go ahead and read the other frequencies; my question is do I have to do anything else once I read the remaining 6 frequencies such as running a wire from the output pin on the analyzer to the bread board and leave it open?

Another question in general, my code is posted below, any general tips I can use to make the RGB output a little more crisp?

//Declare Spectrum Shield pin connections
#define STROBE 4
#define RESET 5
#define DC_One A0
#define DC_Two A1 


//Define LED connections on the Arduino/Shield
int LED[] = {3, 5, 6, 9, 10, 11};
int threshold [7]= { 75, 75, 75, 75, 75, 75, 75};
/*#6 is pin 11, #5 is pin 10, #2 is pin 5 BASS */
//Define spectrum variables
int freq_amp;
int Frequencies_One[6];
int Frequencies_Two[6]; 
int i;
/********************Setup Loop*************************/
void setup() {
  //Set LED pin configurations
  for(i=0; i<6; i++)
  {
    pinMode(LED[i], OUTPUT);
    digitalWrite(LED[i], LOW);
  }

  //Set spectrum Shield pin configurations
  pinMode(STROBE, OUTPUT);
  pinMode(RESET, OUTPUT);
  pinMode(DC_One, INPUT);
  pinMode(DC_Two, INPUT);  
  digitalWrite(STROBE, HIGH);
  digitalWrite(RESET, HIGH);

  //Initialize Spectrum Analyzers
  digitalWrite(STROBE, LOW);
  delay(1);
  digitalWrite(RESET, HIGH);
  delay(1);
  digitalWrite(STROBE, HIGH);
  delay(1);
  digitalWrite(STROBE, LOW);
  delay(1);
  digitalWrite(RESET, LOW);
}
/****************Main Function Loop***************************/
void loop() {

  Read_Frequencies();
  Graph_Frequencies();
  delay(50);

}
/*************Pull frquencies from Spectrum Shield****************/
void Read_Frequencies(){
  //Read frequencies for each band
  for (freq_amp = 0; freq_amp<6; freq_amp++)
  {
    Frequencies_One[freq_amp] = analogRead(DC_One);
    if(Frequencies_One[freq_amp] < threshold[freq_amp] )  Frequencies_One[freq_amp] = 0;

    Frequencies_Two[freq_amp] = analogRead(DC_Two);
    if(Frequencies_Two[freq_amp] < threshold[freq_amp] )  Frequencies_Two[freq_amp] = 0;
    digitalWrite(STROBE, HIGH);
    digitalWrite(STROBE, LOW);
  }
}
/***************Light LEDs based on frequencies******************/
void Graph_Frequencies(){
   for( i= 0; i<6; i++)
   {
     if(Frequencies_Two[i] > Frequencies_One[i]){
        analogWrite(LED[i], Frequencies_Two[i]/4);
     }
     else{
        analogWrite(LED[i], Frequencies_One[i]/4);
     }
   }
}

As it stands I am already pretty satisfied with how it is turning out.

Thank you again for all of your help so far
Aure

my question is do I have to do anything else once I read the remaining 6 frequencies such as running a wire from the output pin on the analyzer to the bread board and leave it open?

No, just read all frequencies because that discharges the peak reading capacitor a bit, you don't have to do anything else.

any general tips I can use to make the RGB output a little more crisp?

Not too sure what you mean by crisp? If you give the chip an impulse of sound the output goes up immediately, but if you remove that sound the output does not instantly disappear, rather it decays by a bit.
You can see this in this video of mine :- Spectrum Display on Vimeo
The more often you read it the quicker it will delay so that delay in the loop is only going to make the delay slower. I have no idea why it is even in the loop, have you? That I think might make things crisper, you could even read the chip more times than you display the results. But please read ALL the seven channels.

Mr. Grumpy Mike,
I removed the delay and there was a noticeable improvement.

I got everything soldered up for one strip and when I connected it the led's didnt completely turn off, rather they stayed dimmly lit. Additionally, they turned on immediately when I powered on the power supply rather than powering on when I connected the power to the arduino via the dc jack. I double checked all connections, nothing is shorted and all connections are solid.

So, I tried another strip and this one illuminates almost completely as soon as I power on the power supply.

Assuming everything is wired correctly (since everything was connected correctly on the breadboard) could the transistors be bad and letting current seep through?

Assuming everything is wired correctly (since everything was connected correctly on the breadboard)

Why do you think you can assume that? It sounds like you have a wiring error somewhere.