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: