Bu derste,
Önceki iki derste Arduino kullanarak LED yakmayı öğrendik. Bu derste LED sayısını artırarak, genelde yılbaşlarında süs olarak kullanılan kayan ışık uygulamasını yapacağız.
Aşağıdaki video’da uygulamayı çalışırken görebilirsiniz.
Bu derste, 8 adet kırmızı LED ve 8 adet 150 Ohm direnç kullanıyoruz.
Arduino Uno R3 | 8 Adet Kırmızı LED | 8 Adet 150Ω Direnç | Bağlantı Kabloları (Jumper) | Devre Tahtası (Breadboard) |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
Önce kullanacağımız devreye bir göz atalım.
8 adet LED yakıp söndüreceğimizden, 8 tane dijital port (2 numaradan 9 numaraya kadar olan portlar) kullanıyoruz. Her bir porta bir LED’in anot ucunu (uzun bacağını) bağlıyoruz. Tüm LED’lerin katot uçlarına (kısa bacaklarına) ise, akımı sınırlandırması için birer adet 150Ω'luk direnci bağlıyoruz. Her bir LED için ayrı bir direnç kullanmalıyız. Arduino’dan sinyal geldiğinde LED ve direnç çiftleri üzerinden akım geçebilmesi için, dirençlerin açıkta kalan bacaklarını Arduino’nun toprağına (GND) bağlamalıyız. Eğer, LED’e bağlı portlardan birinden 5V gelirse yaklaşık 2V’u LED, geri kalan 3V’u ise direnç üzerinde olacaktır. Böylece LED yanarken üzerinden 3V/150Ω=20mA’lik bir akım geçer ve bu akım, LED’in parlak yanabilmesi için yeterlidir. Aşağıda, devrenin kurulmuş halini görebilirsiniz.
void setup() {
pinMode(2, OUTPUT);// 2. dijital portu çıkış yap
pinMode(3, OUTPUT);// 3. dijital portu çıkış yap
pinMode(4, OUTPUT);// 4. dijital portu çıkış yap
pinMode(5, OUTPUT);// 5. dijital portu çıkış yap
pinMode(6, OUTPUT);// 6. dijital portu çıkış yap
pinMode(7, OUTPUT);// 7. dijital portu çıkış yap
pinMode(8, OUTPUT);// 8. dijital portu çıkış yap
pinMode(9, OUTPUT);// 9. dijital portu çıkış yap
}
void loop() {
digitalWrite(2, HIGH); // 2. dijital portu 1 yap
digitalWrite(3, LOW); // 3. dijital portu 0 yap
digitalWrite(4, HIGH); // 4. dijital portu 1 yap
digitalWrite(5, LOW); // 5. dijital portu 0 yap
digitalWrite(6, HIGH); // 6. dijital portu 1 yap
digitalWrite(7, LOW); // 7. dijital portu 0 yap
digitalWrite(8, HIGH); // 8. dijital portu 1 yap
digitalWrite(9, LOW); // 9. dijital portu 0 yap
delay(500); // Yarım saniye bekle
digitalWrite(2, LOW); // 2. dijital portu 0 yap
digitalWrite(3, HIGH); // 3. dijital portu 1 yap
digitalWrite(4, LOW); // 4. dijital portu 0 yap
digitalWrite(5, HIGH); // 5. dijital portu 1 yap
digitalWrite(6, LOW); // 6. dijital portu 0 yap
digitalWrite(7, HIGH); // 7. dijital portu 1 yap
digitalWrite(8, LOW); // 8. dijital portu 0 yap
digitalWrite(9, HIGH); // 9. dijital portu 1 yap
delay(500); // Yarım saniye bekle
}
setup
Yukarıdaki program, bir önceki dersteki LED yakıp söndürme programına oldukça benziyor. Tek farkı bir yerine 8 adet LED kullanmamız. Arduino’ya 8 adet LED bağladığımız için, dijital çıkışlardan seçtiğimiz 8 tanesini setup içerisinde pinMode komutuyla çıkış haline getiriyoruz.
Örneğin,
pinMode(2, OUTPUT);satırı 2 numaralı dijital portu çıkış yapıyor.
loop
Portlarla ilgili yapılandırmayı bitirdikten sonra, programın yapacağı esas işi loop fonksiyonu içerisine yazıyoruz. loop fonksiyonu içerisindeki ilk 8 satırda, 2., 4., 6. ve 8. dijital portları 1 yaparak bu portlara bağlı olan LED’lerin yanmasını sağlıyoruz. Yine aynı satırlar içerisinde 3., 5., 7. ve 9. portları 0 yapıp, bu portlara bağlı olan LED’leri söndürüyoruz. Bu işlemleri yaptığımız zaman LED’ler aşağıdaki resimde gösterildiği durumda oluyor.
Bir sonraki satırdaki
delay(500); // Yarım saniye bekle
komutu, Arduino’nun yarım saniye boyunca bu durumda beklemesini sağlıyor.
Sonraki 8 satırda ise, ilk 8 satırda yaptığımız işlemin tersini yapıyoruz. Başlangıçta çift sayılı portları (2., 4., 6. ve 8.) 1, tek sayılı olanları (3., 5., 7. ve 9.) 0 yapmıştık. Şimdi ise çift sayılı portları 0, tek sayılı portları ise 1 yapıyoruz. Böylece, sönük olan LED’ler yanıyor ve yanan LED’ler sönüyor.
Son satırdaki
delay(500); // Yarım saniye bekle
Arduino’nun yarım saniye boyunca portlarda bir değişiklik yapmadan beklemesini sağlıyor.
loop fonksiyonu, içindeki satırlar işlendikten sonra her zaman başa döndüğü için, yarımşar saniye aralıklarla çift sayılı ve tek sayılı LED’ler sürekli sırayla yanıp sönüyor.
Programı, önce ilk dört LED, daha sonra ise son dört LED yanacak halde değiştirip, Arduino’ya yükleyin. Yanıp sönmeler arasındaki zaman farkını 200 milisaniye olarak seçiniz.
Bir sonraki derste, Arduino ile LED uygulamaları yapmaya devam ediyoruz. Bu defa makam arabalarının önünde bulunan çakarlardan yapıyoruz.