Arduino ile Trafik Işığı Simülasyonu: İki Yaya Butonlu ve Erişilebilir Tasarım

Arduino ile Trafik Işığı Simülasyonu: İki Yaya Butonlu ve Erişilebilir Tasarım

Arduino ile Trafik Işığı Simülasyonu: İki Yaya Butonlu ve Erişilebilir Tasarım

Merhaba sevgili Arduino dostları!

Bu yazımızda, Arduino kullanarak nasıl iki yaya butonlu ve erişilebilir bir trafik ışığı simülasyonu oluşturabileceğimizi adım adım inceleyeceğiz. Bu proje hem Arduino temellerini öğrenmek için harika bir başlangıç noktası, hem de gerçek hayattaki trafik sistemlerinin mantığını anlamamıza yardımcı olacak.

Günümüzde şehir planlamasında erişilebilirlik önemli bir konu. Bu nedenle projemize, yaşlı ve engelli vatandaşlarımız için düşünülmüş, daha uzun süreli yaya geçiş izni veren bir buton ekleyeceğiz. Hazırsanız, malzemelerimizi hazırlayalım ve kodlamaya başlayalım!

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • Kırmızı, Sarı, Yeşil LED (3 adet)
  • Kırmızı, Yeşil LED (2 adet – Yaya Geçidi Işıkları için)
  • 2 adet Buton
  • 220 ohm direnç (8 adet)
  • Breadboard
  • Jumper kablolar

Devre Şeması

Devremizi kurarken aşağıdaki bağlantı şemasına dikkat edelim:

  • Kırmızı LED (Trafik): 13. pin -> 220 ohm direnç -> Arduino
  • Sarı LED (Trafik): 12. pin -> 220 ohm direnç -> Arduino
  • Yeşil LED (Trafik): 11. pin -> 220 ohm direnç -> Arduino
  • Kırmızı LED (Yaya): 9. pin -> 220 ohm direnç -> Arduino
  • Yeşil LED (Yaya): 8. pin -> 220 ohm direnç -> Arduino
  • 1. Buton (Normal Yaya): 2. pin -> Arduino, ayrıca 10k ohm direnç ile GND'ye çekilir
  • 2. Buton (Engelli/Yaşlı Yaya): 3. pin -> Arduino, ayrıca 10k ohm direnç ile GND'ye çekilir
  • Yaya geçidi LED'leri de aynı şekilde bağlanır (kırmızı ve yeşil), örneğin 7 ve 6. pinlere.

Not: Dirençler, LED'leri korumak için kullanılır. Arduino pinlerinden çıkan akımı sınırlandırarak LED'lerin yanmasını engellerler.

Arduino Kodu

Şimdi de Arduino kodumuza geçelim. Aşağıdaki kodu Arduino IDE'nize kopyalayıp yükleyebilirsiniz. Kod içerisinde gerekli açıklamalar bulunmaktadır.


// Pin tanımlamaları
const int kirmiziLed = 13;
const int sariLed = 12;
const int yesilLed = 11;
const int yayaKirmiziLed = 9;
const int yayaYesilLed = 8;
const int butonPin = 2;      // Normal Yaya Butonu
const int engelliButonPin = 3; // Engelli/Yaşlı Yaya Butonu

// Değişkenler
int butonDurumu = 0;
int engelliButonDurumu = 0;

void setup() {
  // Pinleri çıkış olarak ayarla
  pinMode(kirmiziLed, OUTPUT);
  pinMode(sariLed, OUTPUT);
  pinMode(yesilLed, OUTPUT);
  pinMode(yayaKirmiziLed, OUTPUT);
  pinMode(yayaYesilLed, OUTPUT);
  pinMode(butonPin, INPUT_PULLUP); // Dahili pull-up direnci kullanılır
  pinMode(engelliButonPin, INPUT_PULLUP); // Dahili pull-up direnci kullanılır

  // Seri iletişimi başlat (isteğe bağlı, hata ayıklama için)
  Serial.begin(9600);
}

