Bu yazımızda Arduino ile trafik lambası yapacağız. Hazırsanız başlayalım!

Öncelikle trafik ışıklarının mantığını öğrenelim. Trafik lambalarında yeşil ışık, sarı ışıktan daha fazla yanmaktadır. Aynı şekilde kırmızı ışıkla yeşil ışığın yanma süreleri genelde eşit olmaktadır.

Malzeme Listesi

Yukarıdaki malzemelere sahipseniz Arduino ile Trafik Lambası Projesine başlayabiliriz.

Malzemeleri bir bir Mekrobot.com‘da satın alabileceğiniz gibi, projeye özel set taleplerinizi bize iletebilirsiniz. Ayrıca Arduino üzerinde daha farklı çalışmalar yapmak isterseniz aşağıda bulunan linkten hem kullanışlı hem de uygun fiyatlı Arduino setlerine sahip olabilirsiniz.

Arduino setlerini incelemek için tıklayınız.

Yukarıda görülen devrede bağlantı işlemi aşağıdaki gibi yapılmıştır.

Öncelikle LED’lerin hepsinin Katot (-)  bacağını en alttaki yatay bölmeye bağladık.

Ardından Anot (+) bacaklar;

Kırmızı LED’in 9 nolu dijital pine bağlandı.

Sarı LED’in bacağı 5 nolu dijital pine bağlandı.

Yeşil LED’in bacağı 2 nolu dijital pine bağlandı.

Dirençlerin yönü olmadığından istediğimiz şekilde doğru yerlere yerleştirip devreyi tamamladık. 

Yukarıdaki işlemleri yaptıktan sonra kod kısmına geçebiliriz

int kirmizi = 9; //LED’lerin bağlı olduğu pinleri tanımlıyoruz
int sari = 5;
int yesil = 2;

void setup() {
  pinMode(kirmizi, OUTPUT);
  pinMode(sari, OUTPUT);
  pinMode(yesil, OUTPUT);
}

void loop() {
  digitalWrite(kirmizi, HIGH); // Kırmızı led yakıldı
  digitalWrite(sari, LOW); //İlk durumda sarı led sönük durumda
  digitalWrite(yesil, LOW); //İlk durumda yeşil led sönük durumda
  delay(5000); //5 sn sürecek
  digitalWrite(sari, HIGH); //Sarı led yakıldı
  delay(2000);
  digitalWrite(yesil, HIGH);
  digitalWrite(kirmizi, LOW);
  digitalWrite(sari, LOW);
  delay(5000);
  digitalWrite(sari, HIGH);
  digitalWrite(yesil, LOW); //Kırmızı ledde değişiklik olmadığından yazılmadı
  delay(2000);
}

Çalışma Şekli

Kodlarımızı bölümlere ayırarak daha ayrıntılı bakalım;

{
  pinMode(kirmizi, OUTPUT);
  pinMode(sari, OUTPUT);
  pinMode(yesil, OUTPUT);
}

pinMode komutu, pin ve mode olmak üzere iki parametre almaktadır. Pin parametresi, modunu ayarlamak istediğimiz pin bilgisini; mode parametresi ise belirtilen pinin giriş(INPUT) veya çıkış (OUTPUT) olarak ayarlanmasını sağlamak için kullanılır. Yukarıda verilen üç pinMode komutu ile 12, 5 ve 2 nolu pinler çıkış olarak ayarlanmıştır.

digitalWrite(kirmizi, HIGH);
digitalWrite(sari, LOW);
digitalWrite(yesil, LOW);
delay(5000);

Komutlarından sonra devremiz kırmızı ışığı 5 sn boyunca yakacak

digitalWrite(sari, HIGH);
delay(2000);

Komutlarından sonra devremiz kırmızı ve sarı ledi 2 sn boyunca yakacak.     

digitalWrite(yesil, HIGH);
digitalWrite(kirmizi, LOW);
digitalWrite(sari, LOW);
delay(5000);

 5 sn boyunca yeşil led yanıyor

digitalWrite(sari, HIGH);
digitalWrite(yesil, LOW);
delay(2000);

Yalnızca sarı led yanıyor            

Bu son satırla birlikte loop döngüsü tekrar başa döner ve kırmız ledin yanması sağlanarak işlemlerin tekrar yapılması sağlanır.

Projenizde aksi giden birşeyler varsa aşağıdaki adımları izlemenizi öneririm.

“Syntax” hatası (Yazım yanlışı)

Karşılaştığınız sorun basit bir syntax hatası olabilir. Komut sonlarına ‘;‘ koyduğunuza, açtığınız her parantezin, köşeli parantez ve süslü parantezin kapattığınıza dikkat edin. Bu gibi hatalarda program derlenmez.

Yanlış COM Portu 

Yanlış COM portunu seçmiş ya da seçmeyi unutmuş olabilirsiniz. Arduino Araçlar>Port kısmına gelip bağlı olan portu işaretlemelisiniz (Örnek: COM3)

Bağlantılar

Ledlerin katot ayaklarını GND ye bağladığınıza emin olun.

Jamper kabloları breadboarda tam oturttuğunuza emin olmalısınız.

Faydalı olması dileğiyle. İyi çalışmalar dilerim.