🤖
ROBOT KODLA
Öğrenmeye Başla →
⚡ Arduino Projeleri 📅 16 Ekim 2026

Arduino ile Trafik Lambası Yapımı ve Kodları

Arduino ile trafik lambası projesi nasıl yapılır? Kırmızı, sarı ve yeşil LED devre şeması, zamanlama algoritmaları ve çalışan C++ kodları rehberi.

Arduino ile Trafik Lambası Yapımı ve Kodları

Temel seviye bir LED yakıp söndürme (Blink) uygulamasını başarıyla tamamladıktan sonra atılacak en mantıklı ve öğretici ikinci adım, gerçek hayattaki kavşak sinyalizasyonunu simüle eden "Trafik Lambası Projesi"dir. Bu proje; birden fazla dijital çıkış pinini eşzamanlı ve sıralı olarak yönetmeyi, zamanlama mantığını kurmayı ve gerçek dünya kurallarını koda dökmeyi öğretir.

Bu rehberde; gerekli malzemeleri, renk kodlarına göre direnç bağlantılarını, devre şemasını, tam çalışan Arduino C++ kodlarını ve projeyi yayalar için butonlu akıllı kavşağa dönüştürme yöntemlerini adım adım inceliyoruz.

1. Projenin Amacı ve Trafik Lambası Çalışma Mantığı

Gerçek bir trafik lambası rastgele yanıp sönmez; belirli bir matematiksel ve güvenlik odaklı algoritmayı takip eder:

  • Kırmızı Işık Yanar: Araçlar durur (Örneğin 6 saniye).
  • Kırmızı + Sarı Işık Birlikte Yanar: Araçlar kalkışa hazırlanır (2 saniye).
  • Kırmızı ve Sarı Söner, Yeşil Işık Yanar: Araçlar geçer (6 saniye).
  • Yeşil Söner, Sarı Işık Yanar: Araçlar yavaşlar ve durmaya hazırlanır (2 saniye).
  • Sarı Söner, Tekrar Kırmızı Yanar: Döngü başa döner.
  • Bu projedeki amacımız, Arduino Uno'nun 3 farklı dijital pinini kullanarak bu zamanlama döngüsünü milisaniyelik hassasiyetle çalıştırmaktır.

    2. Gerekli Malzemeler Listesi

    MalzemeMiktarGörevi
    Arduino Uno R31 AdetAna kontrol kartı
    Kırmızı 5mm LED1 Adet"Dur" sinyali göstergesi
    Sarı 5mm LED1 Adet"Hazırlan" sinyali göstergesi
    Yeşil 5mm LED1 Adet"Geç" sinyali göstergesi
    220Ω Direnç3 AdetHer bir LED için akım sınırlama direnci
    Breadboard (Devre Tahtası)1 AdetDevreyi lehimsiz kurmak için
    Jumper Kablolar (Erkek-Erkek)4-5 AdetPin bağlantıları ve ortak GND için

    3. Devre Şeması ve Pin Bağlantı Tablosu

  • Kırmızı LED Anot (+): 220Ω Direnç üzerinden Arduino Dijital Pin 10'a
  • Sarı LED Anot (+): 220Ω Direnç üzerinden Arduino Dijital Pin 9'a
  • Yeşil LED Anot (+): 220Ω Direnç üzerinden Arduino Dijital Pin 8'a
  • Tüm LED'lerin Katot Bacakları (-): Breadboard'un mavi eksi hattına takılır ve bu hat tek bir kablo ile Arduino GND pinine bağlanır.
  • [Pin 10] ---> [220Ω] ---> [Kırmızı LED (+)] ---|
    [Pin 9] ---> [220Ω] ---> [Sarı LED (+)] ---|---> [Ortak GND Hattı] ---> [Arduino GND]
    [Pin 8] ---> [220Ω] ---> [Yeşil LED (+)] ---|

    4. Tam ve Çalışan Arduino C++ Kodları

    /* * RobotKodla.com - Arduino Uygulamalı Dersler * Proje: Klasik Trafik Lambası Simülasyonu */ const int kirmiziPin = 10;
    const int sariPin = 9;
    const int yesilPin = 8; void setup() { pinMode(kirmiziPin, OUTPUT); pinMode(sariPin, OUTPUT); pinMode(yesilPin, OUTPUT);
    } void loop() { // 1. AŞAMA: Kırmızı Işık Yanar digitalWrite(kirmiziPin, HIGH); digitalWrite(sariPin, LOW); digitalWrite(yesilPin, LOW); delay(6000); // 2. AŞAMA: Kırmızı + Sarı Birlikte Yanar digitalWrite(sariPin, HIGH); delay(2000); // 3. AŞAMA: Yeşil Işık Yanar digitalWrite(kirmiziPin, LOW); digitalWrite(sariPin, LOW); digitalWrite(yesilPin, HIGH); delay(6000); // 4. AŞAMA: Sarı Işık Yanar digitalWrite(yesilPin, LOW); digitalWrite(sariPin, HIGH); delay(2000);
    }

    5. Projeyi Bir Adım Öteye Taşıyın: Butonlu Yaya Geçidi Ekleme

    Gerçek hayattaki modern trafik ışıklarında yayalar için bir talep butonu bulunur. Butona basılmadığı sürece araçlara sürekli yeşil yanar; yayalar butona bastığında ise sistem güvenli bir şekilde araçlara sarı ve kırmızı yakarak yayaların geçişine izin verir.

    Butonlu Yaya Geçidi Algoritması:

  • Normal durumda yeşil LED sürekli yanar.
  • 2 numaralı pine bağlı bir buton `digitalRead(2)` ile sürekli dinlenir.
  • Butona basıldığı an (`if (butonDurum == HIGH)`):
  • Yeşil ışık 3 saniye yanıp söner (uyarı).
  • Sarı ışık 2 saniye yanar.
  • Araçlara kırmızı ışık yanar ve buzzer'dan ritmik "bip-bip" yaya geçiş sesi çalar (5 saniye).
  • Tekrar sarı ve yeşile dönerek araç trafiği açılır.
  • 6. Trafik Işıklarında Millis() ile Asenkron Zamanlama (İleri Seviye)

    Standart kodda kullanılan `delay()` fonksiyonu işlemciyi tamamen dondurur. Bu durum gerçek dünyada büyük bir güvenlik zaafıdır; çünkü araçlara kırmızı ışık yanarken acil bir ambulans sireni veya yaya butonu basıldığında sistem o `delay` bitene kadar hiçbir girdiye yanıt veremez.

    Bunun profesyonel çözümü Arduino'nun dahili zaman sayacı olan `millis()` fonksiyonunu kullanmaktır:

  • `millis()`, Arduino'ya enerji verildiği andan itibaren geçen süreyi milisaniye cinsinden sayar.
  • Bir önceki durum değişim zamanı bir değişkende tutulur (`oncekiZaman = millis();`).
  • `if (suan - oncekiZaman >= 6000)` kontrolü yapılarak işlemci hiçbir zaman dondurulmaz; döngü saniyede yüz binlerce kez dönmeye devam ederken aynı anda yaya butonu da gecikmesiz olarak okunabilir.
  • 7. Sık Yapılan Hatalar ve Pratik Çözümleri

    Hata DurumuMuhtemel NedenKesin Çözüm
    Işıklardan biri hiç yanmıyorLED'in yönü ters takılmışİlgili LED'i söküp bacaklarını 180 derece ters çevirerek takın.
    Tüm ışıklar aynı anda yanıp sönüyorKoddaki pin numaraları çakışmışKod satırlarında her bir LED'in tanımlandığı pinlerin farklı olduğunu kontrol edin.
    Işıklar çok soluk yanıyorYanlış direnç seçimi220Ω yerine 10kΩ veya 100kΩ direnç takmış olabilirsiniz.
    Devre bir süre çalışıp kilitleniyorGüç dalgalanmasıArduino'yu doğrudan ana USB portuna bağlayın.

    8. Trafik Işıklarında Millis() ile Asenkron Zamanlama Mimarisi

    Geleneksel Arduino kodlarında kullanılan `delay()` fonksiyonu işlemciyi belirlenen süre boyunca tamamen kilitler. Gerçek bir kavşakta ise kırmızı ışık yanarken acil bir ambulans sireni veya yaya butonu basıldığında sistemin anında tepki vermesi gerekir.

    Bu problemi çözmek için Arduino'nun arka planda çalışan dahili saat sayacı olan `millis()` fonksiyonu kullanılır:

  • `millis()`, karta enerji verildiği andan itibaren geçen süreyi milisaniye olarak sayan bir kronometredir.
  • `if (suankiZaman - oncekiZaman >= beklemeSuresi)` mantığı ile işlemci asla kilitlenmez.
  • Döngü saniyede binlerce kez dönmeye devam ettiği için aynı anda hem ışıklar sırayla yanar hem de yaya butonu sıfır gecikmeyle algılanır.
  • 9. Proje İçin Kendini Geliştirme Görevleri (Challenges)

  • Sesli Yaya Uyarısı (Görme Engelliler İçin): Devreye bir buzzer ekleyin. Yayalara kırmızı yanarken saniyede bir yavaş 'bip', yeşil yandığında ise yayaların güvenle geçebilmesi için hızlı 'bip-bip-bip' sesi çalsın.
  • Dört Yol Ağzı Simülasyonu: Devreye 3 LED daha ekleyerek birbirini kesen iki farklı caddenin trafik ışıklarını senkronize edin (bir caddeye kırmızı yanarken diğerine yeşil yansın).
  • Gece Modu: Bir LDR sensörü ekleyin; hava karardığında trafik ışıkları normal döngüyü durdursun ve kavşak kontrolsüz geçiş moduna geçerek sadece sarı ışığı fasılalı (yanıp sönen) olarak yaksın.
  • Sonuç

    Trafik lambası projesi, kodlamada zaman yönetimi ve çoklu çıkış kontrolünün temelini oluşturur. Bu projedeki mantığı anlayan bir öğrenci; yürüyen merdiven otomasyonları, endüstriyel ikaz lambaları ve acil durum uyarı sistemlerini kolaylıkla kodlayabilir. Diğer eğlenceli ve öğretici projeler için sitemizin [Arduino Projeleri](/projeler) sayfasını inceleyebilirsiniz!

    💡

    Arduino ile Trafik Lambası Yapımı ve Kodları Hakkında Sıkça Sorulan Sorular

    Bu yazıyla ilgili en çok merak edilen noktalar ve uzman yanıtları

    Bu rehber yazıda anlatılan yöntemleri uygulamak için neler gereklidir?▼
    İçerikte belirtilen açık kaynaklı yazılım araçlarını ve temel donanım bileşenlerini temin etmeniz yeterlidir. Tüm adımlar pratik uygulamalarla desteklenmiştir.
    Bu uygulamada devre bağlantısı yaparken en çok yapılan hata nedir?▼
    Ortak toprak (GND) hattının bağlanmaması, LED ve sensör bacaklarının ters kutupla takılması ya da pin numaralarının koddaki dijital/analog tanımlarla uyuşmaması en sık karşılaşılan durumlardır. Şemadaki pin numaralarını iki kez kontrol etmek sorunu çözer.
    Arduino ile Trafik Lambası Yapımı ve Kodları çalışmasını tamamladıktan sonra nasıl daha ileri bir seviyeye taşıyabilirim?▼
    Bu çalışmaya ek sensörler (kablosuz Bluetooth/Wi-Fi modülü, OLED ekran veya sesli buzzer uyarısı) entegre edebilir; verileri internet ortamına aktararak Nesnelerin İnterneti (IoT) tabanlı akıllı bir sisteme dönüştürebilirsiniz.