void loop() {
  // Buton durumunu oku
  butonDurumu = digitalRead(butonPin);
  engelliButonDurumu = digitalRead(engelliButonPin);

  // Normal yaya geçidi isteği
  if (butonDurumu == LOW) {
    Serial.println("Normal Yaya Geçidi İsteği Alındı");
    trafikIsiklariYayaGecidi(10000); // 10 saniye yaya geçişi
  }
  // Engelli/Yaşlı yaya geçidi isteği
  else if (engelliButonDurumu == LOW) {
    Serial.println("Engelli/Yaşlı Yaya Geçidi İsteği Alındı");
    trafikIsiklariYayaGecidi(20000); // 20 saniye yaya geçişi (daha uzun süre)
  } else {
    // Normal trafik akışı
    normalTrafikAkisi();
  }
}

void normalTrafikAkisi() {
  // Yeşil ışık yanar
  digitalWrite(yesilLed, HIGH);
  digitalWrite(kirmiziLed, LOW);
  delay(5000);

  // Sarı ışık yanar
  digitalWrite(yesilLed, LOW);
  digitalWrite(sariLed, HIGH);
  delay(2000);

  // Kırmızı ışık yanar
  digitalWrite(sariLed, LOW);
  digitalWrite(kirmiziLed, HIGH);
  delay(5000);
}

void trafikIsiklariYayaGecidi(int yayaGecisSuresi) {
  // Kırmızı ışık yanarken yayalara yeşil ışık yak
  digitalWrite(kirmiziLed, HIGH);
  digitalWrite(yesilLed, LOW);
  digitalWrite(sariLed, LOW);

  digitalWrite(yayaKirmiziLed, LOW);
  digitalWrite(yayaYesilLed, HIGH);

  delay(yayaGecisSuresi); // Yaya geçiş süresi (milisaniye cinsinden)

  // Yaya ışığı kırmızıya döner
  digitalWrite(yayaYesilLed, LOW);
  digitalWrite(yayaKirmiziLed, HIGH);
  delay(2000);

  // Normal trafik akışına geri dön
  digitalWrite(yayaKirmiziLed, LOW);
  digitalWrite(kirmiziLed, LOW); // Kırmızı ışığı kapat
}

Kodun Açıklaması

  • Pin Tanımlamaları: LED'lerin ve butonların hangi pinlere bağlandığını belirtiyoruz.
  • Değişkenler: Buton durumunu saklamak için değişkenler tanımlıyoruz.
  • setup() Fonksiyonu: Pinleri giriş veya çıkış olarak ayarlıyoruz. INPUT_PULLUP, butonun bağlı olmadığı durumda pinin HIGH seviyesinde kalmasını sağlar.
  • loop() Fonksiyonu: Sürekli olarak buton durumunu okuyup, gerekli işlemleri yapıyoruz.
  • normalTrafikAkisi() Fonksiyonu: Normal trafik ışığı döngüsünü simüle ediyor.
  • trafikIsiklariYayaGecidi() Fonksiyonu: Butona basıldığında yaya geçidini aktif hale getiriyor.

Sonuç

Tebrikler! Arduino ile iki yaya butonlu ve erişilebilir bir trafik ışığı simülasyonu başarıyla oluşturdunuz. Bu proje, Arduino'nun temel kavramlarını anlamanız ve gerçek dünya uygulamalarına yönelik projeler geliştirmeniz için harika bir başlangıç noktasıdır.

Projenizi daha da geliştirmek isterseniz, sensörler (örneğin, ışık sensörü) ekleyerek trafik ışıklarının günün saatine göre otomatik olarak ayarlanmasını sağlayabilirsiniz. Yaratıcılığınızı kullanarak projeyi daha da ileriye taşıyabilirsiniz!

Umarım bu yazı sizin için faydalı olmuştur. Bir sonraki projede görüşmek üzere!

Etiketler: Arduino, Trafik Işığı, Simülasyon, Yaya Geçidi, Buton, Erişilebilirlik, LED, Proje, Elektronik, Kodlama

```

0 yorum: