Potansiyometre ile Led veya Buzzer Kullanımı ile Seri Port Ekranı, Map Komutu, arduino ve mblock kodları (Arduino Dersleri, 5)

Rate this item
(0 votes)

Arduinoda potansiyometre ile led veya buzzer kullanımı, serial Monitoring (Seri Haberleşme, seri port ekranı), map komutu

Merhaba bu dersimizde seri port ekranı, potansiyometre 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.
potansiyometre nedir? potansiyometre 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 potansiyometre ile buzzer ve led kullanacağız. potansiyometre ile ses ve ışık şiddetini ayarlayabileceğiz.


Gerekli Malzemeler

1 adet Arduino Uno R3
1 adet Breadboard
1 adet Potansiyometre (5K)
1 adet direnç (220 ohm)
1 adet led 
1 adet buzzer (aktif)
5 adet Jumper Kablo (EE)

Ö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 potansiyometre ile Led veya Buzzer Kullanımı Devresi

Şimdi devremizi oluşturmaya başlayalım. İlk olarak potansiyometre ile led yakalım.
potansiyometreyi 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. potansiyometreden 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 potansiyometre kullanılmıştır.

 

Kodlarımız:

analogRead komutuyla potansiyometreden 0-1023 arasında değer alırız. Bu değer potansiyometrenin 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);  
//üst satır başındaki yorum satırını kaldırarak çalıştırınız.
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 potansiyometreyi ç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 digital sinyal değerinin 0-255 (8bit) arasında olduğu bilgisidir. Ancak analog.Read komutuyla potansiyometreden gelen değer 0-1023 (10bit) 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.

 

#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);
}

potansiyometre ile Led veya Buzzer kullanımı, Mblock Kodları

pot isimli bir potansiyometre tanımladık, A0 pinine bağladığımızı belirttik. Pot isimli değişkene aldığımız değeri hemen ledin bağlı bulunduğu 3 numaralı pwm pinine aktardık. Burada PWM ayarla 3 bloğunu kullanma nedenimiz, analog değerlerle çalışmamızdan kaynaklanıyor.  Map komutunu veya 4 e bölme işleminin nedeni ise 0-1023 arasında olan pot isimli değişkenin (potansiyometreden gelen analog veri 0-1023 arasındadır. Ancak bunu 3 numaralı pwm dijital çıkış pinine aktarmak için 0-255 arasında bir değere dönüştürmemiz gerekmektedir.

 

Potansiymetre Nedir? (Robotistan)
https://youtu.be/D0UuJGqi_NA?list=PLDRcccSktQd5mfXDtGv975V77RCrW6H7U&t=147

Aktif ve Pasif Buzzer Nedir? Robotistan
https://www.youtube.com/watch?v=z9LGMjHwmoE

 

 

CTRL Bizde

Kendi halinde bir kaç kişiyiz,. Karşılaştığımız sorunları çözmek için bazen "çok zaman" harcadığımızı fark edip

devamı

Yeni Eklenenler