Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Цель этого проекта - сделать диджейский шлем со светодиодами, реагирующими на музыку для шоу и вау-фактора. Мы используем адресуемую светодиодную ленту от Amazon.com, а также мотоциклетный шлем, Arduino uno и провод.
Запасы
Материалы включают:
- Адресная светодиодная лента
- Мотоциклетный шлем
- Ардуино Уно
- Провода и паяльник
Шаг 1. Заставляем светодиоды реагировать на звук
На первом этапе мы собираемся протестировать светодиодную ленту на реакцию на звук, мы используем звуковую плату от Sparkfun и подключаем ее к Arduino с помощью макета и провода. Тестируя программное обеспечение Arduino, мы получаем два значения, которые мы можем использовать. Амплитуда звука, поступающего из порта "Envelope", и двоичное значение 1/0, считываемое из порта "gate". Используйте эти переменные для сопоставления с адресуемой светодиодной полосой, тогда «ворота» будут равны единице, светодиоды отображают определенный цвет, когда конверт находится выше определенного уровня, отображают определенный цвет. Полный код будет предоставлен.
Шаг 2: Вырежьте и припаяйте светодиоды, придав им форму на шлеме
В моем проекте я решил добавить светодиоды к шлему в стиле X с дополнительными треугольниками снаружи, я планирую улучшить этот дизайн с тем, как играет музыка. Таким образом, этот шаг заключается в том, чтобы отрезать светодиодные ленты нужной длины и спаять их вместе на отметках среза, чтобы получились углы. Мне приходилось проделывать это около 10 раз, и это отнимает очень много времени, особенно при работе с небольшими проводами. Это прогресс на этом этапе
Шаг 3. Подключите и проверьте светодиоды на шлеме
На этом этапе я подключил и протестировал светодиоды к Arduino, звуковой плате и вырезанным светодиодам, чтобы убедиться, что разрезы и пайка работают правильно.
Шаг 4: Бесплатная электроника с макета
На этом этапе я сосредоточился на удалении всей электроники с макета. Я припаял все провода, которые нужно было припаять, и удлинил провода шлема, чтобы они были длинными, чтобы вы могли носить шлем, прикрепленный к Arduino. Самым важным, что я не мог понять, было внешнее питание, я пробовал батареи в разных конфигурациях, но ничего не дало мне нужного результата, некоторые заставляли свет сходить с ума, а некоторые заставляли их окрашивать в разные цвета. К сожалению, это может быть связано с моими познаниями в схемах, но я решил оставить питание Arduino от платы компьютера. Звуковая плата питается от аккумуляторной батареи, и она отлично работает.
Шаг 5: Окончательная конфигурация
на этом последнем шаге я прочитал значения, поступающие с звуковой платы, и изменил код, чтобы он соответствовал новым значениям, которые изменились после того, как все было снято с макета. Я приклеил светодиодные ленты к шлему там, где раньше они были приклеены, и, наконец, снова протестировал.
Шаг 6: Код (Arduino)
// Простой эскиз кольца NeoPixel (c) Шэ Эриссон, 2013 г.
// Выпущено под лицензией GPLv3, чтобы соответствовать остальным
// Библиотека Adafruit NeoPixel
#включают
#ifdef _AVR_ #include // Требуется для брелка Adafruit 16 МГц #endif
// Какой вывод на Arduino подключен к NeoPixels?
#define PIN 3 // На Trinket или Gemma предложите изменить его на 1
// Сколько NeoPixels подключено к Arduino?
#define NUMPIXELS 166 // Популярный размер кольца NeoPixel
Adafruit_NeoPixel пикселей (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Время (в миллисекундах) паузы между пикселями
void setup () {
#if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000)
clock_prescale_set (clock_div_1); #endif // КОНЕЦ кода, специфичного для брелка.
pixel.begin (); // ИНИЦИАЛИЗИРУЕМ объект полосы NeoPixel (ОБЯЗАТЕЛЬНО)
Serial.begin (9600); }
void loop () {
int sensorValue = analogRead (A1);
int sensorValue2 = digitalRead (7); Serial.println (sensorValue); // задержка (5); //pixels.clear (); // Устанавливаем все цвета пикселей на "выключено"
if (sensorValue2 == 1) {
для (int я = 0; я <28; я ++) {пикселей.setPixelColor (я, 15, 0, 50);
}
для (int я = 48; я <81; я ++) {пикселей.setPixelColor (я, 15, 0, 50);
}
для (int я = 102; я <129; я ++) {пикселей.setPixelColor (я, 15, 0, 50);
}
для (int я = 148; я <166; я ++) {пикселей.setPixelColor (я, 15, 0, 50); }} //////////////////////////// else {for (int i = 0; i <28; i ++) {pixels.setPixelColor (i, 0, 0, 0);
}
для (int я = 48; я <81; я ++) {пикселей.setPixelColor (я, 0, 0, 0);
}
для (int я = 102; я <129; я ++) {пикселей.setPixelColor (я, 0, 0, 0);
}
для (int я = 148; я <166; я ++) {пикселей.setPixelColor (я, 0, 0, 0); }} //////////////////////////// if (sensorValue == 3 || sensorValue == 2) {for (int i = 29; я <47; я ++) {пикселей.setPixelColor (я, 255, 0, 0);
}
для (int я = 82; я <101; я ++) {пикселей.setPixelColor (я, 255, 0, 0);
}
для (int я = 130; я <148; я ++) {пикселей.setPixelColor (я, 255, 0, 0);
} pixel.show (); } if (sensorValue> 3) {for (int i = 29; i <47; i ++) {пикселей.setPixelColor (i, 0, 155, 155);
}
для (int я = 82; я <101; я ++) {пикселей.setPixelColor (я, 0, 155, 155);
}
для (int я = 130; я <148; я ++) {пикселей.setPixelColor (я, 0, 155, 155);
}
pixel.show (); } else {для (int я = 29; я <47; я ++) {пикселей.setPixelColor (я, 0, 0, 0);
}
для (int я = 82; я <101; я ++) {пикселей.setPixelColor (я, 0, 0, 0);
}
для (int я = 130; я <148; я ++) {пикселей.setPixelColor (я, 0, 0, 0);} pixel.show (); }}