INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Die doel van hierdie projek is om 'n DJ -helm met LED's reaktief op musiek te maak vir vertoning en wow -faktor. Ons gebruik 'n aanspreekbare LED -strook van Amazon.com, sowel as 'n motorhelm, 'n Arduino -uno en draad.
Voorrade
Materiaal sluit in:
- Adresbare LED -strook
- Motorhelm
- Arduino Uno
- Drade en soldeerbout
Stap 1: Laat LED's reageer op klank
Vir die eerste stap gaan ons die LED -strook toets om op klank te reageer, ons gebruik die klankbord van Sparkfun en verbind dit met die Arduino met 'n broodbord en draad. As ons die Arduino -sagteware toets, kry ons twee lesings wat ons kan gebruik. Die amplitude van die klank wat uit die "Envelope" -poort kom en die binêre 1 /0 -lesing vanaf die "gate" -poort. Gebruik hierdie veranderlikes om na die aanspreekbare LED -strook te karteer, dan is die "hek" een, die LED's vertoon 'n sekere kleur, as die koevert bo 'n sekere vlak is, vertoon 'n sekere kleur. Die volledige kode sal verskaf word.
Stap 2: Sny en soldeer LED's om die helm te vorm
Op my projek het ek besluit om die LED's op 'n X -manier by die helm te voeg met ekstra driehoeke aan die buitekant. Ek is van plan om die ontwerp beter te laat werk met die manier waarop die musiek speel. Hierdie stap gaan dus oor die sny van die LED -stroke op die verlangde lengtes en soldeer dit aan die snypunte om hoeke te maak. Ek moes dit ongeveer 10 keer doen, en dit is baie tydrowend, veral as ek met klein drade te doen het. Dit is die vordering in hierdie stap
Stap 3: Bedraad en toets die LED's op die helm
In hierdie stap het ek die LED's aan die arduino, die klankbord en die gesnyde LED's bedraad en getoets om seker te maak dat die snitte en soldeerwerk korrek werk
Stap 4: Gratis elektronika van broodbord
In hierdie stap het ek gefokus om al die elektronika van die broodbord af te haal. Ek het al die drade wat gesoldeer is, soldeer en die helmdrade verleng om lank te wees, sodat u die helm kan dra wat aan die Arduino geheg is. Die belangrikste ding wat ek nie kon agterkom nie, was eksterne krag, ek het batterye in verskillende konfigurasies probeer, maar niks sou my die resultaat gee wat ek nodig gehad het nie, sommige sou die ligte mal maak en sommige in verskillende kleure. Ongelukkig is dit te wyte aan my kennis van stroombane, maar ek het besluit om die krag van die Arduino van die rekenaarbord af te hou. Die klankbord word aangedryf deur 'n battery en dit werk goed
Stap 5: Finale opset
vir hierdie laaste stap, lees ek die waardes wat van die klankbord kom, en verander die kode om aan te pas by die nuwe waardes wat verander het, alles is van die broodbord verwyder. Ek het die LED -stroke op die helm vasgeplak, waar dit voorheen vasgemaak is en uiteindelik weer getoets.
Stap 6: Kode (Arduino)
// NeoPixel Ring eenvoudige skets (c) Shae Erisson 2013
// Vrygestel onder die GPLv3 -lisensie om by die res van die
// Adafruit NeoPixel biblioteek
#insluit
#ifdef _AVR_ #include // Vereis vir 16 MHz Adafruit Trinket #endif
// Watter pen op die Arduino is aan die NeoPixels gekoppel?
#define PIN 3 // Stel op Trinket of Gemma voor om dit na 1 te verander
// Hoeveel NeoPixels is aan die Arduino gekoppel?
#define NUMPIXELS 166 // Gewilde ringgrootte van NeoPixel
Adafruit_NeoPixel pixels (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Tyd (in millisekondes) om tussen pixels te breek
ongeldige opstelling () {
#as gedefinieer (_ AVR_ATtiny85_) && (F_CPU == 16000000)
klok_preskaalstel (klok_div_1); #endif // EINDE van Trinket-spesifieke kode.
pixels.begin (); // INITIALISEER NeoPixel -strookvoorwerp (benodig)
Serial.begin (9600); }
leemte -lus () {
int sensorValue = analogRead (A1);
int sensorValue2 = digitalRead (7); Serial.println (sensorValue); // vertraging (5); //pixels.clear (); // Stel alle pixelkleure op 'af'
as (sensorValue2 == 1) {
vir (int i = 0; i <28; i ++) {pixels.setPixelColor (i, 15, 0, 50);
}
vir (int i = 48; i <81; i ++) {pixels.setPixelColor (i, 15, 0, 50);
}
vir (int i = 102; i <129; i ++) {pixels.setPixelColor (i, 15, 0, 50);
}
vir (int i = 148; i <166; i ++) {pixels.setPixelColor (i, 15, 0, 50); }} ////////////////////////////////// anders {vir (int i = 0; i <28; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
vir (int i = 48; i <81; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
vir (int i = 102; i <129; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
vir (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);
}
vir (int i = 82; i <101; i ++) {pixels.setPixelColor (i, 255, 0, 0);
}
vir (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);
}
vir (int i = 82; i <101; i ++) {pixels.setPixelColor (i, 0, 155, 155);
}
vir (int i = 130; i <148; i ++) {pixels.setPixelColor (i, 0, 155, 155);
}
pixels.show (); } anders {vir (int i = 29; i <47; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
vir (int i = 82; i <101; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
vir (int i = 130; i <148; i ++) {pixels.setPixelColor (i, 0, 0, 0);} pixels.show (); }}