İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu projenin amacı, şov ve wow faktörü için müziğe tepki veren LED'li bir DJ kaskı yapmaktır. Amazon.com'dan adreslenebilir bir LED şeridin yanı sıra bir motosiklet kaskı, bir Arduino uno ve tel kullanıyoruz.
Gereçler
Malzemeler şunları içerir:
- Adreslenebilir LED şerit
- Motorsiklet kaskı
- Arduino Uno'su
- Teller ve havya
Adım 1: LED'lerin Sese Tepki Vermesini Sağlamak
İlk adım olarak LED şeridin sese tepki vermesini test edeceğiz, Sparkfun'dan ses kartını kullanıyoruz ve bir breadboard ve kablo kullanarak Arduino'ya bağlıyoruz. Arduino yazılımıyla test ederek, kullanabileceğimiz iki okuma elde ederiz. "Zarf" bağlantı noktasından gelen sesin genliği ve "kapı" bağlantı noktasından okunan ikili 1/0. Adreslenebilir led şeridi eşleştirmek için bu değişkenleri kullanın, ardından "geçit" birdir, LED'ler belirli bir rengi gösterir, Zarf belirli bir seviyenin üzerindeyken belirli bir rengi gösterir. Tam kod verilecektir.
Adım 2: Kask Üzerinde Şekillendirmek için LED'leri Kesip Lehimleyin
Projemde, kaska LED'leri, dışarıda ekstra üçgenlerle X tarzında eklemeye karar verdim, bu tasarımın müziğin çalma şekliyle daha iyi çalışmasını planlıyorum. Dolayısıyla bu adım, LED şeritlerini istenen uzunluklarda kesmek ve köşeleri oluşturmak için bunları kesim işaretlerinde lehimlemekle ilgilidir. Bunu yaklaşık 10 kez yapmak zorunda kaldım ve özellikle küçük kablolarla uğraşırken çok zaman alıyor. Bu adımdaki ilerleme bu
Adım 3: Kasktaki LED'leri Kablolayın ve Test Edin
Bu adımda, kesimlerin ve lehimlemenin doğru çalıştığından emin olmak için LED'leri arduino'ya, ses kartına ve kesim LED'lerine bağladım ve test ettim.
Adım 4: Breadboard'dan Ücretsiz Elektronik
Bu adımda tüm elektronik aksamları devre tahtasından çıkarmaya odaklandım. Lehimlenmesi gereken tüm telleri lehimledim ve kask tellerini Arduino'ya bağlı kaskı takabilmeniz için uzun olacak şekilde uzattım. Çözemediğim en önemli şey harici güçtü, farklı konfigürasyonlarda piller denedim ama hiçbir şey bana istediğim sonucu vermedi, bazıları ışıkları çıldırtır, bazıları ise farklı renklerde yapardı. Maalesef bu benim devre bilgimden kaynaklanıyor olabilir ama Arduino'ya gelen gücü pc kartından tutmayı seçtim. Ses kartı bir pil takımıyla çalışır ve bu iyi çalışır
Adım 5: Son Yapılandırma
Bu son adım için, ses kartından gelen değerleri okudum ve kodu, devre tahtasından her şeyi değiştiren yeni değerlerle eşleşecek şekilde değiştirdim. LED şeritleri daha önce bantlanmış oldukları kaska yapıştırdım ve sonunda tekrar test ettim.
Adım 6: Kod (Arduino)
// NeoPixel Ring basit çizimi (c) 2013 Shae Erisson
// Geri kalanıyla eşleşmesi için GPLv3 lisansı altında yayınlandı
// Adafruit NeoPixel kitaplığı
#Dahil etmek
#ifdef _AVR_ #include // 16 MHz Adafruit Biblo için gereklidir #endif
// Arduino'daki hangi pin NeoPixels'e bağlı?
#define PIN 3 // Biblo veya Gemma'da bunu 1 olarak değiştirmenizi öneririz
// Arduino'ya kaç NeoPiksel bağlı?
#define NUMPIXELS 166 // Popüler NeoPixel halka boyutu
Adafruit_NeoPixel piksel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Pikseller arasında duraklama süresi (milisaniye cinsinden)
geçersiz kurulum() {
#if tanımlı(_AVR_ATtiny85_) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1); #endif // Bibloya özel kodun sonu.
piksel.begin(); // NeoPixel şerit nesnesini BAŞLATIN (GEREKLİ)
Seri.başla(9600); }
boşluk döngüsü () {
int sensorValue = analogRead(A1);
int sensorValue2 = digitalRead(7); Serial.println(sensorValue); //gecikme(5); //pikseller.temizle(); // Tüm piksel renklerini 'kapalı' olarak ayarla
if (sensorValue2 == 1){
for(int i=0; i<28; i++) { piksel.setPixelColor(i, 15, 0, 50);
}
for(int i=48; i<81; i++) { piksel.setPixelColor(i, 15, 0, 50);
}
for(int i=102; i<129; i++) { piksel.setPixelColor(i, 15, 0, 50);
}
for(int i=148; i<166; i++) { piksel.setPixelColor(i, 15, 0, 50); } } ////////////////////////// else{ for(int i=0; i<28; i++) { piksel.setPixelColor(ben, 0, 0, 0);
}
for(int i=48; i<81; i++) { piksel.setPixelColor(i, 0, 0, 0);
}
for(int i=102; i<129; i++) { piksel.setPixelColor(i, 0, 0, 0);
}
for(int i=148; i<166; i++) { piksel.setPixelColor(i, 0, 0, 0); } } ////////////////////////// if (sensorValue == 3 || sensorValue == 2){ for(int i=29; i<47; i++) { piksel.setPixelColor(i, 255, 0, 0);
}
for(int i=82; i<101; i++) { piksel.setPixelColor(i, 255, 0, 0);
}
for(int i=130; i<148; i++) { piksel.setPixelColor(i, 255, 0, 0);
} piksel.göster(); } if (sensorValue > 3){ for(int i=29; i<47; i++) { piksel.setPixelColor(i, 0, 155, 155);
}
for(int i=82; i<101; i++) { piksel.setPixelColor(i, 0, 155, 155);
}
for(int i=130; i<148; i++) { piksel.setPixelColor(i, 0, 155, 155);
}
piksel.göster(); } else{ for(int i=29; i<47; i++) { piksel.setPixelColor(i, 0, 0, 0);
}
for(int i=82; i<101; i++) { piksel.setPixelColor(i, 0, 0, 0);
}
for(int i=130; i<148; i++) { piksel.setPixelColor(i, 0, 0, 0);} piksel.göster(); } }