Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Het doel van dit project is om een DJ-helm te maken met LED's die reageren op muziek voor show en wow-factor. We gebruiken een adresseerbare LED-strip van Amazon.com, evenals een motorhelm, een Arduino uno en draad.
Benodigdheden
Materialen omvatten:
- Adresseerbare ledstrip
- Motorhelm
- Arduino Uno
- Draden en soldeerbout
Stap 1: LED's laten reageren op geluid
Voor de eerste stap gaan we de LED-strip testen om te reageren op geluid, we gebruiken het klankbord van Sparkfun en verbinden deze met de Arduino met behulp van een breadboard en draad. Bij het testen met de Arduino-software krijgen we twee metingen die we kunnen gebruiken. De amplitude van het geluid dat uit de "Envelope" -poort komt en de binaire 1 / 0-lezing uit de "gate" -poort. Gebruik deze variabelen om toe te wijzen aan de adresseerbare ledstrip, dan is "poort" één, de LEDS geven een bepaalde kleur weer, wanneer de envelop boven een bepaald niveau is, een bepaalde kleur weergeven. De volledige code wordt verstrekt.
Stap 2: Knip en soldeer LED's om op de helm te vormen
Op mijn project heb ik besloten om de LED's op een X-manier aan de helm toe te voegen met extra driehoeken aan de buitenkant, ik ben van plan om dat ontwerp beter te laten werken met de manier waarop de muziek speelt. Bij deze stap draait het dus om het op de gewenste lengte knippen van de LED-strips en deze aan elkaar solderen op de snijtekens om hoeken te maken. Ik moest dit ongeveer 10 keer doen en het is erg tijdrovend, vooral als het om kleine draden gaat. Dit is de voortgang bij deze stap
Stap 3: Bedraad en test de LED's op de helm
In deze stap heb ik de LED's aangesloten en getest op de arduino, het klankbord en de gesneden LED's om er zeker van te zijn dat de sneden en het solderen correct werkten
Stap 4: Gratis elektronica van Breadboard
In deze stap concentreerde ik me op het krijgen van alle elektronica van het breadboard. Ik heb alle draden gesoldeerd die moesten worden gesoldeerd en de helmdraden verlengd om lang te zijn, zodat je de helm kunt dragen terwijl deze aan de Arduino is bevestigd. Het belangrijkste waar ik niet achter kon komen was externe voeding, ik probeerde batterijen in verschillende configuraties, maar niets zou me het gewenste resultaat geven, sommige zouden de lichten gek maken en sommige zouden ze verschillende kleuren maken. Helaas kan dit te wijten zijn aan mijn kennis van circuits, maar ik heb ervoor gekozen om de stroom naar de Arduino van de printplaat te laten komen. Het klankbord wordt gevoed door een batterijpakket en dat werkt prima
Stap 5: Definitieve configuratie
voor deze laatste stap las ik de waarden die van het klankbord kwamen en wijzigde ik de code om overeen te komen met de nieuwe waarden die veranderden, alles werd van het breadboard gehaald. Ik heb de LED-strips op de helm gelijmd waar ze eerder waren afgeplakt en uiteindelijk heb ik opnieuw getest.
Stap 6: Coderen (Arduino)
// NeoPixel Ring eenvoudige schets (c) 2013 Shae Erisson
// Uitgebracht onder de GPLv3-licentie om overeen te komen met de rest van de
// Adafruit NeoPixel-bibliotheek
#erbij betrekken
#ifdef _AVR_ #include // Vereist voor 16 MHz Adafruit Trinket #endif
// Welke pin op de Arduino is verbonden met de NeoPixels?
#define PIN 3 // Op Trinket of Gemma, stel voor dit te wijzigen in 1
// Hoeveel NeoPixels zijn aangesloten op de Arduino?
#define NUMPIXELS 166 // Populaire NeoPixel ringmaat
Adafruit_NeoPixel-pixels (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Tijd (in milliseconden) om tussen pixels te pauzeren
ongeldige setup() {
#indien gedefinieerd(_AVR_ATtiny85_) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1); #endif // END van Trinket-specifieke code.
pixels.begin(); // INITIALISEER NeoPixel-stripobject (VERPLICHT)
Serieel.begin(9600); }
lege lus() {
int sensorValue = analoog lezen (A1);
int sensorValue2 = digitalRead (7); Serial.println(sensorValue); //vertraging (5); //pixels.clear(); // Zet alle pixelkleuren op 'uit'
if (sensorWaarde2 == 1){
for(int i=0; i<28; i++) {pixels.setPixelColor(i, 15, 0, 50);
}
for(int i=48; i<81; i++) {pixels.setPixelColor(i, 15, 0, 50);
}
for(int i=102; i<129; i++) {pixels.setPixelColor(i, 15, 0, 50);
}
for(int i=148; i<166; i++) {pixels.setPixelColor(i, 15, 0, 50); } } //////////////////////////// else{ for(int i=0; i<28; i++) { pixels.setPixelColor(ik, 0, 0, 0);
}
for(int i=48; i<81; i++) {pixels.setPixelColor(i, 0, 0, 0);
}
for(int i=102; i<129; i++) {pixels.setPixelColor(i, 0, 0, 0);
}
for(int i=148; i<166; i++) {pixels.setPixelColor(i, 0, 0, 0); } } //////////////////////////// if (sensorValue == 3 || sensorValue == 2){ for(int i=29; i<47; i++) { pixels.setPixelColor(i, 255, 0, 0);
}
for(int i=82; i<101; i++) {pixels.setPixelColor(i, 255, 0, 0);
}
for(int i=130; i<148; i++) {pixels.setPixelColor(i, 255, 0, 0);
} pixels.show(); } if (sensorValue > 3){ for(int i=29; i<47; i++) { pixels.setPixelColor(i, 0, 155, 155);
}
for(int i=82; i<101; i++) {pixels.setPixelColor(i, 0, 155, 155);
}
for(int i=130; i<148; i++) {pixels.setPixelColor(i, 0, 155, 155);
}
pixels.show(); } else{ for(int i=29; i<47; i++) { pixels.setPixelColor(i, 0, 0, 0);
}
for(int i=82; i<101; i++) {pixels.setPixelColor(i, 0, 0, 0);
}
for(int i=130; i<148; i++) {pixels.setPixelColor(i, 0, 0, 0);} pixels.show(); } }