Arduino Programlama : Trafik Işığı Projesi | editorcum

Arduino Programlama : Trafik Işığı Projesi

Arduino trafik ışığı kontrol projesi bir saatten az sürede inşa edebileceğiniz eğlenceli projedir. Projeyi , Arduino kullanarak nasıl yapabiliriz ve nasıl geliştirebiliriz ? . Gelin birlikte inceleyelim 🙂

Proje İçin Gerekli Malzemeler ;

  • 1 adet 10k-ohm direnç
  • 1 adet buton anahtarı
  • 6 adet 220-ohm direnç
  • Breadboard
  • Kırmızı, sarı ve yeşil LED

Proje Hakkında Temel Bilgiler ;

Her LED’in anotunu (uzun bacak) sekiz, dokuz ve on numaralı dijital pimlere bağlayın (220 ohm’luk bir dirençle). Katotları (kısa bacak) Arduino’nun topraklarına bağlayın.

Işıkları sayı yerine isimle hizalayabilmeniz için değişkenleri tanımlayarak başlayın. Yeni Arduino projesi başlatın ve şu satırlarla başlayın:

int kirmizi = 10;
int sari = 9;
int yesil = 8;

Ardından, çıkış için kırmızı, sarı ve yeşil LED’leri yapılandıracağınız kurulum işlevini ekleyelim. Pin numaralarını temsil etmek için değişkenler oluşturduğunuz için, şimdi pimleri isme göre kullanabilirsiniz:

void setup(){
    pinMode(kirmizi, OUTPUT);
    pinMode(sari, OUTPUT);
    pinMode(yesil, OUTPUT);
}

PinMode işlevi, Arduino’yu belirli bir pimi çıkış olarak kullanacak şekilde yapılandırır. Bunu, LED’lerin çalışabilmesi için yapmanız gerekir. Şimdi trafik ışığının gerçek mantığı için ihtiyacınız olan kod. Bunu değişken tanımlarının ve kurulum işlevinin altına ekleyin:

void loop(){
    changeLights();
    delay(15000);
}

void changeLights(){
    // yeşil kapalı 3 saniye boyunca sarı
    digitalWrite(yesil, LOW);
    digitalWrite(sari, HIGH);
    delay(3000);

    // sarıyı kapatın, ardından 5 saniye kırmızıyı açın
    digitalWrite(sari, LOW);
    digitalWrite(kirmizi, HIGH);
    delay(5000);

    // 2 saniye boyunca kırmızı ve sarı yanar (kırmızı zaten açıktır)
    digitalWrite(sari, HIGH);
    delay(2000);

    // kırmızı ve sarıyı kapatıp yeşili açalım.
    digitalWrite(sari, LOW);
    digitalWrite(kirmizi, LOW);
    digitalWrite(yesil, HIGH);
    delay(3000);
}

Bu kodu Arduino’nuza yükleyin ve çalıştırın (Araçlar> Pano ve Araçlar> Bağlantı Noktası menülerinden doğru pano ve bağlantı noktasını seçtiğinizden emin olun). Kod sayesinde her 15 saniyede bir değişen trafik ışığına sahip olacaksınız.

Yukarıda paylaştığım kodu çözelim. ChangeLights işlevi tüm zor işleri yapar. Trafik ışığını sarı ve kırmızıdan sonra tekrar yeşile döndürür. Döngü fonksiyonunun içinde çağrıldığında, Arduino her seferinde 15 saniyelik bir duraklama ile bu kodu sonsuza kadar çalıştırır.

ChangeLights işlevi dört farklı adımdan oluşur:

  • Yeşil açık, sarı kapalı
  • Sarı kapalı, kırmızı açık
  • Sarı kapalı, kırmızı kapalı
  • Yeşil açık, kırmızı kapalı, sarı kapalı

Bu dört adım, gerçek trafik ışıklarında kullanılan süreci tekrarlar. Her adım için kod çok benzer. DigitalWrite kullanılarak uygun LED açılır veya kapanır. Bu, çıkış pinlerini HIGH (açık) veya LOW (kapalı) olarak ayarlamak için kullanılan Arduino işlevidir. Gerekli LED’leri etkinleştirdikten veya devre dışı bıraktıktan sonra gecikme, Arduino’yu belirli bir süre bekletir. Bu durumda üç saniyedir.

Yaya Geçidi Ekleyelim ;

Şimdi temel bilgileri öğrendiğimize göre, projeyi biraz geliştirelim. Yayaların istedikleri zaman ışığı değiştirebilmeleri için buton ekleyin:

Trafik ışığının önceki örnekteki ile aynı olduğuna dikkat edin. Düğmeyi dijital pin 12’ye bağlayın. Anahtarın üzerinde yüksek empedanslı 10k-ohm direnç bulunduğunu fark edeceksiniz ve bunun nedenini merak ediyor olabilirsiniz. Bu aşağı açılır bir dirençtir. Anahtar, geçerli akışa izin verir veya vermez. Bu yeterince basit görünüyor, ancak mantık devresinde, akım her zaman yüksek veya düşük durumda akmalıdır (unutmayın, 1 veya 0, HIGH veya LOW). Gerçekten basılmayan buton anahtarının LOW durumda olduğunu varsayabiliriz, ancak aslında, ‘ floating ‘ olduğu söylenir, çünkü hiçbir akım çekilmez.

Şimdi, kodun döngü kısmında, ışıkları her 15 saniyede bir değiştirmek yerine, buton düğmesinin durumunu okuyacak ve yalnızca etkinleştirildiğinde ışıkları değiştireceksiniz.

Düğme iğnenizi saklamak için yeni değişken ekleyerek başlayın:

int button = 12; // anahtar 12 numaralı pim üzerinde

Şimdi, kurulum fonksiyonunda, anahtarı giriş olarak bildirmek için yeni satır ekleyin. Trafik ışıklarını yeşil seviyeye ayarlamak için bir satır ekleyin. Bu başlangıç ayarı olmasaydı, changeLights ilk çalıştığı ana kadar kapalı kalırdı.

pinMode(button, INPUT);
digitalWrite(yesil, HIGH);

Tüm döngü işlevini aşağıdaki gibi değiştirin:

void loop() {
    if (digitalRead(button) == HIGH){
        delay(15); 
        if (digitalRead(button) == HIGH) {
            // Anahtara basıldığı zaman ışıklar değişir.
            changeLights();
            delay(15000); // 15 saniye bekle
        }
    }
}

Döngüde görülen (digitalRead(button)) düğme kontrolünde küçük bir gecikme yaratır. İf ifadesinin içinde 15 saniye bekletildiğinde, trafik ışıkları en azından bu süre boyunca değişemez. 15 saniye sonra döngü tekrar başlar. Döngünün her yeniden başlatılması, düğmenin durumunu tekrar okur, ancak basılmazsa, if ifadesi hiçbir zaman etkin olmaz, ışıklar asla değişmez ve program yeniden başlatılır. Kodun temel çalışma mantığı bu şekildedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir