ARDUINO DERS 6

LED UYGULAMALARI-2


 
 

BU DERSTE NELER ÖĞRENECEĞİZ?

Bu derste,

  • Birden fazla LED’i aynı anda kullanmayı ve
  • LED ile çakar yapmayı
öğreneceğiz.

Bu derste, LED’lerle ilgili uygulamalara devam ediyoruz. Bu defa, makam ve polis arabalarındaki çakarlardan yapıyoruz.

Aşağıdaki video’da, uygulamayı çalışırken görebilirsiniz.

KULLANILAN MALZEMELER

Bu derste, 1 kırmızı, 1 mavi LED ve akım sınırlandırmak için 150Ω ve 75Ω dirençler kullanıyoruz.

 
Arduino Uno R3 1 Adet Kırmızı LED 1 Adet Mavi LED 1 Adet 150Ω Direnç 1 Adet 75Ω Direnç Bağlantı Kabloları (Jumper) Devre Tahtası (Breadboard)
Arduino Uno Kırmızı LED Mavi LED 150Ohm Direnç 75Ohm Direnç Jumper Breadboard
 
 
 

DEVRE

Ders 6 devre

Deneyde iki adet LED yakıp söndüreceğimiz için, Arduino’nun iki dijital portunu kullanacağız. Biz burada kırmızı LED için 2. ve mavi LED için 3. dijital portu seçiyoruz. Daha önceki devrelerde olduğu gibi, LED’lerin anot (uzun olan) bacağını Arduino’nun dijital portuna, katot (kısa) olan bacağını dirence bağlıyoruz. Devreyi tamamlamak için, dirençlerin LED’e bağlı olmayan bacaklarını ise Arduino’nun toprağına (GND) bağlıyoruz.

Arduino’nun dijital portu çıkış-1 olduğu zaman bu portta 5V gerilim oluşur, ancak LED için çalışma voltajı 2V’tur. Akımı 20mA ile sınırlandırmak için (5V-2V)/20mA=150Ω direnç kullanıyoruz. Mavi LED için ise çalışma voltajı 3.5V’tur. Mavi LED üzerinden de aynı miktar akım geçmesi için (5V-3.5V)/20mA=75Ω’luk direnç bağlıyoruz.

Aşağıda, kurulmuş gerçek devreyi görebilirsiniz.

Ders 6 gerçek devre
 
 

PROGRAM

Biri mavi, diğeri kırmızı iki LED kullanarak makam ve polis arabalarında bulunan çakarlardan yapıyoruz. Önce hızlı bir şekilde kırmızı LED’i daha sonra mavi LED’i iki kere hızlıca yakıp söndürüyoruz. Aşağıda Arduino’ya yükleyeceğimiz kodları bulabilirsiniz.

/*Kırmızı LED 2 numaralı dijital porta,

Mavi LED 3 numaralı dijital porta bağlı*/

void setup() {

pinMode(2, OUTPUT);// 2. dijital portu çıkış yap

pinMode(3, OUTPUT);// 3. dijital portu çıkış yap

}

 

void loop() {

digitalWrite(2, HIGH); // Kırmızı LED’i yak

delay(50); // 50 milisaniye bekle

digitalWrite(2, LOW); // Kırmızı LED’i söndür

delay(50); // 50 milisaniye bekle

digitalWrite(2, HIGH); // Kırmızı LED’i ikinci defa yak

delay(50); // 50 milisaniye bekle

digitalWrite(2, LOW); // Kırmızı LED’i söndür

 

delay(500); // Yarım saniye bekle

 

digitalWrite(3, HIGH); // Mavi LED’i yak

delay(50); // 50 milisaniye bekle

digitalWrite(3, LOW); // Mavi LED’i söndür

delay(50); // 50 milisaniye bekle

digitalWrite(3, HIGH); // Mavi LED’i ikinci defa yak

delay(50); // 50 milisaniye bekle

digitalWrite(3, LOW); // Mavi LED’i söndür

 

delay(500); // Yarım saniye bekle

}

Şimdi bu kodları satır satır inceleyelim.

setup

LED yakma deneyinin aksine, bu uygulamanın setup fonksiyonunda iki satır kodla karşılaşıyoruz. Bu örnekte, iki adet LED’imiz olduğu için bunlardan herbirini farklı bir porta bağlamamız gerekiyor. Biz burada 2 ve 3 numaralı portları kullanıyoruz. 2 numaraya kırmızı LED’i, 3 numaraya ise mavi LED’i bağlıyoruz. Bu nedenle hem 2 hem de 3 numaralı portları çıkış yapmalıyız. setup() içerisinde birinci satırda kırmızı LED’i bağlayacağımız portu, ikinci satırda ise mavi LED’i bağlayacağımız portu çıkış haline getiriyoruz.

loop

loop fonksiyonu içerisinde sürekli tekrarlanmasını istediğimiz olayları yazıyoruz. Burada özetle istediğimiz şey, kırmızı LED’in iki kere yanıp sönmesi, ardından da mavi LED’in iki kere yanıp sönmesidir.

