Sound Reactive Light Cube , Featured in Hackspace

by diyusthad in Circuits > Arduino

2067 Views, 7 Favorites, 0 Comments

Sound Reactive Light Cube , Featured in Hackspace

ezgif.com-video-to-gif-3.gif
Screen Shot 2019-02-25 at 9.27.50 AM.png

Introduction

Today we are going to make a sound Reactive wooden cube. Which will be changing color in perfect sync to the surrounding sounds or vibration.

Featured in #Hackspace 16th issue https://hackspace.raspberrypi.org/issues/16

Hardware required

  • Arduino Nano
  • Addressable UCS1903B DC5V
  • Mic based Sound Sensor Module
  • White Wood Cube

Theory

The sounds will be picked by the mic module and will be amplified and fed to the Arduino analog pin, we will read the analog pin values and using the fastLED library we will change the colors of the LEDs randomly according to the received values from the mic.

Construction

IMG_20180712_091314.jpg
IMG_20180712_094244.jpg
IMG_20180712_095328.jpg
IMG_20180712_101530.jpg
IMG_20180712_102056.jpg
IMG_20180712_105755.jpg
IMG_20180712_111455.jpg
IMG_20180712_141257.jpg
IMG_20180712_131942.jpg
IMG_20180712_130654.jpg

Pictures speak 1000 words


Schematics

soundcube_sche_e8rNHAumPl-2.jpg

Programming

IMG_20180714_163258.jpg
Sound Reaction Cube(Test)

Download code from GitHub

https://gist.github.com/onajad/20bb5f24ca2162202e005bbcc85ae164

#include "FastLED.h" //fast led library

#define NUM_LEDS 10 //total no. of leds used

#define DATA_PIN 5 //digital pin at which the data pin is connected

#define mic A5 //analog input from mic module

int mic_Value; //to save raw value from mic

int red, green, blue; //to store RGB color values

CRGB leds[NUM_LEDS]; //fast led function
void setup()
{

FastLED.addLeds(leds, NUM_LEDS); //as our led IC is UCS1903B,fast led support lots of ICs, find more

//FastLED.addLeds(leds, NUM_LEDS); //if you are using WS2812B insted of UCS1903B

LEDS.setBrightness(200); //setting brightness of LED (0 to 255) //info at fastled.io

randomSeed(analogRead(0));// for generating random no. by taking noise from analog pin 0

for (int i = 0; i <= 9; i++) //for changing color of all 10 LEDs

{

leds[i] = CRGB(200, 200, 200); //for initial white color

LEDS.show(); //fastled function, without this function the colors won't be updated

}

} void loop()

{

mic_Value = analogRead(mic); //storing analog values from mic to mic_value

if(mic_Value>100) //to avoid small noise

{

for(int i=0;i<=9;i++)//for changing color of all 10 LEDs

{

red=random(255); //random red color value between 0 to 255

green=random(255); //random green color value between 0 to 255

blue=random(255); //random blue color value between 0 to 255

leds[i]=CRGB(red,green,blue); //assigning color values to LEDs

LEDS.show();

}

}

}

Testing

Sound Reaction Cube(Test)
sound Reaction Cube(Final Test)

Full Video Tutorial

Sound Reactive Cube Using Arduino (English) Featured in Hackspace