I want to start off by giving a little bit of a project update. I have come up with a final design for my LED Music Visualizer. The design is supposed to resemble an audio signal, and can be seen in the figure below. Next, I really wanted to get a lot of the coding for my project done this week. Unfortunately, I am still waiting for one critical piece, an audio jack, to test and debug the software. I will be getting that in tomorrow and should be able to get everything working by next Thursday. Finally, I need to start working on the construction part of my project and will be getting everything I need to make it this week.
For this week, I ran into a couple challenges that I will discuss. First, it was difficult to find a way to interface the Arduino with an audio jack and be able to process the signal from the connected device. I spent a lot of time looking at the minim library for Processing, but eventually discovered that this software is only able to process an audio signal that comes from the computer or is input to the computer. Instead of using the limited processing power of an Arduino, this library takes advantage of the processing power of a computer, and then sends the data to the Arduino. I was not going to be able to create a standalone system with the audio jack connected to an analog port on the Arduino, so I needed to look at other options. After doing some more research I found an Arduino shield made by SparkFun that was perfect for my project. This shield takes in an audio signal and processes the data into seven frequency bands. It then sends the magnitude of each band to the Arduino. This shield had more features than I need for my project, and was more expensive than I would have liked. Because of this, I decided to buy individual parts used in the design of the shield and will be following the schematic in the datasheet to recreate only the part I need.
Next, the second issue was found when trying to program some animations on the LED strip. I was originally trying to use the FastLED library to control my LEDs. After trying to debug the demo code to get it to work for me and failing multiple times to figure out the problem, I decided to switch to Adafruit’s neopixel library. When I looked at the code for this library, it was easier to edit the setup portion of the code to match my hardware setup. With this library, I was able to run a demo program that cycles through some cool animations. This can be seen in the video below. Upon further inspection of the neopixel library, I was able to figure out the problem I was having with FastLED. My LED strip consists of WS2812b LEDs, but for some reason, the software does not work when I specify that as the type. Instead, I realized I needed to define the LEDs as WS2811, and the software was able to work. Unfortunately, I have not been able to test any animations that are controlled by an audio signal, but I will be looking forward to experimenting with this in the near future.