LED Şerit ile Ses Ritim Işığı (Müzik ile Dans Eden Işıklar)
LED Şerit ile Ses Ritim Işığı (Müzik ile Dans Eden Işıklar)
Merhaba sevgili Arduino severler! Bugün sizlerle, müzikle senkronize bir şekilde dans eden ışıklar yaratacağımız harika bir proje yapacağız. Bu proje ile evinizde, odanızda veya partilerde müthiş bir ambiyans oluşturabilirsiniz. Gelin, adım adım bu eğlenceli projeye birlikte göz atalım.
Proje İçin Gerekli Malzemeler
- Arduino Uno (veya benzeri bir Arduino kartı)
- WS2812B LED Şerit (veya benzeri adreslenebilir LED şerit)
- Ses Sensörü (KY-038 veya benzeri bir ses algılama modülü)
- Jumper Kablolar
- Güç Kaynağı (LED şerit için uygun voltaj ve akımda)
- 1000µF Kondansatör (Opsiyonel, ancak LED şeridin kararlılığını artırır)
Devre Şeması ve Bağlantılar
Devre bağlantıları oldukça basit. Aşağıdaki bağlantıları dikkatlice yapmanız yeterli:
- Ses Sensörü VCC pini -> Arduino 5V pini
- Ses Sensörü GND pini -> Arduino GND pini
- Ses Sensörü OUT pini -> Arduino Analog A0 pini (veya herhangi bir uygun analog pin)
- LED Şerit VCC pini -> Güç Kaynağı VCC pini (ÖNEMLİ: Arduino'nun 5V pininden direkt olarak yüksek akım çeken LED şeritleri beslemeyin. Ayrı bir güç kaynağı kullanın.)
- LED Şerit GND pini -> Güç Kaynağı GND pini ve Arduino GND pini (Ortak GND önemli!)
- LED Şerit Data In (DI) pini -> Arduino Dijital 6 pini (veya kodda belirlediğiniz başka bir dijital pin)
- Kondansatör (+) ucu -> LED Şerit VCC pini
- Kondansatör (-) ucu -> LED Şerit GND pini
Uyarı: Yüksek akım çeken LED şeritleri doğrudan Arduino üzerinden beslemek Arduino'ya zarar verebilir. Bu nedenle ayrı bir güç kaynağı kullanmak önemlidir. Ayrıca, kondansatör kullanımı, LED şeridin ani akım çekmelerinde daha kararlı çalışmasını sağlar.
Arduino Kodu
Şimdi de Arduino kodumuza geçelim. Bu kod, ses sensöründen gelen analog veriyi okuyacak, belirli bir eşiği geçen ses seviyelerine göre LED şeridi farklı renklerde yakacak.
#include <FastLED.h>
#define LED_PIN 6 // LED şeridin data pini
#define NUM_LEDS 60 // LED şerit üzerindeki LED sayısı
#define BRIGHTNESS 50 // Maksimum parlaklık (0-255)
#define COLOR_ORDER GRB // LED şeridin renk sırası (GRB veya RGB)
#define LED_TYPE WS2812B // LED şerit tipi
CRGB leds[NUM_LEDS];
#define AUDIO_INPUT A0 // Ses sensörünün bağlı olduğu analog pin
#define THRESHOLD 150 // Ses eşik değeri (deneyerek bulun)
void setup() {
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness( BRIGHTNESS );
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(AUDIO_INPUT);
Serial.println(sensorValue); // Debug için ses değerini seri portta görüntüle
if (sensorValue > THRESHOLD) {
// Ses eşiği aşıldığında yapılacak işlemler
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CHSV(map(i, 0, NUM_LEDS - 1, 0, 255), 255, 255); // Gökkuşağı renkleri
}
FastLED.show();
delay(50); // Kısa bir süre bekle
} else {
// Ses eşiği aşılmadığında yapılacak işlemler
fill_solid(leds, NUM_LEDS, CRGB::Black); // Tüm LED'leri söndür
FastLED.show();
}
}
Kod Açıklaması:
#include <FastLED.h>
: FastLED kütüphanesini projeye dahil ediyoruz. Bu kütüphane, adreslenebilir LED şeritleri kontrol etmemizi kolaylaştırır.- Tanımlamalar: LED pinini, LED sayısını, parlaklığı, renk sırasını ve LED tipini tanımlıyoruz.
leds[NUM_LEDS]
: LED'leri tutacak bir CRGB dizisi oluşturuyoruz.AUDIO_INPUT
veTHRESHOLD
: Ses sensörünün bağlı olduğu analog pini ve ses eşik değerini tanımlıyoruz.THRESHOLD
değerini, ortam gürültüsüne göre deneme yanılma yoluyla ayarlamanız gerekebilir.setup()
fonksiyonu: FastLED'i başlatıyor ve seri iletişimi başlatıyoruz (debug için).loop()
fonksiyonu: Sürekli olarak ses sensöründen veri okuyor. Eğer okunan değer eşik değerini aşarsa, LED şeridi gökkuşağı renklerinde yakıyor. Aksi takdirde tüm LED'leri söndürüyor.
Kodu Arduino'ya Yükleme ve Test Etme
Arduino IDE'yi kullanarak kodu Arduino kartınıza yükleyin. Kodu yükledikten sonra seri port monitörünü açarak ses sensöründen okunan değerleri gözlemleyebilirsiniz. Ortamdaki sesi artırarak veya sensöre yakın konuşarak LED şeridin tepki verip vermediğini kontrol edin. Eğer LED'ler tepki vermiyorsa, THRESHOLD
değerini ayarlayarak hassasiyeti artırabilir veya azaltabilirsiniz.
Proje Geliştirme İpuçları
- Farklı renk efektleri deneyin: Kodda
CHSV
yerine farklı renk kombinasyonları kullanarak farklı efektler yaratabilirsiniz. - Ses seviyesine göre parlaklığı ayarlayın: Ses seviyesi arttıkça LED'lerin parlaklığını da artırabilirsiniz.
- Farklı LED şerit türleri kullanın: WS2812B yerine farklı adreslenebilir LED şeritler (örn. APA102) kullanarak farklı sonuçlar elde edebilirsiniz.
- Müzik analizi yapın: Daha gelişmiş projelerde, FFT (Fast Fourier Transform) algoritması kullanarak müziğin frekanslarını analiz edebilir ve LED'leri bu frekanslara göre kontrol edebilirsiniz.
Umarım bu proje size ilham vermiştir ve elektronik dünyasına adım atmanızda yardımcı olmuştur. İyi eğlenceler!
Etiketler: Arduino, LED Şerit, Ses Sensörü, Müzik, Işık, Proje, Hobi, Elektronik, WS2812B, FastLED
```
0 yorum: