Muziek gestuurde RGB LED-strip
Inleiding
Op het internet zijn enkele video’s geüpload waarin mensen projecten doen hoe u een LED-strip muziek gestuurd krijg. Vele van die video’s laten alleen knipperende en van kleur veranderende LED-strips zien. Slechts enkele laten zien dat de LED-strips daadwerkelijk de muziek visualiseren. In dit korte artikel leg ik u stapsgewijs uit hoe u zo’n project zelf kunt doen.
Een muziek gestuurde LED-strip is een prachtige toevoeging voor uw muziekruimte. De strips geven een actieve visualisatie van de muziek [en eigenlijk elk geluid] weer en reageren na mijn ervaring vooral op lage tonen. [Zoals kickbass en bassen van 50hz tot 70hz] Het maken een muziek gestuurde LED-strip klinkt makkelijker dan het is. U moet namelijk ook een beetje technisch zijn en kunnen programmeren.
U heeft zich wellicht al georiënteerd in muziek gestuurde LED-strips. Maar als u nog geen idee heeft hoe zo iets er uit ziet, dan raad ik u aan eerst de korte video onderaan dit artikel te bekijken. Dan heeft u een idee hoe zo iets er ongeveer eruit komt te zien. En wat u kunt verwachten.
Onderdelen
De onderstaande onderdelen zijn de onderdelen die ik heb gebruikt. Mogelijk is het op een andere manier ook mogelijk.
- RGB programmeerbare LED-strip [WS2812B]
- LED profielen
- Arduino Nano met USB kabel
- Weerstand 330Ω
- Breadboard
- Jumpercables
- Verleng kabels [Als de LED-strip verder van het breadboard af komt]
- Microfoon [HW484]
- Potentio meter 10K
- Adapter [bijvoorbeeld van een telefoonoplader]
Aansluiting
De hardware
Belangrijk om als eerste te weten is hoe een breadboard werkt. De plus en min rijen [die over de lengte gaan] zijn met elkaar verbonden, maar niet met elkaar. En de a b c rijen zijn over de breedte met elkaar verbonden, maar niet met elkaar. A tot en met E zijn met elkaar verbonden maar die zijn niet verbonden op F tot en met J. Dit houdt in dat u 5 dingen op elkaar kunt aansluiten. U kunt alle vakjes in de lengte gebruiken in de plus en min om dingen op aan te sluiten. Zo veel heeft u niet nodig voor dit project.
Plaats de Arduino zoals te zien is in de afbeeldingen op het breadboard. Het breadboard zorgt er voor dat de Arduino verbonden kan worden met alle aansluitingen.
Als eerste beginnen we met het aansluiten van de LED-strips op de Arduino. Verbind de plus[rood], min [wit] van de strips op de plus en min van het breadboard en de datakabel [groen van de LED-strip] via de 330Ω weerstand op pin D3 van de Arduino. [Op de afbeelding hiernaast is dat de oranje kabel]
De tweede stap is de microfoon. Aan de achterzijde van de chip van de microfoon zitten 4 aansluitingen. De plus en min, de analoge aansluiting en de digitale aansluiting. De digitale heeft u in dit geval niet nodig. De microfoon heeft als eerste een plus en min aansluiting nodig. U plaatst de microfoon op een vrije plek op het breadboard. De plus en min kabel moet u verbinden met de plus en min op het breadboard waar de stroom op staat. Vervolgens verbindt u de analoge aansluiting [A0] met A4 op de Arduino. De potentio meter is om de gevoeligheid in te stellen. Het aansluiten is bijna hetzelfde principe als bij de microfoon. De buitenste twee aansluitingen zijn de plus en min. Het maakt in dit geval niet uit hoe om ze zitten. De middelste aansluiting is de weerstand. Deze sluit u aan op A5 van de Arduino. De potentio meter is niets meer als een weerstand die de gevoeligheid van de strips kan instellen. Het geeft in combinatie met de geschreven codes door aan de Arduino hoe veel LEDs er moeten branden met een bepaalde hoeveelheid geluidsdruk. [Wat de Arduino door krijgt van de microfoon]
De software
In het tekst vak hieronder staan de codes die geschreven moeten worden om de LED-strip werkend te maken.
………………………………………………………………………………………………………………………………………..
#include “FastLED.h”
#define NUM_LEDS 60
#define LED_PIN 3
#define LED_TYPE NEOPIXEL
#define MIC_PIN A4
#define CONFIG_PIN A5
CRGB leds[NUM_LEDS];
void setup() {
//Serial.begin(9600);
FastLED.addLeds<LED_TYPE, LED_PIN>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
for(int i = 0;i < NUM_LEDS; i++) {
leds[i] = CRGB::Black;
}
}
void loop() {
int conf = analogRead(CONFIG_PIN);
int correctie = 600 – (map(conf, 0, 1023, 0, 200));
int val = analogRead(MIC_PIN);
int ledsOn = val – correctie; //corrigeer voor de instelling van de geluidsensor
//Serial.println(val);
//delay(500);
if (ledsOn < 0) ledsOn = 0;
if (ledsOn > 12) ledsOn = 12;
eenBalk(ledsOn, false);
}
void eenBalk(int ledsOn, boolean twoStripsConnected) {
int x, y;
CRGB temp[NUM_LEDS];
ledsOn *= twoStripsConnected ? 10: 5; //ledsOn gaat maar tot 12
for(int i=0; i<ledsOn; i++) {
leds[i] = calculateColor(i, twoStripsConnected);
}
//draai de led-array om (LED-strips zijn ondersteboven gemonteerd)
x = 0;
y = 59;
while(y) {
temp = leds[y];
y–;
x++;
}
for(int i=0; i<NUM_LEDS;i++){
leds[i] = temp[i];
}
FastLED.show();
delay(5);
allLedsOff();
}
void allLedsOff() {
for(int i=0; i<NUM_LEDS; i++) {
leds[i] = CRGB::Black;
}
FastLED.show();
}
CRGB calculateColor(int num, boolean twoStripsConnected) {
int discriminator = twoStripsConnected ? 60 : 30;
if(num > discriminator) {
return CRGB((250/discriminator*(num-discriminator)), 250-(250/discriminator*(num-discriminator)), 0);
} else {
return CRGB(0, (250/discriminator*num), 250-(250/discriminator*num) );
}
}
………………………………………………………………………………………………………………………………………..
Bevestigen
Zelf heb ik gekozen om twee LED-strips te monteren op de achterkant van mijn subwoofer. [De subwoofer staat achterstevoren omdat de subwoofer dan beter geluid geeft in de ruimte] Hierdoor zijn de LED-strips mooi in het zicht. U kunt de LED-strips overal in de ruimte plaatsen, maar u moet er rekening mee houden dat u het beste effect heeft als de microfoon in een open ruimte geplaatst wordt, hierdoor zal deze het geluid direct vanaf de geluidsbron ontvangen en ook het beste signaal doorgeven. Die van mij zit gemonteerd op de subwoofer omdat ik heb gekozen om de bass zo veel mogelijk door te laten komen.
De LED-strips plakt u in de profielen. Vervolgens schuift of drukt u de afdekking op het profiel. [Afhankelijk van uw profiel] U denkt wellicht waarom wij een profiel voor de LED-strip aanraden? Een profiel zorgt ervoor dat de LED-strip zijn warmte kwijt raakt en dat er een mooi egale lichtlijn ontstaat. [Zie de foto] U kunt de LED profielen bevestigen met de bijbestelbare montage klemmen en met ons dubbelzijdig tape. Het profiel dat ik heb gekozen was 18mm diep, dat in verband met de dikte van het hout van de subwoofer. Ik raad niet aan een ondieper profiel te gebruiken. Een ondieper profiel zorgt ervoor dat u de puntjes van de Ledjes te zien krijgt. Dat is niet zo mooi als de LED-strips in het zicht hangen.
Video’s
U bent misschien nog niet bekend met het idee voor een muziek gestuurde LED-strip. Ik heb ook twee korte video’s gemaakt over hoe het eruit ziet. Daarvoor kunt u de onderstaande links gebruiken.
Elektronische muziek: https://www.youtube.com/watch?v=Bo3hsOL3lIk
Heavy metal: https://www.youtube.com/watch?v=aXPwFpD10Is