Introduction: Sound Reactive Drum Set

Drums are already an interesting to watch instrument but we felt more could be done. We decided to create a drum set that will react to it being hit by lighting up an LED strip inside the drum.

Step 1: Materials/Tools You'll Need

  • Arduino RedBoard
  • Breadboard
  • Mini USB cable
  • 12V DC Power Adapter Supply
  • Electret Microphone Breakout
  • NPN Transistor
  • RGB LED Strip
  • Varying(4.7K-10K) Resistor
  • 10 Wires

Tools:

  • Lots of tape
  • Scissors
  • Wire cutters/strippers
  • Soldering Iron/Solder
  • Shrink wrap/heat gun

Step 2: Solder Wires to Microphones

I decided to use a white wire for the analog connection(AUD-A0), orange to ground(GND-GND), red to 5V(VCC-5V). This makes attaching the breakout to the Arduino easier.

Step 3: Solder Wires to RGB Strip

For the RGB Strip, I soldered the V+ to a yellow wire, B to blue wire, G to the green wire, and R to the orange wire. After this I decided to shrink-wrap the base of the wires so that they won't touch.

Step 4: Connect Everything

TLDR; There it is.(LED Light Represents LED Strip)

Step 5: Put Everything on the Drum

I taped the LED strip to the inner rim of the drum but far enough away to not disrupt the sound. Then I stuck the Arduino to the side of the drum close to the hole so that I could connect it to the 12V power source. Once everything is secure I started to code.

Step 6: Coding

/*

TO CHANGE SENSITIVITY YOU MUST CHANGE THE VOLUME VALUE ACCORDINGLY IN THE IF STATEMENT. TO TEST THIS SET IT TO AROUND 100 AND HIT THE INSTRUMENT AND SEE HOW SENSITIVE. YOU WANT TO MAKE IT SO THAT ONLY THAT INSTRUMENT MAKES THAT LIGHT GO OFF.

*/

int currentValue;

int maxValue;

int minValue;

unsigned long timer;

int sampleSpan = 5; // Amount in milliseconds to sample data

int volume;

void setup() {

Serial.begin(9600);

resetValues();

}

void loop() {

currentValue = analogRead(A0);

if (currentValue < minValue) {

minValue = currentValue;

}

if (currentValue > maxValue) {

maxValue = currentValue;

}

if (millis() - timer >= sampleSpan) {

volume = maxValue - minValue;

if(volume > 30) { //change this value to set sensitivity

analogWrite(12,255);

Serial.println("Light");

delay(10); // change this value to change how long the light stays on

}

else {

analogWrite(12,0);

}

Serial.println(volume);

resetValues();

}

}

void resetValues() {

maxValue = 0;

minValue = 1024;

timer = millis();

}

Step 7: Finished Pictures

Robotics Contest 2016

Participated in the
Robotics Contest 2016

Home Hacks Challenge

Participated in the
Home Hacks Challenge