🚦 Gerçekçi Trafik Lambası Simülasyonu

Projenin Amacı ve Akış Mantığı

Bu projenin temel amacı, Arduino'nun dijital pinlerini kullanarak, üç farklı renkteki LED'i belirli bir sıra ve zamanlama dahilinde kontrol etmektir. Kontrol ettiğimiz döngü, araçlar için geçerli olan gerçek trafik lambası protokolünü birebir yansıtmaktadır:

Trafik Akış Döngüsü (5 Adım)

  1. Kırmızı (Sadece Kırmızı Yanar - Uzun Süre)
  2. Kırmızı + Sarı (Kırmızıya Sarı Eşlik Eder - Kısa Süre, Kalkışa Hazırlık)
  3. Yeşil (Sadece Yeşil Yanar - Uzun Süre)
  4. Sarı (Sadece Sarı Yanar - Kısa Süre, Durmaya Hazırlık)
  5. Kırmızı (Döngü Başa Döner)

Zaman Yönetimi (Delay)

Projede kullanılan delay() fonksiyonları, her trafik durumunun ne kadar süreceğini milisaniye cinsinden belirler. Bu hassas zamanlamalar, simülasyonun gerçekçiliği için hayati önem taşır.

I. Gerekli Malzemeler ve Detaylı Devre Kurulumu

Bu projeyi gerçekleştirmek için ihtiyacınız olan temel elektronik bileşenler ve bağlantı detayları aşağıdadır:

  1. Arduino Uno: Projenin beyni.
  2. 3 Adet LED: (1x Kırmızı, 1x Sarı/Turuncu, 1x Yeşil)
  3. 3 Adet 220 Ohm Direnç: LED'lerin ömrünü korumak için her LED'e seri bağlanmalıdır.
  4. Breadboard (Devre Tahtası) ve Jumper Kabloları: Bağlantıları lehimleme yapmadan gerçekleştirmek için.

Devre Kurulumu Adım Adım

LED'ler, polarize bileşenlerdir; yani, akımın akış yönü önemlidir. Uzun bacak (anot), pozitif (+) uca (Arduino Dijital Pin), kısa bacak (katot) ise negatif (-) uca (Arduino GND) bağlanmalıdır. Direnç, daima Anot tarafına (pozitif akım yoluna) seri bağlanmalıdır.

Bağlantı Detayları (Ayrıntılı)

  • Kırmızı LED: Uzun Bacak $\rightarrow$ 220 Ohm Direnç $\rightarrow$ Arduino Dijital Pin 10
  • Sarı LED: Uzun Bacak $\rightarrow$ 220 Ohm Direnç $\rightarrow$ Arduino Dijital Pin 9
  • Yeşil LED: Uzun Bacak $\rightarrow$ 220 Ohm Direnç $\rightarrow$ Arduino Dijital Pin 8
  • Ortak Toprak (GND): Tüm LED'lerin Kısa Bacakları (Katot) $\rightarrow$ Breadboard üzerindeki ortak eksi hattı $\rightarrow$ Arduino GND Pini

II. Kodlama ve Sıralı Otomasyon Algoritması

Kod, öncelikle pinleri tanımlayacak, setup() kısmında çıkış olarak ayarlayacak ve ardından loop() döngüsünde 5 adımlı trafik akışını sırasıyla yürütecektir.

1. Arduino Program Kodu (Küçük Harf ve Sadeleştirilmiş)

// gerçekçi trafik lambası simülasyonu kodu // pin tanımlamaları (okunabilirlik için) const int redled = 10; const int yellowled = 9; const int greenled = 8; // durum süreleri (milisaniye cinsinden) const int redtime = 5000; // kırmızı 5 saniye const int yellowtime = 2000; // sarı 2 saniye const int greentime = 5000; // yeşil 5 saniye const int redyellowtime = 1500; // kırmızı+sarı 1.5 saniye void setup() { // üç pini de elektrik sinyali gönderecek (çıkış) olarak ayarla pinmode(redled, output); pinmode(yellowled, output); pinmode(greenled, output); // program başlamadan önce tüm ışıkları söndürerek güvenli bir başlangıç yap digitalwrite(redled, low); digitalwrite(yellowled, low); digitalwrite(greenled, low); } void loop() { // adim 1: kirmizi durumu (dur) // kırmızı yanar, diğerleri söner digitalwrite(redled, high); // kırmızı ledi yak digitalwrite(yellowled, low); // sarı ledi söndür digitalwrite(greenled, low); // yeşil ledi söndür delay(redtime); // 5 saniye bekle // adim 2: kirmizi + sari durumu (hazirlan) // sarı, kırmızının yanına eklenir digitalwrite(yellowled, high); // sarı ledi yak delay(redyellowtime); // 1.5 saniye bekle // adim 3: yeşil durumu (geç) // kırmızıyı ve sarıyı söndürüp yeşili yak digitalwrite(redled, low); // kırmızı ledi söndür digitalwrite(yellowled, low); // sarı ledi söndür digitalwrite(greenled, high); // yeşil ledi yak delay(greentime); // 5 saniye bekle // adim 4: sari durumu (durmaya hazirlan) // yeşili söndürüp sarıyı yak digitalwrite(greenled, low); // yeşil ledi söndür digitalwrite(yellowled, high); // sarı ledi yak delay(yellowtime); // 2 saniye bekle // adim 5: kirmizi durumu (döngü başa döner) // sarı söner. loop() döngüsü otomatik olarak başa döndüğünde, // kod adim 1'den (kırmızı yak) çalışmaya devam edecektir. digitalwrite(yellowled, low); // sarı ledi söndür // loop döngüsü otomatik olarak tekrar başlar }

2. Detaylı Komut Açıklamaları

  • const int redled = 10;: Pin numaralarını kolay anlaşılır değişken isimleriyle tanımlamak, kodun yönetimini ve ilerideki değişiklikleri kolaylaştırır. Arduino, bu komutu küçük harfle de doğru bir şekilde yorumlar.
  • void setup(): Bu kısım, Arduino'ya "Ben bu pinleri (8, 9, 10) elektrik sinyali göndermek için kullanacağım (OUTPUT)" dememizi sağlar. Başlangıçta tüm ışıkların kapalı olması daima iyi bir programlama pratiğidir.
  • digitalwrite(redled, high): Bu, pinden +5V (yüksek voltaj) göndererek LED'in yanmasını sağlar. digitalwrite(redled, low) ise 0V (düşük voltaj) göndererek LED'i söndürür.
  • delay(redtime): Bu komut, Arduino'yu belirtilen süre (5000 milisaniye = 5 saniye) boyunca duraklatır. Bu süre içinde lambaların durumu değişmez. Bu, trafik durumlarının süresini belirleyen temel mekanizmadır.

Diğer Projeler

Bu proje ile sıralı programlama ve zamanlama yönetiminde ustalaştınız. Şimdi diğer projelere geçebilirsiniz.

Devam Edin