loop içerisindeki ilk yedi satırda, kırmızı LED’i 50’şer milisaniye aralıklarla iki kere yakıp söndürüyoruz.

digitalWrite(2, HIGH); // Kırmızı LED’i yak

delay(50); // 50 milisaniye bekle

digitalWrite(2, LOW); // Kırmızı LED’i söndür

delay(50); // 50 milisaniye bekle

digitalWrite(2, HIGH); // Kırmızı LED’i ikinci defa yak

delay(50); // 50 milisaniye bekle

digitalWrite(2, LOW); // Kırmızı LED’i söndür

Programda

digitalWrite(2, HIGH);

kırmızı LED’in yanmasını,

digitalWrite(2, LOW);

ise bu LED’in sönmesini sağlıyor.

Bu satırların aralarına yazdığımız,

delay(50);

komutu, LED’lerin durumlarını değiştirmeden 50 milisaniye kalmalarını sağlıyor.

Ders 6 gerçek devre

Sekizinci satır olarak yazdığımız,

delay(500);

mavi LED yanıp sönmeye başlamadan önce yarım saniye durulmasını sağlıyor.

Sonraki yedi satırda aynı işlemi mavi LED için tekrarlıyoruz. Aşağıdaki kodlar, mavi LED’in iki kere yanıp sönmesini sağlıyor. Bu sırada kırmızı LED ile yaptığımız son işlem bu LED’i söndürmek olduğundan, mavi LED yanıp sönerken kırmızı LED sönmüş halde bekliyor.

digitalWrite(3, HIGH); // Mavi LED’i yak

delay(50); // 50 milisaniye bekle

digitalWrite(3, LOW); // Mavi LED’i söndür

delay(50); // 50 milisaniye bekle

digitalWrite(3, HIGH); // Mavi LED’i ikinci defa yak

delay(50); // 50 milisaniye bekle

digitalWrite(3, LOW); // Mavi LED’i söndür

Ders 6 gerçek devre

loop içerisindeki son satır ise, bir sonraki adımda kırmızı LED’i yakıp söndürmeden önce yarım saniye beklememizi sağlıyor.

PORT NUMARASI YERİNE İSİM KULLANMA

Uzun programlar için, hangi porta ne bağladığımızı hatırlamamız zor olabileceğinden, portlara isim verip, numara yerine bu isimleri kullanabiliriz.

Örneğin, aşağıdaki program yukarıdaki ile aynı şekilde çalışacaktır.

int Kirmizi=2;

int Mavi=3;

void setup() {

pinMode(Kirmizi, OUTPUT);// 2. dijital portu çıkış yap

pinMode(Mavi, OUTPUT);// 3. dijital portu çıkış yap

}

 

void loop() {

digitalWrite(Kirmizi, HIGH); // Kırmızı LED’i yak

delay(50); // 50 milisaniye bekle

digitalWrite(Kirmizi, LOW); // Kırmızı LED’i söndür

delay(50); // 50 milisaniye bekle

digitalWrite(Kirmizi, HIGH); // Kırmızı LED’i ikinci defa yak

delay(50); // 50 milisaniye bekle

digitalWrite(Kirmizi, LOW); // Kırmızı LED’i söndür

 

delay(500); // Yarım saniye bekle

 

digitalWrite(Mavi, HIGH); // Mavi LED’i yak

delay(50); // 50 milisaniye bekle

digitalWrite(Mavi, LOW); // Mavi LED’i söndür

delay(50); // 50 milisaniye bekle

digitalWrite(Mavi, HIGH); // Mavi LED’i ikinci defa yak

delay(50); // 50 milisaniye bekle

digitalWrite(Mavi, LOW); // Mavi LED’i söndür

 

delay(500); // Yarım saniye bekle

}

pinMode ve digitalWrite içerisinde 2 ve 3 yerine bu defa sırasıyla Kirmizi ve Mavi kullanıyoruz. Bu isimleri kullanabilmemizin nedeni, programın ilk iki satırındaki tanımlamalardır.

int Kirmizi=2;

int Mavi=3;

Kirmizi ve Mavi isimlerinin başında bulunan int, bu isimlerin tam sayıları olduğunu ifade eder. Bu iki satırla programa Kirmizi ve Mavi’nin birer sayı olduğunu ve sırasıyla değerlerinin 2 ve 3 olduğunu anlatmış oluyoruz. Bu iki satırdan sonra, herhangi bir fonksiyon içerisinde 2 numaralı portu ifade etmek için Kirmizi, 3 numaralı portu ifade etmek için ise Mavi isimlerini kullanabiliriz.

SİZ DE DENEYİN-ALIŞTIRMA

Yukarıda anlatılan uygulamayı, iki mavi ve iki kırmızı LED için tekrarlayınız.

 

BİR SONRAKİ DERS


ARDUINO DERS-7 LDR VE ANALOG PORTLAR

Bir sonraki derste, bir ışık sensörü olan LDR'yi kullanmayı ve Arduino'nun analog portlarından veri okumayı öğreniyoruz.