Bu derste,
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.
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) |
---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
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.
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
}
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
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.
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
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.
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.
Yukarıda anlatılan uygulamayı, iki mavi ve iki kırmızı LED için tekrarlayınız.
Bir sonraki derste, bir ışık sensörü olan LDR'yi kullanmayı ve Arduino'nun analog portlarından veri okumayı öğreniyoruz.