Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
O objetivo deste projeto é fazer um capacete de DJ com LEDs reativos à música para efeito de show e wow. Estamos usando uma faixa de LED endereçável da Amazon.com, bem como um capacete de motocicleta, um Arduino uno e um fio.
Suprimentos
Os materiais incluem:
- Faixa de LED endereçável
- Capacete de motocicleta
- Arduino Uno
- Fios e ferro de solda
Etapa 1: Fazer com que os LEDs reajam ao som
Para a primeira etapa, vamos testar a tira de LED para reagir ao som, usamos a placa de som do Sparkfun e a conectamos ao Arduino usando uma placa de ensaio e um fio. Testando com o software Arduino, obtemos duas leituras que podemos usar. A amplitude do som vindo da porta "Envelope" e a leitura binária 1/0 da porta "gate". Use essas variáveis para mapear para a faixa de led endereçável, então "gate" está em um, os LEDS exibem certa cor, quando o envelope está acima de um certo nível, exibem uma determinada cor. O código completo será fornecido.
Etapa 2: corte e solda LEDS para dar forma ao capacete
No meu projeto, decidi adicionar os LEDs ao capacete em forma de X com triângulos extras do lado de fora. Pretendo fazer esse design funcionar melhor com a forma como a música toca. Portanto, esta etapa consiste em cortar as tiras de LED nos comprimentos desejados e soldá-las nas marcas de corte para fazer cantos. Tive que fazer isso cerca de 10 vezes e é muito demorado, especialmente quando se lida com fios pequenos. Este é o progresso nesta etapa
Etapa 3: conecte e teste os LEDs no capacete
Nesta etapa eu conectei e testei os LEDs para o Arduino, a placa de som e os LEDs de corte para ter certeza de que os cortes e a soldagem estavam funcionando corretamente
Etapa 4: eletrônicos gratuitos da placa de ensaio
Nesta etapa, concentrei-me em retirar todos os componentes eletrônicos da placa de ensaio. Soldei todos os fios que precisavam ser soldados e estendi os fios do capacete para que fossem longos para que você pudesse usar o capacete conectado ao Arduino. A coisa mais importante que não consegui descobrir foi a alimentação externa, experimentei baterias em configurações diferentes, mas nada me deu o resultado que eu precisava, algumas deixariam as luzes loucas e outras fariam com que fossem de cores diferentes. Infelizmente, isso pode ser devido ao meu conhecimento de circuitos, mas optei por manter a alimentação do Arduino vindo da placa do pc. A placa de som é alimentada por uma bateria e funciona bem
Etapa 5: configuração final
para esta etapa final, li os valores vindos da placa de som e modifiquei o código para corresponder aos novos valores que mudaram quando tudo foi retirado da placa de ensaio. Colei as tiras de LED no capacete onde antes estavam coladas e finalmente testei novamente.
Etapa 6: código (Arduino)
// Esboço simples do anel NeoPixel (c) 2013 Shae Erisson
// Lançado sob a licença GPLv3 para coincidir com o resto do
// Biblioteca Adafruit NeoPixel
#incluir
#ifdef _AVR_ #include // Requerido para Trinket Adafruit de 16 MHz #endif
// Qual pino do Arduino está conectado aos NeoPixels?
#define PIN 3 // No Trinket ou Gemma, sugira alterá-lo para 1
// Quantos NeoPixels estão anexados ao Arduino?
# define NUMPIXELS 166 // Tamanho de anel NeoPixel popular
Pixels Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Tempo (em milissegundos) para fazer uma pausa entre os pixels
void setup () {
#if definido (_ AVR_ATtiny85_) && (F_CPU == 16000000)
clock_prescale_set (clock_div_1); #endif // FIM do código específico do Trinket.
pixels.begin (); // INITIALIZE NeoPixel strip object (REQUIRED)
Serial.begin (9600); }
void loop () {
int sensorValue = analogRead (A1);
int sensorValue2 = digitalRead (7); Serial.println (sensorValue); // atraso (5); //pixels.clear (); // Defina todas as cores de pixel para 'off'
if (sensorValue2 == 1) {
para (int i = 0; i <28; i ++) {pixels.setPixelColor (i, 15, 0, 50);
}
para (int i = 48; i <81; i ++) {pixels.setPixelColor (i, 15, 0, 50);
}
para (int i = 102; i <129; i ++) {pixels.setPixelColor (i, 15, 0, 50);
}
para (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);
}
para (int i = 48; i <81; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
para (int i = 102; i <129; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
para (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);
}
para (int i = 82; i <101; i ++) {pixels.setPixelColor (i, 255, 0, 0);
}
para (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);
}
para (int i = 82; i <101; i ++) {pixels.setPixelColor (i, 0, 155, 155);
}
para (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);
}
para (int i = 82; i <101; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
para (int i = 130; i <148; i ++) {pixels.setPixelColor (i, 0, 0, 0);} pixels.show (); }}