Arduino

Arduino ile LED Kullanarak Trafik Işığı Projesi

Aykut AKMAN 11 ay önce Yorumlar (1) 6 Dakika Okuma
Arduino ile LED Kullanarak Trafik Işığı Projesi
E-Posta : 1.9k 0

Arduino ve LED'lerle bir trafik ışığı simülasyonu oluşturmak, programlama ve devre bağlantıları hakkında temel bilgilerinizi geliştirmenin harika bir yoludur. Bu proje, trafik ışıklarının gerçek dünyadaki davranışlarını taklit eder ve LED'lerin farklı durumlarda yanıp sönmesini içerir.

Proje İçin Gerekli Malzemeler

  • 1 x Arduino Uno (veya benzeri bir Arduino kartı)
  • 3 x LED (kırmızı, sarı ve yeşil)
  • 3 x 220 Ohm direnç
  • Breadboard
  • Bağlantı kabloları

Devre Bağlantısı

arduino-ile-trafik-ışığı-devre-şeması


  1. Kırmızı LED: Uzun bacağını (anod), Arduino'nun 13 numaralı pinine, kısa bacağını (katod) ise 220 Ohm direnç üzerinden Arduino'nun GND pinine bağlayın.
  2. Sarı LED: Uzun bacağını Arduino'nun 12 numaralı pinine, kısa bacağını 220 Ohm direnç üzerinden GND'ye bağlayın.
  3. Yeşil LED: Uzun bacağını Arduino'nun 11 numaralı pinine, kısa bacağını 220 Ohm direnç üzerinden GND'ye bağlayın.

Projenin çalışan simülasyonunu görmek için tıklayınız.

Arduino Kodu

Aşağıda, Arduino ile trafik ışığı simülasyonu için temel bir kod bulunmaktadır:

int redLed = 13;   // Kırmızı LED pin numarası
int yellowLed = 12; // Sarı LED pin numarası
int greenLed = 11; // Yeşil LED pin numarası

void setup() {
    pinMode(redLed, OUTPUT);   // Kırmızı LED çıkış olarak ayarlanır
    pinMode(yellowLed, OUTPUT); // Sarı LED çıkış olarak ayarlanır
    pinMode(greenLed, OUTPUT); // Yeşil LED çıkış olarak ayarlanır
}

void loop() {
    // 1. Kırmızı ışık yanar
    digitalWrite(redLed, HIGH); 
    delay(5000); // 5 saniye bekle
    digitalWrite(redLed, LOW);

    // 2. Sarı ışık yanar
    digitalWrite(yellowLed, HIGH); 
    delay(2000); // 2 saniye bekle
    digitalWrite(yellowLed, LOW);

    // 3. Yeşil ışık yanar
    digitalWrite(greenLed, HIGH);
    delay(5000); // 5 saniye bekle
    digitalWrite(greenLed, LOW);

    // 4. Sarı ışık tekrar yanar
    digitalWrite(yellowLed, HIGH); 
    delay(2000); // 2 saniye bekle
    digitalWrite(yellowLed, LOW);
}

