Proje ne yapıyor?
Gerçek kavşaklardaki gibi çalışan bir trafik lambası yapıyoruz. Araçlar için kırmızı–sarı–yeşil, yayalar için kırmızı–yeşil ışık var. Yaya butona bastığında araç ışığı sarıya, sonra kırmızıya döner ve yayaya geçiş izni verilir. Kimse butona basmasa da ışıklar belli aralıklarla kendiliğinden değişir.
- Yaş grubu: 9 yaş ve üzeri
- Seviye: Başlangıç
- Süre: Yaklaşık 40 dakika
- Bu projede öğrenecekleriniz: LED yakıp söndürmek, buton okumak,
millis()ile zaman ölçmek, fonksiyon yazmak
Malzeme listesi
| Malzeme | Adet |
|---|---|
| Arduino Uno | 1 |
| LED (2 kırmızı, 1 sarı, 2 yeşil) | 5 |
| 220 Ω direnç | 5 |
| Push buton | 1 |
| Breadboard | 1 |
| Erkek-erkek jumper kablo | ~12 |
| USB kablo | 1 |
Devre bağlantıları

| Bileşen | Bağlantı | Arduino pini |
|---|---|---|
| Araç kırmızı LED | Uzun bacak (220 Ω üzerinden) | D8 |
| Araç sarı LED | Uzun bacak (220 Ω üzerinden) | D9 |
| Araç yeşil LED | Uzun bacak (220 Ω üzerinden) | D10 |
| Yaya kırmızı LED | Uzun bacak (220 Ω üzerinden) | D11 |
| Yaya yeşil LED | Uzun bacak (220 Ω üzerinden) | D12 |
| Tüm LED’ler | Kısa bacaklar | GND |
| Buton | Bir bacağı | D2 |
| Buton | Çapraz karşı bacağı | GND |
Butonda harici direnç kullanmıyoruz; Arduino’nun dahili direncini (INPUT_PULLUP) açıyoruz.
Kodlar
// Arduino Yaya Butonlu Trafik Lambası - ozandamci.comconst int aracKirmizi = 8;const int aracSari = 9;const int aracYesil = 10;const int yayaKirmizi = 11;const int yayaYesil = 12;const int butonPin = 2;const unsigned long yesilSuresi = 10000; // butona basılmazsa araç yeşili 10 snvoid setup() { pinMode(aracKirmizi, OUTPUT); pinMode(aracSari, OUTPUT); pinMode(aracYesil, OUTPUT); pinMode(yayaKirmizi, OUTPUT); pinMode(yayaYesil, OUTPUT); pinMode(butonPin, INPUT_PULLUP);}void isiklar(bool ak, bool as, bool ay, bool yk, bool yy) { digitalWrite(aracKirmizi, ak); digitalWrite(aracSari, as); digitalWrite(aracYesil, ay); digitalWrite(yayaKirmizi, yk); digitalWrite(yayaYesil, yy);}void loop() { // 1) Araçlara yeşil, yayalara kırmızı isiklar(LOW, LOW, HIGH, HIGH, LOW); unsigned long baslangic = millis(); while (millis() - baslangic < yesilSuresi) { if (digitalRead(butonPin) == LOW) { delay(1000); // yaya bastıktan sonra kısa bekleme break; } } // 2) Araçlara sarı isiklar(LOW, HIGH, LOW, HIGH, LOW); delay(2000); // 3) Araçlara kırmızı, yayalara yeşil isiklar(HIGH, LOW, LOW, LOW, HIGH); delay(5000); // 4) Yaya yeşili yanıp sönerek uyarır for (int i = 0; i < 4; i++) { digitalWrite(yayaYesil, LOW); delay(300); digitalWrite(yayaYesil, HIGH); delay(300); } // 5) Yayalara kırmızı, araçlara kırmızı + sarı (hazırlan) isiklar(HIGH, HIGH, LOW, HIGH, LOW); delay(1500);}
Adım adım yapılışı
- Güç hatlarını hazırlayın. Arduino’nun GND pinini breadboard’un – hattına bağlayın.
- Araç ışıklarını takın. Kırmızı, sarı ve yeşil LED’i alt alta yerleştirin. Her birinin uzun bacağına 220 Ω direnç bağlayıp sırasıyla D8, D9 ve D10’a götürün.
- Yaya ışıklarını takın. Kırmızı ve yeşil LED’i biraz ileriye yerleştirip dirençler üzerinden D11 ve D12’ye bağlayın.
- LED’lerin kısa bacaklarını – hattına bağlayın.
- Butonu takın. Butonu breadboard’un ortasındaki boşluğun üzerine yerleştirin. Bir bacağını D2’ye, çapraz karşısındaki bacağını – hattına bağlayın.
- Kodu yükleyin. Arduino IDE’de Araçlar → Kart menüsünden Arduino Uno‘yu ve doğru portu seçip Yükle‘ye basın.
- Test edin. Araç yeşili yanarken butona basın. Bir saniye sonra sarı ışık yanmalı ve yayalara yeşil yanmalı.
Sorun giderme
- Butona basınca hiçbir şey olmuyor: Buton bacaklarının çapraz olduğundan emin olun. Yan yana bacaklar her zaman bağlı olabilir.
- Bir LED hiç yanmıyor: LED ters takılmış olabilir; uzun bacak Arduino pinine gitmeli.
Kendiniz deneyin
- Süreleri değiştirerek gece modu ekleyin: gece sadece sarı ışık yanıp sönsün.
- Yaya yeşili yanarken buzzer ile görme engelliler için sesli uyarı ekleyin.
Daha fazla proje için: Bu ve benzeri projeleri adım adım anlattığım Arduino Projeleri kitabıma göz atabilirsiniz.
