Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Cieľom tohto projektu je vytvoriť DJ prilbu s LED diódami reagujúcimi na hudbu pre show a wow faktor. Používame adresovateľný LED pás od Amazon.com, ako aj motocyklovú prilbu, Arduino uno a drôt.
Zásoby
Materiály zahŕňajú:
- Adresovateľný LED pás
- Motocyklová prilba
- Arduino Uno
- Drôty a spájkovačka
Krok 1: Zabezpečenie reakcie diód LED na zvuk
V prvom kroku otestujeme LED pásik, aby reagoval na zvuk, použijeme zvukovú dosku od Sparkfunu a prepojíme ju s Arduinom pomocou breadboardu a drôtu. Testovaním softvéru Arduino získame dve hodnoty, ktoré môžeme použiť. Amplitúda zvuku vychádzajúceho z portu „Obálka“a binárna hodnota 1/0 odčítaná z portu „brána“. Tieto premenné použite na mapovanie na adresovateľný LED pásik, potom je "brána" na jednej, LED diódy zobrazujú určitú farbu, keď je obálka nad určitou úrovňou, zobrazujú určitú farbu. Bude poskytnutý celý kód.
Krok 2: Rezanie a spájkovanie LED diód vytvarujte na prilbe
Na svojom projekte som sa rozhodol pridať diódy LED k prilbe spôsobom X s extra trojuholníkmi na vonkajšej strane. Plánujem, aby tento dizajn lepšie fungoval so spôsobom, akým hrá hudba. Tento krok je teda o rezaní pásikov LED na požadovanú dĺžku a ich spájkovaní dohromady na značky rezu, aby sa vytvorili rohy. Musel som to urobiť asi 10 krát a je to veľmi časovo náročné, najmä keď sa zaoberám malými drôtmi. Toto je pokrok v tomto kroku
Krok 3: Pripojte a vyskúšajte diódy LED na prilbe
V tomto kroku som zapojil a testoval LED diódy na arduino, zvukovú dosku a rezané diódy LED, aby som sa ubezpečil, že rezy a spájkovanie fungujú správne.
Krok 4: Bezplatná elektronika z Breadboardu
V tomto kroku som sa zameral na odstránenie všetkej elektroniky z dosky. Spájkoval som všetky drôty, ktoré bolo potrebné spájkovať, a predĺžil som drôty prilby tak, aby boli dlhé, aby ste mohli nosiť prilbu pripevnenú k Arduinu. Najdôležitejšia vec, na ktorú som nemohol prísť, bolo externé napájanie. Skúšal som batérie v rôznych konfiguráciách, ale nič mi neprinieslo požadovaný výsledok. Pri niektorých by sa svetlá zbláznili a pri iných by mali rôzne farby. Bohužiaľ to môže byť spôsobené mojimi znalosťami obvodov, ale rozhodol som sa ponechať napájanie Arduina vychádzajúce z dosky počítača. Zvuková doska je napájaná batériou a funguje dobre
Krok 5: Konečná konfigurácia
Pre tento posledný krok som prečítal hodnoty pochádzajúce zo zvukovej dosky a upravil kód tak, aby zodpovedal novým hodnotám, ktoré jednu zmenili. Všetko bolo odstránené z dosky. Prilepil som pásy LED k prilbe, kde boli predtým zalepené páskou, a nakoniec som znova testoval.
Krok 6: Kód (Arduino)
// Jednoduchý náčrt NeoPixel Ring (c) 2013 Shae Erisson
// Vydané pod licenciou GPLv3, aby zodpovedalo zvyšku súboru
// Knižnica Adafruit NeoPixel
#zahrnúť
#ifdef _AVR_ #include // Vyžadované pre 16 MHz Adafruit Trinket #endif
// Ktorý pin na Arduine je pripojený k NeoPixels?
#define PIN 3 // V Trinket alebo Gemma navrhnite zmeniť toto číslo na 1
// Koľko NeoPixelov je pripojených k Arduinu?
#define NUMPIXELS 166 // Obľúbená veľkosť prsteňa NeoPixel
Pixely Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Čas (v milisekundách) na pozastavenie medzi pixelmi
neplatné nastavenie () {
#je definovaný (_ AVR_ATtiny85_) && (F_CPU == 16000000)
clock_prescale_set (clock_div_1); #endif // END kódu špecifického pre Trinket.
pixely.begin (); // INICIALIZUJTE objekt pásu NeoPixel (POVINNÉ)
Serial.begin (9600); }
prázdna slučka () {
int sensorValue = analogRead (A1);
int sensorValue2 = digitalRead (7); Serial.println (sensorValue); // zdržanie (5); //pixels.clear (); // Nastavte všetky farby pixelov na 'vypnuté'
if (sensorValue2 == 1) {
pre (int i = 0; i <28; i ++) {pixely.setPixelColor (i, 15, 0, 50);
}
pre (int i = 48; i <81; i ++) {pixely.setPixelColor (i, 15, 0, 50);
}
pre (int i = 102; i <129; i ++) {pixely.setPixelColor (i, 15, 0, 50);
}
pre (int i = 148; i <166; i ++) {pixely.setPixelColor (i, 15, 0, 50); }} //////////////////////////////// else {for (int i = 0; i <28; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
pre (int i = 48; i <81; i ++) {pixely.setPixelColor (i, 0, 0, 0);
}
pre (int i = 102; i <129; i ++) {pixely.setPixelColor (i, 0, 0, 0);
}
pre (int i = 148; i <166; i ++) {pixely.setPixelColor (i, 0, 0, 0); }} ////////////////////////////////// (sensorValue == 3 || sensorValue == 2) {for (int i = 29; i <47; i ++) {pixely.setPixelColor (i, 255, 0, 0);
}
pre (int i = 82; i <101; i ++) {pixely.setPixelColor (i, 255, 0, 0);
}
pre (int i = 130; i <148; i ++) {pixely.setPixelColor (i, 255, 0, 0);
} pixely.show (); } if (sensorValue> 3) {for (int i = 29; i <47; i ++) {pixels.setPixelColor (i, 0, 155, 155);
}
pre (int i = 82; i <101; i ++) {pixely.setPixelColor (i, 0, 155, 155);
}
pre (int i = 130; i <148; i ++) {pixely.setPixelColor (i, 0, 155, 155);
}
pixely.show (); } else {for (int i = 29; i <47; i ++) {pixely.setPixelColor (i, 0, 0, 0);
}
pre (int i = 82; i <101; i ++) {pixely.setPixelColor (i, 0, 0, 0);
}
pre (int i = 130; i <148; i ++) {pixely.setPixelColor (i, 0, 0, 0);} pixelov.show (); }}