Ocak 2018 Arduino Başlangıç (11) 2 Okunma Sayısı: 7479
Merhaba arkadaşlar. Bu dersimizde ışık şiddetine göre yanan LED’li gösterge uygulaması yapacağız.
Gerekli malzemeler:
Şimdiye kadar Arduino’muzun hep dijital giriş/çıkış pinlerini kullandık. Fakat siz de fark etmişsinizdir ki Arduino kartımızda bir de “Analog Input” kısmı mevcut. Bu pinleri kullanarak dijitalden analoğa dönüşüm yaparak voltaj okumamız mümkün.
Analogdan Dijitale Çeviriciler (Analog-to-Digital Converter, ADC)
Arduino UNO kartımızdaki işlemcide, 10-bit çözünürlüğe sahip analogdan dijitale dönüştürücü (ADC – analog to digital converter) mecvuttur. Peki, bu 10-bit ne anlama geliyor? Bildiğimiz üzere Arduino’muzun mikrokontrolcüsü 5V gerilimle çalışmakta. Bu mikrokontrolcüde sahip olduğunu söylediğimiz 10-bit ADC, 0V ile 5V arası gerilimleri 210 = 1024 adım hassasiyet ile okuyabilir. Yani analog input pinlerinden birine vereceğimiz 0V gerilim bize 0 değerini; aynı şekilde 5V gerilim ise 1023 değerine denk düşüyor. Eğer 5V’tan daha düşük bir gerilimi referansımızın üst noktası olarak almamız gerekirse, Arduino üzerinde bulunan AREF pinini kullanmamız ve kodda küçük bir değişiklik yapmamız gerekir. Bu pine herhangi bir gerilim uygulamadığımız takdirde ADC’miz 0-5V arasında çalışacaktır.
Potansiyometre
Potansiyometre, aslında çevremizde her gün kullandığımız cihazların neredeyse hepsinde mevcut olan bir devre elemanıdır. Örneğin, müzik setimizin ses seviyesini değiştirmek için çevirdiğimiz düğme bir potansiyometredir. En basit açıklama ile potansiyometre, değerini elimizle çevirerek ayarladığımız bir dirençtir. Mikrokontrolcü uygulamalarında ise genellikle gerilim bölücü olarak kullanılır.
Potansiyometreyi bir yöne çevirdiğimizde yan yana olan iki bacağının direnci değişir. Bunu bir multimetreyle ölçerek görebiliriz. Biz bu uygulamamızda ise 0 ile 5V arasında voltaj değişimini sağlamak için potansiyometre kullanacağız.
Potansiyometreyi arduino uno kartınıza bağladığımızda arduno uno nun analog girişlerine bağlandığında analog değer veren cihazlardır.
Uygulamamızın ilk adımında sadece analog giriş pininden gelen gerilimin sayısal karşılığını seri porttan okuma işlemini yapacağız. Devremizi bu şekilde kuruyoruz:
Bu şekilde bağlantı yapıldığında, potansiyometremizin orta bacağında 0-5V arası değişen bir gerilim alabiliriz. Şimdi yazacağımız kodla bu gerilimin sayısal karşılığını seri porttan görebileceğiz:
int potPin = A0; void setup() { Serial.begin(9600); Serial.println("Analog input okuma ornegi."); } void loop() { int deger = analogRead(potPin); Serial.println(deger); delay(100); }
Bu yazdığımız kodu Arduino’muza yükledikten sonra seri port ekranını açıyoruz ve potansımızı çevirmeye başlıyoruz. Değerlerdeki değişimi görebilirsiniz:
Şimdi ise analog giriş pininden okuduğumuz değere göre daha önce yaptığımız çoklu LED yakma uygulamasını yapalım. Önceki uygulamamızdan devre olarak tek farkı, potansiyometrenin eklenmesi:
Bu devre ile kullanacağımız kod:
int potPin = 0; int latchPin = 5; int clockPin = 6; int dataPin = 4; int leds = 0; void setup() { pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); } void loop() { int deger = analogRead(potPin); int yanan_ledsayisi = deger / 114; //1023 / 9 leds = 0; for (int i = 0; i < yanan_ledsayisi; i++) { bitSet(leds, i); } registeraYaz(); } void registeraYaz() { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, leds); digitalWrite(latchPin, HIGH); }
Bu kod, potansiyometremizin voltaj değerini 8 LED için ayrı adımlara bölerek, gerilim arttıkça daha fazla LED’in yanmasını sağlıyor. Bu uygulamadaki potansiyometreyi, analog çıkışlı başka elemanlarla değiştirerek sizler de farklı uygulamalar yapabilirsiniz. Örneğin LM35 sıcaklık sensörüyle bir sıcaklık seviyesi göstergesi ya da bir mikrofon ile birlikte kullanacağınız preamfi devresiyle ses şiddeti göstergesi (vumetre) yapmak mümkün. Biz de bir sonraki uygulamamızda ışık şiddetine göre artan sayıda LED yakma işlemini yapacağız. Bir sonraki derse devam edecekseniz devrenizi sökmeyin