Herkese merhaba, bu yazımızda Neopixel halka led kullanarak, dekoratif bir görüntüye sahip aynı zamanda süs objesi olarak da kullanabileceğiniz bir Vu Metre yapacağız.

Vu Metre Nedir?

Ses sinyalini ledler yardımı ile görülebilir hale getiren renkli ve eğlenceli bir devredir. Kısaca ses seviyesine göre çıkışlarında bulunan ledleri yakan devrede diyebiliriz.

Malzemeler

Devre Şeması

Devre şemasından önce biraz Vu metrenin çalışma prensibinden bahsedelim. Vu metreyi normal ledler ile yapabileceğiniz gibi rgb ledler ile de yapabilirsiniz. RGB Led kullanmanız durumunda onunda sinyal pinini kontrol etmelisiniz. Biz projemizde neopixel rgb ledi kullanmayı tercih ettik.

Neopixel Led, WS2812, SK6812 ve APA102 isimleri ile de bilinen adreslenebilen ledlerdir. Adreslenebilir ledler mikrokontrolcüler ile kontrol edilebilir. 3 yada 4 girişi bulunan ledler sinyaller ile kontrol edilmektedir. ( GND-BESLEME-SİNYAL-GND). Her bir RGB Led karesi içersinde üç adet renkli led barındırmaktadır.(Kırmızı-yeşil-mavi). Sinyaller ile kontrol ederek istediğiniz parlaklıkta ve renkte ledler elde edebilirsiniz. Neopixel ledler tek başlarına kullanılabildiği gibi, arka arkaya eklenerek de kullanılmaktadır.

Ses sensörü, ses dalgalarını elektrik sinyallerine dönüştürmek için bir kapasitif mikrofonu (50Hz-10kHz) ve bazı işlem devrelerini birleştiren küçük bir karttır. Bu elektrik sinyali, dijitalleştirmek için yerleşik LM393 Yüksek Hassasiyetli Karşılaştırıcıyı besler.Modülde çıkış sinyalinin hassasiyet ayarlaması için yerleşik bir potansiyometreye sahiptir.Bu potansiyometreyi kullanarak ayar yapabilirsiniz.

Ses modülü üzerinden Analog okuma yaparak bu değere göre sırası ile ledlerimizi yakacağız. Yine neopixel ledimizi de 6 numaralı dıjıtal pin ile kontrol edeceğiz.

Bağlantı Detayları

  • Ses Sensörü : GND – GDN, VCC-VCC, OUT-AO
  • Neopixel: GND-GND, VCC-VCC, DIN-D6

Kod

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
int ara_deger,ara_deger2;
// aradeger2 0 ve 1 olamaz
float hassasiyet = 0.2; // 0 ile 1 arasında bir float değer girin örnek 0.444 bu değer analogtan okuduğumuz değeri yumuşak bi şekilde yansıtmak için
#define PIN 6 // hangi pindne çıkış alacaksanız onu girin pwm olması gerekli
#define NUMPIXELS 12 // Popular NeoPixel ring size
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define gecikme 40 // kaç ms beklesin tekrar hesaplama yapması için 20 nin altına inmeyin bu değer değiştirğinde hassasiyet dolaylı yoldan değişir
void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
Serial.begin(9600);
pixels.begin();
}
void loop() {
pixels.clear();
ara_deger2 = (1-hassasiyet) * ara_deger2 + hassasiyet * analogRead(0);
ara_deger = map(ara_deger2, 0, 623, 0, 13);
// Serial.println(ara_deger);
if(ara_deger >= 1 && ara_deger <=3 )
{
for(int i=ara_deger ; i<=12 ; i++)
pixels.setPixelColor(i, pixels.Color(11, 0, 0)); // 3 ana rengide 0 – 255 arasında bir değere set edebilirsiniz
pixels.show();
delay(gecikme);
}
else if(ara_deger >= 4 && ara_deger <= 6 )
{
for(int i=ara_deger ; i<=12 ; i++)
pixels.setPixelColor(i, pixels.Color(0, 11, 0)); // 3 ana rengide 0 – 255 arasında bir değere set edebilirsiniz
pixels.show();
delay(gecikme);
}
else if(ara_deger >=7 && ara_deger <= 9 )
{
for(int i=ara_deger ; i<=12 ; i++)
pixels.setPixelColor(i, pixels.Color(0, 0, 11)); // 3 ana rengide 0 – 255 arasında bir değere set edebilirsiniz
pixels.show();
delay(gecikme);
}
else if(ara_deger >=10 && ara_deger <= 12 )
{
for(int i=ara_deger ; i<=12 ; i++)
pixels.setPixelColor(i, pixels.Color(11, 0, 11)); // 3 ana rengide 0 – 255 arasında bir değere set edebilirsiniz
pixels.show();
delay(gecikme);
}
else {
for(int i=ara_deger ; i<=0 ; i++)
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // 3 ana rengide 0 – 255 arasında bir değere set edebilirsiniz
pixels.show();
delay(gecikme);
}}

Projenin yapım aşaması için Robolink Teknoloji youtube kanalındaki videoyu izlemenizi tavsiye ederim.

🚀 Okumanı Tavsiye Ederiz: Neopixel Saat Yapımı

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz