Merhaba bu dersimizde seri port ekranı, potansiyemetre ile led yakma / buzzerdan çıkış alma map komutunu göreceğiz.
Serial monitoring yani seri haberleşme ya da seri port ekranı ile değişkenlerin anlık değerlerini program çalışırken görebiliriz.
Potansiyemetre nedir? Potansiyemetre en basit tanımıyla değişken, ayarlanabilir dirençtir.
Buzzer nedir? Buzzer ise az gelişmiş hoparlör olarak düşünebilirsiniz. Aktif ve pasif buzzer olmak ikiye ayrılır. (Arkasında epoksi kaplama varsa yani siyah devreler görünmüyorsa aktif, devre açık bir şekilde görünüyorsa pasif buzzerdır. En altta buzzerlarla ilgili bir tavsiye video linki var, dilerseniz izleyebilirsiniz.)
Bu videomuzda potansiyemetre ile buzzer ve led kullanacağız. Potansiyemetre ile ses ve ışık şiddetini ayarlayabileceğiz.
Potansiyemetre nedir? Potansiyemetre en basit tanımıyla değişken, ayarlanabilir dirençtir.
Buzzer nedir? Buzzer ise az gelişmiş hoparlör olarak düşünebilirsiniz. Aktif ve pasif buzzer olmak ikiye ayrılır. (Arkasında epoksi kaplama varsa yani siyah devreler görünmüyorsa aktif, devre açık bir şekilde görünüyorsa pasif buzzerdır. En altta buzzerlarla ilgili bir tavsiye video linki var, dilerseniz izleyebilirsiniz.)
Bu videomuzda potansiyemetre ile buzzer ve led kullanacağız. Potansiyemetre ile ses ve ışık şiddetini ayarlayabileceğiz.
Gerekli Malzemeler
Arduino Uno R2
Breadboard
Potansiyemetre
Direnç (220-330ohm)
Led
Buzzer
Jumper Kablo
Breadboard
Potansiyemetre
Direnç (220-330ohm)
Led
Buzzer
Jumper Kablo
Önceki led yakma videolarımızda ledi yak ve söndür komutlarını kullanmıştık. Dijital verilerdi bunlar, açık-kapalı. Ancak bu videoda şiddetini artırmak ve azaltmak için analog sinyallerden yararlanacağız. Bunun için de arduinonun dijital pinlerinde yer alan PWM özelliğinden yararlanacağız. Dikkatli bakarsanız arduino dijital pinleri üzerinde yaklaşık işaretiyle gösterilen pinler mevcuttur: 3,5,6,9,10,11 numaralı pinler. Bu pinler analog sinyalleri taklit edebilmekte ve analog sinyalleri çıkış olarak alabilmekteyiz. Yani bu pinler sayesinde lede, motora, buzzera istediğimiz oranda güç verip çalışmasını sağlayabiliriz, yavaş , orta şiddette vs.
Arduino Potansiyemetre ile Led veya Buzzer Kullanımı Devresi
Şimdi devremizi oluşturmaya başlayalım. İlk olarak potansiyemetre ile led yakalım.
Potansiyemetreyi breadboard üzerinde bir yere yerleştirelim, köşedeki bacaklardan birine 5V, diğerine GND yani 0V bağlayalım. Burada size göre sol kısmı (yani kısma yönünü) gndye, sağ pini ise 5V pinine bağlamak daha doğru olacaktır. Yoksa sesi açmak isterken kısıldığını göreceğiz. Potansiyemetreden analog giriş değeri alınacağı için sinyal bacağını yani orta bacağı analog pinlerden birine bağlıyoruz, A0'a bağladık.
Potansiyemetreyi breadboard üzerinde bir yere yerleştirelim, köşedeki bacaklardan birine 5V, diğerine GND yani 0V bağlayalım. Burada size göre sol kısmı (yani kısma yönünü) gndye, sağ pini ise 5V pinine bağlamak daha doğru olacaktır. Yoksa sesi açmak isterken kısıldığını göreceğiz. Potansiyemetreden analog giriş değeri alınacağı için sinyal bacağını yani orta bacağı analog pinlerden birine bağlıyoruz, A0'a bağladık.
Ledimizi bağlamak için artı bacağından bir 220 ohm dirençle, dijital pwm pinlerinden birine bağlıyoruz, 3 numaralı pine bağladık. Ledin eksi bacağını gnd pinine bağladık.
Bağlantılarımızı devre şemasında gösterildiği yapabilirsiniz.
Led yerine dilerseniz buzzer da kullanabilirsiniz. Eğer ses çıkmazsa, lütfen buzzerın + ve - ayaklarını doğru bağlayıp bağlamadığınızı kontrol ediniz, aradaki sabit direnci de devreden çıkarıp deneyebilirsiniz. Buzzerın artı bacağı sinyale(3) eksi bacağı ise gndye bağlanır. Bu uygulamada 5k potansiyemetre kullanılmıştır.
Bağlantılarımızı devre şemasında gösterildiği yapabilirsiniz.
Led yerine dilerseniz buzzer da kullanabilirsiniz. Eğer ses çıkmazsa, lütfen buzzerın + ve - ayaklarını doğru bağlayıp bağlamadığınızı kontrol ediniz, aradaki sabit direnci de devreden çıkarıp deneyebilirsiniz. Buzzerın artı bacağı sinyale(3) eksi bacağı ise gndye bağlanır. Bu uygulamada 5k potansiyemetre kullanılmıştır.
Kodlarımız:
analogRead komutuyla potansiyemetreden 0-1023 arasında değer alırız. Bu değer potansiyemetrenin düğmesinin çevrilmesiyle değişir. Bu değerleri anlık görmek için setup kısmına Serial.begin(9600) yazıp loop kısmına Serial.println(degisken) yazıyoruz. (sondaki ln kısmı bir alt satıra geçmek için kullanılır.)Sayıların hızlı akmasını delay (100); ifadesiyle yavaşlatabiliriz. Serial Monitör ekranı programın işleyişlerini anlık görmek ve anlık verileri görmek açısından çok işimize yaramaktadır.
Serial Monitörden Değer Okuma Kodları
#define led 3
#define pot A0
void setup() {
Serial.begin(9600);
}void loop() {
int deger = analogRead(pot);
//deger=map(deger,0,1023,0,255);
Serial.println(deger);
delay(100);
}
Kodlarımızı yazıp, arduinoya yükledikten sonra, araçlar menüsünden Seri Port Ekranı tıklayarak açıyoruz. Ve potansiyemetreyi çevirdikçe 0 ile 1023 arasında değerlerin ekranda hızlı bir şekilde yazdığını görüyoruz.
Şimdi led parlaklığını veya sesin şiddetini ayarlamak için gerekli kodlarımızı ekleyelim.
Ufak bir Ayrıntı: Bu kodumuzda analogRead ve analogWrite ifadelerini kullandığımızdan pinMode yazmamıza gerek yok çünkü pinMode ifadesi dijital giriş çıkışlar için kullanılır. Burada dikkat etmemiz gereken bir nokta da analog sinyal değerinin 0-255 arasında olduğu bilgisidir. Ancak analog.Read komutuyla potansiyemetreden gelen değer 0-1023 arasındadır. Biz 0-1023 arasındaki değeri 0-255 e dönüştüren map komutunu kullanarak bu problemden kurtulmuş olacağız. Dilerseniz map komutu yerine kendiniz de bir sayısal formül üretebilirsiniz.
Ufak bir Ayrıntı: Bu kodumuzda analogRead ve analogWrite ifadelerini kullandığımızdan pinMode yazmamıza gerek yok çünkü pinMode ifadesi dijital giriş çıkışlar için kullanılır. Burada dikkat etmemiz gereken bir nokta da analog sinyal değerinin 0-255 arasında olduğu bilgisidir. Ancak analog.Read komutuyla potansiyemetreden gelen değer 0-1023 arasındadır. Biz 0-1023 arasındaki değeri 0-255 e dönüştüren map komutunu kullanarak bu problemden kurtulmuş olacağız. Dilerseniz map komutu yerine kendiniz de bir sayısal formül üretebilirsiniz.
map komutunun kullanımı şöyledir:
degisken=map(degisken,a,b,c,d)
Bu formülde
a=dönüştürmek istediğiniz değerin minimum değerini
b= dönüştürmek istediğiniz değerin maksimum değerini
c=dönüştüreceğiniz değerin minimum değeri
d=dönüştüreceğiniz değerin maksimum değeri
biraz karışıkmış görünse de bu formülü şimdiki örnekte kullanınca ne kadar basit olduğu anlaşılacaktır. Yani formülün özeti ilk iki değeri son iki değere oranla.
degisken=map(degisken,a,b,c,d)
Bu formülde
a=dönüştürmek istediğiniz değerin minimum değerini
b= dönüştürmek istediğiniz değerin maksimum değerini
c=dönüştüreceğiniz değerin minimum değeri
d=dönüştüreceğiniz değerin maksimum değeri
biraz karışıkmış görünse de bu formülü şimdiki örnekte kullanınca ne kadar basit olduğu anlaşılacaktır. Yani formülün özeti ilk iki değeri son iki değere oranla.
#define led 3
#define pot A0
void setup() {
Serial.begin(9600);
}
void loop() {
int deger = analogRead(pot);
deger=map(deger,0,1023,0,255);
Serial.println(deger);
delay(100);
analogWrite(led,deger);
}