Sound Reactive Drum Set

1,859

30

2

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.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

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

Be the First to Share

    Recommendations

    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    2 Discussions

    0
    None
    jman 31

    3 years ago

    Very nice! I am one of the owners of www.galaxydrumlights.com. We started out much the way you have done there although we started with an analog system. It wasn't until later that we moved into microchips. Great job!

    0
    None
    wold630

    3 years ago

    This is so creative and would add so much to a concert!