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ı

- 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.
- Sarı LED: Uzun bacağını Arduino'nun 12 numaralı pinine, kısa bacağını 220 Ohm direnç üzerinden GND'ye bağlayın.
- 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ı
- Setup Fonksiyonu:
pinMode()
fonksiyonlarıyla LED pinlerini çıkış olarak ayarladık.
- 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.
- Kırmızı LED’i yakmak için
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ı

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.
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:
- Kırmızı ışık yanar.
- Sarı ışık yanar.
- 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.
cemal mete
hocam bunu diğer türlü olanı yapsak mesela bir tane özel yapılmış var onu nasıl yapıcağız?
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.