Merhabalar, bir haftasonu projesi olarak düşündüğüm bu projede arduino ile vu metre yani volume unit meter yapımını anlatacağım.

Kısaca vu metre nedir ondan bahsetmek gerekirse, sıralı ledlerden oluşan bir devre. Özelliği ise müziğin ritmine göre ledlerin sıra ile yanıp sönmesi.

Örneklerine buradan bakabilirsiniz. Bizim yapacağımız ise 10 ledli basit bir vu metre olacak. İstediğinize göre led sayısını arttırabilir ya da daha dekoratif hale getirebilirsiniz.

Öncelikle proje için gerekli malzemeler:

Projemizin devre şeması:

Untitled Sketch_bb

Devreyi bu şekilde yaptıktan sonra, kulaklık girişini bilgisayara takınca bilgisayardan ses gelmediğini fark edeceksiniz. Çünkü ses o sırada kulaklık girişine gidiyor. Fakat ses olmadan sadece yanıp sönen ışıklar bir şey ifade etmeyeceği için sesin hem hoparlör girişinden hem de bilgisayardan çıkması gerekmekte. Bunun için de şuradaki videodan yardım alınabilir.

Bu adımı da atlattıktan sonra Arduino kod kısmına geliyoruz

Arduino Kodu:

Kodun çalışma mantığı şu şekilde önce bir dizi ile ledleri tanımlıyoruz. Kodumuzda kullanacağımız değişkenleri tanımlayıp, ledleri çıkış olarak ayarlıyoruz. Loop fonksiyonu içerisinde ise, önce A0 analog pininden okuduğumuz değeri analog_deger değişkenine atıyoruz ve bu değişkeni 5’e bölüyoruz(Siz devreyi bir kere çalıştırdıktan sonra daha büyük ya da küçük sayılara bölebilirsiniz. analog_deger değişkeninin yüksek olması daha az seste daha çok ledin yanması anlamına gelir.). Eğer analog_değer değişkeni 0 ise tüm ledleri söndürüyoruz, değişken 0’dan farklı ise ledleri sırası ile yakmaya başlıyoruz.

int led_pinleri[10] = { 2,3, 4, 5, 6, 7, 8, 9, 10, 11}; 
int analog_deger, i;

void setup()
{
for (i = 0; i < 10; i++)
  pinMode(led_pinleri[i], OUTPUT);
 Serial.begin(9600); 
}

void loop()
{
analog_deger = analogRead(A0);  
Serial.print(analog_deger);
Serial.print("   ");
analog_deger = analog_deger / 5;     
Serial.println(analog_deger); 


  if (analog_deger == 0)  
   {
   for(i = 0; i < 10; i++)
     {
     digitalWrite(led_pinleri[i], LOW);
     }
  }
  
  else
  {
   for (i = 0; i < analog_deger; i++) 
    {
     digitalWrite(led_pinleri[i], HIGH);
    }
    
    for(i = i; i < 10; i++)  
     {
      digitalWrite(led_pinleri[i], LOW);
     }
  }
}

Kodu da Arduino’ya attıktan sonra yukarıda linkini verdiğim videolardaki gibi bir sonuç çıkacaktır.

İşte benim yaptığım devrenin fotoğrafı, video şuan için yok fakat en kısa sürede yüklenecektir.

P_20160609_130917

5 Yorumlar

CEVAP VER