Kod Açıklaması

  1. Setup Fonksiyonu:
    • pinMode() fonksiyonlarıyla LED pinlerini çıkış olarak ayarladık.
  2. Loop Fonksiyonu:
    • Kırmızı LED’i yakmak için digitalWrite(redLed, HIGH); komutunu kullandık.
    • delay(5000); komutuyla 5 saniye boyunca kırmızı LED yanık kalır.
    • Daha sonra sarı LED yanar, ardından yeşil LED sırasıyla çalıştırılır.

    Yaya Geçidi ve Butonlu Trafik Işığı Simülasyonu

    Bu proje, bir yaya geçidi ve buton ekleyerek trafik ışığı sistemini daha gerçekçi hale getirir. Butona basıldığında, araç trafiği durdurulur ve yaya geçidi için yeşil ışık yanar. Belirli bir süre sonra sistem tekrar normale döner.

    Gerekli Malzemeler

    • 1 x Arduino Uno (veya benzeri bir Arduino kartı)
    • 3 x LED (kırmızı, sarı, yeşil) (araç trafik lambası için)
    • 2 x LED (kırmızı, yeşil) (yaya trafik lambası için)
    • 5 x 220 Ohm direnç
    • 1 x Buton
    • Breadboard
    • Bağlantı kabloları

    Devre Bağlantısı

    arduino-ile-yaya-geçidi-ve-butonlu-trafik-ışığı-yapımı


    Araç Trafik Lambası

    • Kırmızı LED: Arduino'nun 13 numaralı pinine.
    • Sarı LED: Arduino'nun 12 numaralı pinine.
    • Yeşil LED: Arduino'nun 11 numaralı pinine.

    Yaya Trafik Lambası

    • Kırmızı LED: Arduino'nun 10 numaralı pinine.
    • Yeşil LED: Arduino'nun 9 numaralı pinine.

    Buton

    • Bir ucu Arduino'nun 2 numaralı pinine, diğer ucu GND'ye bağlanır.
    • Arduino'nun 2 numaralı pinini INPUT_PULLUP ile kullanacağız.

    Dirençler

    • Her LED'in katod bacağını 220 Ohm direnç üzerinden GND'ye bağlayın.

    Yaya Geçidi ve Butonlu Trafik Işığı Arduino Kodu

    
    // Araç Trafik Lambası Pinleri
    int redCar = 13;
    int yellowCar = 12;
    int greenCar = 11;
    
    // Yaya Trafik Lambası Pinleri
    int redPedestrian = 10;
    int greenPedestrian = 9;
    
    // Buton Pin
    int buttonPin = 2;
    
    // Buton Durumu
    bool buttonPressed = false;
    
    void setup() {
        // Araç Trafik Lambası Pinleri
        pinMode(redCar, OUTPUT);
        pinMode(yellowCar, OUTPUT);
        pinMode(greenCar, OUTPUT);
    
        // Yaya Trafik Lambası Pinleri
        pinMode(redPedestrian, OUTPUT);
        pinMode(greenPedestrian, OUTPUT);
    
        // Buton Pini
        pinMode(buttonPin, INPUT_PULLUP);
    
        // Başlangıç Durumu
        digitalWrite(greenCar, HIGH);         // Araçlar için kırmızı ışık kapalı
        digitalWrite(redPedestrian, HIGH); // Yayalar için yeşil ışık kapalı
    }
    
    void loop() {
        // Buton durumu kontrol edilir
        if (digitalRead(buttonPin) == LOW) {
            buttonPressed = true; // Buton basıldığında durum güncellenir
        }
    
        if (buttonPressed) {
            // Araç Trafiğini Durdur
            digitalWrite(greenCar, LOW);
            digitalWrite(yellowCar, HIGH);
            delay(2000); // Sarı ışık yanar
            digitalWrite(yellowCar, LOW);
            digitalWrite(redCar, HIGH);
    
            // Yaya Trafiğini Başlat
            digitalWrite(redPedestrian, LOW);
            digitalWrite(greenPedestrian, HIGH);
            delay(5000); // Yayalar için geçiş süresi
    
            // Yaya Trafiğini Durdur
            digitalWrite(greenPedestrian, LOW);
            digitalWrite(redPedestrian, HIGH);
    
            // Araç Trafiğini Yeniden Başlat
            digitalWrite(redCar, LOW);
            digitalWrite(yellowCar, HIGH);
            delay(2000); // Sarı ışık yanar
            digitalWrite(yellowCar, LOW);
            digitalWrite(greenCar, HIGH);
            buttonPressed = false; // Buton durumu sıfırlanır
        }
    }

    Kod Açıklamaları

    Setup Fonksiyonu

    • Trafik ve yaya lambaları için pinler OUTPUT olarak ayarlandı.
    • Buton pini INPUT_PULLUP ile iç direnç kullanılarak giriş olarak ayarlandı.

    Loop Fonksiyonu

    • Buton durumu kontrol edilir (LOW olduğunda butona basılmış demektir).Butona basıldığında:
      • Araç trafiği durdurulur (kırmızı ışık yanar).
      • Yaya trafiği başlatılır (yeşil ışık yanar).
    • Belirli bir süre sonunda sistem eski durumuna döner.

    Projenin simülasyonunu görmek için tıklayınız.

    Sıkça Sorulan Sorular

    Arduino ile trafik ışığı simülasyonu yapmak için kırmızı, sarı ve yeşil LED’ler kullanılır. LED’ler Arduino pinlerine bağlanır ve yazılım ile sırayla yakılıp söndürülerek trafik ışığı düzeni oluşturulur. digitalWrite ve delay komutları kullanılarak LED'lerin yanma süreleri kontrol edilir.

    Yaya geçidi sistemi için araç trafik ışıkları (kırmızı, sarı, yeşil) ve yaya ışıkları (kırmızı, yeşil) kullanılır. Butona basıldığında araç ışıkları kırmızıya döner, yaya ışıkları ise yeşil yanar. Bu işlem için digitalRead ile buton durumu okunur ve digitalWrite ile LED'ler kontrol edilir.

    Butona basıldığında bir LED yakmak için buton pini giriş olarak ayarlanır (INPUT_PULLUP). digitalRead ile buton durumu kontrol edilir ve düşük (LOW) değer alındığında ilgili LED’e digitalWrite(pin, HIGH) komutu gönderilir.

    INPUT_PULLUP, Arduino'nun dahili bir pull-up direncini etkinleştirir. Bu, buton gibi giriş cihazlarının durumunu kararlı şekilde okumak için kullanılır. INPUT_PULLUP kullanıldığında, giriş pini varsayılan olarak HIGH seviyesinde olur ve butona basıldığında LOW seviyesine çekilir.

    LED'lerin yanma sürelerini ayarlamak için delay(ms) komutu kullanılır. Örneğin, kırmızı ışığın 5 saniye boyunca yanması için delay(5000) komutu yazılır. Her LED için farklı süreler belirlenebilir.

    Bir yaya geçidi sistemi için genellikle 2 LED (kırmızı ve yeşil) ve her LED için 1 adet 220Ω direnç gerekir. Araç trafik ışıkları için 3 LED daha eklenir (kırmızı, sarı, yeşil).

    Bir butonla birden fazla LED kontrol etmek için if veya switch yapıları kullanılır. digitalRead ile buton durumu kontrol edilir ve bu duruma göre farklı LED’ler yanar veya söner.

    Gerçekçi bir trafik ışığı simülasyonu için kırmızı ışık yaklaşık 30-60 saniye, yeşil ışık 20-40 saniye ve sarı ışık 3-5 saniye arasında yanar. Bu süreler, gerçek trafik düzenine göre delay komutları ile ayarlanabilir.

    Trafik ışıklarının sırasını kontrol etmek için digitalWrite komutları sırayla yazılır. Örneğin:

    1. Kırmızı ışık yanar.
    2. Sarı ışık yanar.
    3. Yeşil ışık yanar. Bu sıraya delay komutları ile geçiş süreleri eklenir.

    Trafik ışığı ve yaya ışıkları, aynı kod bloğunda if veya else if koşulları ile kontrol edilerek senkronize edilir. Örneğin:

    • Araçlara kırmızı yanarken yayalara yeşil yanar.
    • Araçlara yeşil yanarken yayalara kırmızı yanar.

    Trafik ışıkları çalışmıyorsa aşağıdakileri kontrol edin:

    • LED bağlantıları doğru mu?
    • Kodda LED pinleri doğru ayarlandı mı?
    • Buton pini giriş olarak (INPUT_PULLUP) tanımlandı mı?
    • delay süreleri yeterince uzun mu?

    Buton basılınca tepki vermiyorsa:

    • Buton pini GND’ye doğru bağlanmış mı?
    • INPUT_PULLUP modu etkin mi?
    • Kodda buton durumu doğru şekilde digitalRead ile okunuyor mu?

    Arduino Uno, trafik ışığı projeleri için en yaygın kullanılan karttır. Ayrıca Nano veya Mega gibi kartlar da kullanılabilir.

    Arduino ile yapılan trafik ışıkları simülasyonları eğitim ve prototip projeler için uygundur. Gerçek hayatta kullanılacak trafik ışıkları için daha karmaşık kontrol sistemleri gerekir.

    Aykut AKMAN

    Aykut AKMAN

    Bilişim Öğretmeni

    Yorumlar (1)

    • Comment Author
      10 ay önce

      cemal mete

      hocam bunu diğer türlü olanı yapsak mesela bir tane özel yapılmış var onu nasıl yapıcağız?

      • Comment Author
        10 ay önce

        Aykut AKMAN

        yukarıdaki örnek kodu kullanıp, arduino üzerinde pinleri doğru tanımlayıp bağlantıları yaparsan muhtemelen çalışacaktır. Örneği daha sonradan geliştirebilirsin.

    Yorum Yap

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlendi.

    Diğer Yazılar