Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Scopul acestui proiect este de a face o cască DJ cu LED-uri reactive la muzică pentru spectacol și factorul wow. Folosim o bandă LED adresabilă de la Amazon.com, precum și o cască de motocicletă, un Arduino uno și sârmă.
Provizii
Materialele includ:
- Benzi LED adresabile
- Casca de motociclist
- Arduino Uno
- Sârme și fier de lipit
Pasul 1: Obținerea LED-urilor să reacționeze la sunet
Pentru primul pas, vom testa banda LED pentru a reacționa la sunet, folosim placa de sunet de la Sparkfun și o conectăm la Arduino folosind o placă de rețea și un fir. Testând cu software-ul Arduino, obținem două citiri pe care le putem folosi. Amplitudinea sunetului care vine de la portul „Plic” și citirea binară 1/0 de la portul „poartă”. Utilizați aceste variabile pentru a face o hartă cu banda LED direcționabilă, apoi „poarta” este la una, LED-urile afișează o anumită culoare, când Plicul este peste un anumit nivel, afișează o anumită culoare. Va fi furnizat codul complet.
Pasul 2: Tăiați și lipiți LED-urile pentru a forma pe cască
La proiectul meu am decis să adaug LED-urile la cască într-o manieră X cu triunghiuri suplimentare la exterior, intenționez să fac acest design să funcționeze mai bine cu modul în care joacă muzica. Deci, acest pas se referă la tăierea benzilor LED la lungimile dorite și lipirea lor împreună pe semnele tăiate pentru a face colțuri. A trebuit să fac acest lucru de aproximativ 10 ori și consumă foarte mult timp, mai ales când mă ocup de fire mici. Acesta este progresul la acest pas
Pasul 3: conectați și testați LED-urile de pe cască
În acest pas am conectat și testat LED-urile pe arduino, placa de sunet și LED-urile tăiate pentru a mă asigura că tăieturile și lipirea funcționează corect
Pasul 4: Electronice gratuite de la Breadboard
În acest pas m-am concentrat pe obținerea tuturor componentelor electronice de pe panou. Am lipit toate firele care trebuiau lipite și am extins firele căștii pentru a fi lungi, astfel încât să puteți purta coifurile atașate la Arduino. Cel mai important lucru pe care nu l-am putut da seama a fost alimentarea externă, am încercat baterii în diferite configurații, dar nimic nu mi-ar da rezultatul de care aveam nevoie, unii ar face ca luminile să înnebunească, iar altele le-ar face să fie diferite culori. Din păcate, acest lucru se poate datora cunoștințelor mele despre circuite, dar am optat pentru menținerea alimentării cu Arduino provenind de pe placa PC. Placa de sunet este alimentată de un acumulator și funcționează bine
Pasul 5: Configurare finală
pentru acest ultim pas, am citit valorile provenite de pe placa de sunet și am modificat codul pentru a se potrivi cu noile valori care au schimbat unul, totul a fost scos de pe panou. Am lipit benzile cu LED-uri de cască, unde înainte fuseseră lipite și în cele din urmă am testat din nou.
Pasul 6: Cod (Arduino)
// NeoPixel Ring schiță simplă (c) 2013 Shae Erisson
// Lansat sub licența GPLv3 pentru a se potrivi cu restul
// Biblioteca Adafruit NeoPixel
#include
#ifdef _AVR_ #include // Necesar pentru 16 MHz Adafruit Trinket #endif
// Care pin de pe Arduino este conectat la NeoPixels?
#define PIN 3 // Pe Trinket sau Gemma, sugerează schimbarea acestuia la 1
// Câți NeoPixeli sunt atașați la Arduino?
#define NUMPIXELS 166 // Dimensiunea populară a inelului NeoPixel
Adafruit_NeoPixel pixeli (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Timp (în milisecunde) pentru pauză între pixeli
configurare nulă () {
#if definit (_ AVR_ATtiny85_) && (F_CPU == 16000000)
clock_prescale_set (clock_div_1); #endif // END al codului specific Trinket.
pixeli.begin (); // INIȚIALIZAȚI obiectul cu bandă NeoPixel (NECESAR)
Serial.begin (9600); }
bucla nulă () {
int sensorValue = analogRead (A1);
int sensorValue2 = digitalRead (7); Serial.println (sensorValue); // întârziere (5); //pixels.clear (); // Setați toate culorile pixelilor la „dezactivat”
if (sensorValue2 == 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 (i, 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 (); }}