1000 TL Üzeri Alışverişlerde Ücretsiz Kargo ve Türkiye'nin Her Yerine 59,90₺

Arduino ile Trafik Lambası Yapımı (Trafik Işıkları) Projesi | Robocombo

Arduino ile Trafik Lambası Yapımı (Trafik Işıkları) Projesi | Robocombo
Merhaba Arkadaşlar, Arduino ile trafik lambası, trafik ışığı ya da ışıkları yapımı projesi, bir saatten daha kısa bir süre de bitirebileceğiniz eğlenceli küçük bir projedir. Arduino kullanarak nasıl oluşturacağınız ve gelişmiş bir varyasyon için devreyi nasıl değiştireceğiniz aşağıda açıklanmıştır. Bu makalemiz de tam 3 farklı arduino trafik lambası yapımı projesi paylaştık. Dilediğinizi uygulayabilirsiniz En basit trafik lambası yapımı ile başlayalım. İşte devre: Her LED'in anot (uzun) bacağını 8, 9 ve 10 dijital pinlerine (220 ohm direnç üzerinden) bağlayın. Katotları (kısa bacak) Arduino'nun toprak pinine bağlayın. Değişkenleri tanımlayarak başlayın, böylece ışıkları sayı yerine isim ile ele alabilirsiniz. Yeni bir Arduino projesi başlatın ve şu satırlarla başlayın: int red = 10; int yellow = 9; int green = 8; Ardından kırmızı, sarı ve yeşil LED'lerin çıkış olarak yapılandırılacağı kurulum işlevini ekleyelim. Pin numaralarını temsil etmek için değişkenler oluşturduğunuzdan, artık pinlere adlarıyla başvurabilirsiniz:
void setup(){
    pinMode(red, OUTPUT);
    pinMode(yellow, OUTPUT);
    pinMode(green, OUTPUT);
}

PinMode Fonksiyonu

Bu kodu değişken tanımlarınızın ve kurulum işlevinizin altına ekleyin:
 
void loop(){
    changeLights();
    delay(15000);
}

void changeLights(){
    // green off, yellow on for 3 seconds
    digitalWrite(green, LOW);
    digitalWrite(yellow, HIGH);
    delay(3000);

    // turn off yellow, then turn red on for 5 seconds
    digitalWrite(yellow, LOW);
    digitalWrite(red, HIGH);
    delay(5000);

    // red and yellow on for 2 seconds (red is already on though)
    digitalWrite(yellow, HIGH);
    delay(2000);

    // turn off red and yellow, then turn on green
    digitalWrite(yellow, LOW);
    digitalWrite(red, LOW);
    digitalWrite(green, HIGH);
    delay(3000);
}

Bu kodu Arduino'nuza yükleyin ve çalıştırın ( Araçlar > Port menüsünden doğru pano ve bağlantı noktasını seçtiğinizden emin olun). Bu işlemi doğru yaptıysanız her 15 saniyede bir değişen bir trafik ışığına sahip olmalısınız. Bu kodu silelim. Kullandığımız bu kod yani ChangeLights kodu trafik ışığını sarı ve kırmızıdan sonra yeşile döndürür. Arduino bu kodu sonsuza dek çalıştıracak ve her seferinde 15 saniyelik bir duraklama olacaktır. ChangeLights fonksiyonu dört ayrı adımlardan oluşur:
  •      
  • Yeşil açık, sarı kapalı
  •      
  • Sarı kapalı, kırmızı açık
  •      
  • Sarı açık, kırmızı açık
  •      
  • Yeşil açık, kırmızı kapalı, sarı kapalı
Bu dört adım, gerçek trafik ışıklarında kullanılan işlemi tekrarlar. Her adım için kod çok benzerdir. Uygun LED, digitalWrite kullanılarak açılır veya kapanır. Bu, çıkış pinlerini HIGH (açık için) veya LOW (kapalı için) olarak ayarlamak için kullanılan bir Arduino işlevidir. Gerekli LED'leri etkinleştirdikten veya devre dışı bıraktıktan sonra, delay Arduino'yu 3 saniye bekletir.  

Arduino Trafik Lambası Yaya Geçidi

Şimdi arduino ile trafik lambası kodumuzu artık geliştrime zamanı. Yayaların ışığı istedikleri zaman değiştirebilecekleri karşıya geçmek için bir buton ekleyin:

 
Trafik ışıkları bağlantısının önceki örnekle tam olarak aynı olduğuna dikkat edin. Butonu dijital pin 12'ye bağlayın. Buton için yüksek empedanslı 10k direnç bulunduğunu fark edeceksiniz ve nedenini merak ediyor olabilirsiniz. Bu bir aşağı çekme direncidir. Bir anahtar, elektrik akışına izin verir veya vermez (1/0). Bu yeterince basit bir mantık ve işlemdir ancak bir devre de akım daima yüksek veya düşük durumda stabil olmalıdır ( HIGH veya LOW). Aslında basılmayan bir butonun LOW durumda olacağını varsayabilirsiniz. Şimdi, kodun döngü kısmında, ışıkları her 15 saniyede bir değiştirmek yerine, butonun durumunu okuyacak ve ışıkları yalnızca butona basıldığında değiştireceksiniz.  

Arduino Yaya Geçidi Kodu

Buton için yeni bir değişken ekleyerek başlayın:
int button = 12; // switch is on pin 12

Kurulum işlevinde, butona basılma eylemini veri girişi olarak bildirmek için yeni bir satır ekleyin. Trafik ışıklarını yeşil olarak ayarlamak için bir çizgi ekleyin. Bu başlangıç ​​ayarı olmadan, changeLights ile ışık ilk kod döngüsünde söner .
pinMode(button, INPUT);
digitalWrite(green, HIGH);

Döngü işlevinin tamamını aşağıdaki gibi değiştirin:
void loop() {
    if (digitalRead(button) == HIGH){
        delay(15); // software debounce
        if (digitalRead(button) == HIGH) {
            // if the switch is HIGH, ie. pushed down - change the lights!
            changeLights();
            delay(15000); // wait for 15 seconds
        }
    }
}

Buton kontrolünün neden küçük bir gecikmeyle ayrılmış olarak iki kez (digitalRead (button) eylemini gerçekleştiğini merak ediyor olabilirsiniz. Butona ait çekme direnci gibi, bu basit kontrol, düğmeye basıldığında küçük parazitleri algılayan kodu durdurur. if ile 15 saniye trafik ışıkları sabit kalır. 15 saniye geçtikten sonra döngü yeniden başlar. Döngünün her yeniden başlatılması, düğmenin durumunu tekrar okur, ancak basılmazsa, if ifadesi asla etkinleşmez, ışıklar asla değişmez ve program yeniden başlatılır.

 

Kavşaklı Arduino Trafik Işığı Yapımı

Daha gelişmiş bir model deneyelim. Yaya geçidi yerine, devrenizi iki trafik ışığına sahip olacak şekilde değiştirin:

İkinci trafik ışığını 11, 12 ve 13 dijital pinlerine bağlayın.

Kavşaklı Arduino Trafik Işığı Kodu

İlk olarak, yeni trafik ışığı pinlerinizi değişkenlere atayın ve bunları ilk örnekte olduğu gibi çıktılar olarak yapılandırın:
// light one
int red1 = 10;
int yellow1 = 9;
int green1 = 8;

// light two
int red2 = 13;
int yellow2 = 12;
int green2 = 11;

void setup(){
    // light one
    pinMode(red1, OUTPUT);
    pinMode(yellow1, OUTPUT);
    pinMode(green1, OUTPUT);

    // light two
    pinMode(red2, OUTPUT);
    pinMode(yellow2, OUTPUT);
    pinMode(green2, OUTPUT);
}

Şimdi, ilk örnekteki kodu (yaya geçidi yerine) kullanmak için döngünüzü güncelleyin:
void loop(){
    changeLights();
    delay(15000);
}

Bir kez daha, tüm çalışmalar changeLights işlevinde gerçekleştirilir. Bu kod ile kırmızı > kırmızı ve sarı > yeşil , olarak trafik ışıkları değişir. Biri yeşil olduğunda, diğeri kırmızıdır. İşte kod:
void changeLights(){
    // turn both yellows on
    digitalWrite(green1, LOW);
    digitalWrite(yellow1, HIGH);
    digitalWrite(yellow2, HIGH);
    delay(5000);

    // turn both yellows off, and opposite green and red
    digitalWrite(yellow1, LOW);
    digitalWrite(red1, HIGH);
    digitalWrite(yellow2, LOW);
    digitalWrite(red2, LOW);
    digitalWrite(green2, HIGH);
    delay(5000);

    // both yellows on again
    digitalWrite(yellow1, HIGH);
    digitalWrite(yellow2, HIGH);
    digitalWrite(green2, LOW);
    delay(3000);

    // turn both yellows off, and opposite green and red
    digitalWrite(green1, HIGH);
    digitalWrite(yellow1, LOW);
    digitalWrite(red1, LOW);
    digitalWrite(yellow2, LOW);
    digitalWrite(red2, HIGH);
    delay(5000);
}


Arduino Trafik Işığı Sonraki Adımlar

Arduino LED'leri ve düğmeleri ile ilgili öğrendiğiniz bu proje ile trafik ışıklarını genişletmek istiyorsanız, neden birçok yaya geçidi ve yaya trafik ışığı ile birlikte dört yol ağzı (kavşak) inşa etmiyorsunuz? Hadi ikinci projeye geçelim.  
→2. PROJE

Arduino Trafik Işığı Projesi - Breadboard Sürümü

 

Gerekli Malzemeler:
  Diğer Faydalı Şeyler: - Çalışma Lambası (iyi bir aydınlatma için) - Temiz bir çalışma alanı - Saat

Adım 1: Arduino Ortamını Kurun

 
Bu makaleden en iyi şekilde yararlanmanızı sağlamak için aşağıdakilere sahip olmalısınız:  

Adım 2: Yeşil LED'inizi Bağlayın

Arduino'nuzu solda ve breadboard'unuzu sağda konumlandırın! Daha önce bir breadboard kullanmadıysanız, biraz Battleship oynamak gibidir. Battleship oynamadıysanız, sorun değil :) Bu adım için ihtiyacınız olacaklar:
  •      
  • 1 x Arduino Uno
  •      
  • 1 x Breadboard (Tercihen Voltaj Raylı Yarım Boyut)
  •      
  • 1 x 100 Ohm Direnç (Kahverengi Siyah Kahverengi)
  •      
  • 2 x Breadboard veya Jumper Telleri (22 awg yaklaşık 6 "uzunluğunda)
  •      
  • 1 x Yeşil LED
  Gerilim rayları, yukarıda gösterilen breadboard'un sol ve sağ tarafları boyunca uzanan iki sütundur. Bunlar, breadboard'unuzdaki çeşitli noktalara dc güç iletmek için kullanılır. Tüm bağlantılarımızı sağ "mavi çizgili" voltaj rayı boyunca topraklayacağız. Yukarıdaki adımda, Arduino'nun GND pininden bir voltaj rayına giden siyah bir kablo bağlayın. Arduino'da 14  Dijital  pin ve 6  Analog pin bulunur. Dijital pin iki şekilde çalışabilir: Açık, HIGH olarak da bilinir ve Kapalı, LOW olarak da bilinir. Bir Dijital Pin Açık olarak ayarlandığında, içinden 5 volt elektrik geçiyor. Kapalı olarak ayarlandığında, içinden hiçbir gerilim geçmez. Bu, bir LED'i açmamızı veya kapatmamızı kolaylaştıracaktır. Bu pinler DIGITAL olarak temsil edilir, yukarıda gösterilen Arduino'nun sağ üst kısmında (0 ile 13) arasındaki pinler. Analog pinler farklı şekilde çalışabilir. Açık veya kapalı olmak yerine, 0 Volt ile 5 Volt arasındaki bir değer aralığını okuyabilirler, ancak "volt" u tam sayılara, özellikle 0 ile 1023 arasında dönüştürürler. Örneğin: 0 = 0 Volt, 512 = ~ 2.5 volt ve 1023 5 volt anlamına gelir. Bu pinler ANALOG IN olarak temsil edilir. Dirençler söyledikleri gibi yaparlar, direnirler! Elektronlar ise çok fazla güç veya akım ile LED'imizi bozabiliriz, bu yüzden ona uygun bir direnç ekliyoruz. Direnci "Ohm" adı verilen birimlerle ölçeriz. Kullandığımız direnç 100 Ohm direnç sağlar. Bu adımı tamamlamak için üstteki görseli örnek alın, ardından LED'inizi aktif etmek için bir sonraki adıma geçin!

3. Adım: Yeşil LED'inizi Açın

 
Kodunuzu iki temel bölüme yazacaksınız: " kurulum " bölümü ve " döngü " bölümü. Bu bölümler işlevler olarak bilinir. Daha sonra bir fonksiyonun ne olduğu hakkında daha fazla bilgi edineceğiz! Kurulum fonksiyonu arduino açıldığında bir kez çalışır. Döngü işlevi bir kez kurulum fonksiyonu çalıştırıldıktan sonra sürekli çalışır. LED'inizi açmanız için iki şey olması gerekir. İlk olarak, LED'inizi taktığınız pine (PIN 3)  EXIT modunda olduğunu söylemelisiniz. Bu eylem, pine veri göndereceğinizi bildirir. PIN kodunuzu kullanarak pininizi çıkış modunda olacak şekilde ayarlayabilirsiniz.  

pinMode İşlevi

İkinci olarak, pinin HIGH modda olduğunu söylemelisiniz. HIGH mod, pin üzerinden yüksek bir elektrik sinyali gönderir. LOW modu düşük bir elektrik sinyali gönderir. DigitalWrite işlevini kullanarak pininizi HIGH moda ayarlayabilirsiniz.
// basic functions
voidsetup()
{
// setup LED modes
// we're specifying that we're going to send information to this LED
pinMode(3, OUTPUT);
}

voidloop()
{
// High turns things on
digitalWrite(3, HIGH);
}

Adım 4: Bir Değişken Kullanın

 

Önceki adımda, aşağıdaki kod satırını yazdık:  Daha fazla LED eklemeye başladığımızda, her yerde çok sayıda pin numarası olacaktır. Bu pin numaralarını takip etmek giderek daha sinir bozucu ve zor olacaktır. Fakat korkmanıza gerek yok. Programlama dilleri harika bir çözüm sunmaktadıar:
pinMode(3, OUTPUT);

Değişkenler Değişkenler, ad vermenizi sağlar. Çok sayıda değişken türü vardır. Burada int (tamsayı kısaltması) adlı bir sayı değişkeni hakkında bilgi edineceğiz. Bir int değişkeni -32,768 ile 32,767 arasında herhangi bir tam sayı olabilir. Değişkenlerin 3 özelliği vardır: tür, ad ve değer. Örneğin;
int GREEN = 3;

değişken int, GREEN bir isim ve 3 değerine sahiptir.
Bir değer yerine bir değişken kullanılır. "3" kullanmak istediğiniz her yerde artık "GREEN" yazabilirsiniz. * Unutmayın: Kullanabilmek için bir değişken oluşturmanız gerekir! * Değişkenler kapsam olarak bilinen farklı alanlarda bulunur. Kapsam, iki ​​kıvrık parantez {bu alanın içi} arasındaki alandır. Kodun üstündeki değişkenleri açıklayacağız. Bu değişkenler genel değişkenler olarak bilinir. Misal:
// variables
int GREEN = 3;

// basic functions
voidsetup()
{
// setup LED modes
// we're specifying that we're going to send information to this LED
pinMode(GREEN, OUTPUT);
}

voidloop()
{
// High turns things on
digitalWrite(1, HIGH);
}

Adım 5: LED'inizin Göz Kırpmasını Sağlayın!

Arduino kütüphanesi, delay adı verilen bir başka yararlı küçük fonksiyon sağlar. Gecikme(delay) fonksiyonu gecikmenin uzunluğunu alır -milisaniye cinsinden int (tamsayı) değeri-. Gecikme işlevini döngü işleviyle birleştirmek,  LED ile yanıp sönen bir efekt oluşturmamızı sağlar. Bunu, LED açık HIGH ve LED kapalı LOW arasında 1 saniyelik (1000 milisaniye) bir gecikme ayarlayarak yapacağızDELAY adında bir int değişkeni  kullanacağız,  böylece değerini her yerde tekrar tekrar yazmak zorunda kalmadan değiştirebiliriz. Misal:
// variables
int GREEN = 3;
int DELAY = 1000;

// basic functions
voidsetup()
{
// setup LED modes
// we're specifying that we're going to send information to this LED
pinMode(GREEN, OUTPUT);
}

voidloop()
{
// High turns things on
digitalWrite(GREEN, HIGH);
delay(DELAY);
// low turns things off
digitalWrite(GREEN, LOW);

}

Adım 6: Sarı LED'inizi Kablolayın!

Bu adımda ikinci bir LED ekleyeceğiz. Tam bir Trafik Lambasına sahip olmanın 2 / 3'ünü tamamlamış olacaksınız! Bu adım için ihtiyacınız olacaklar:
  •      
  • 1 x 100 Ohm Direnç
  •      
  • 1 x Jumper Kablo
  •      
  • 1 x Sarı LED

Adım 7: Her İki LED'in de Yanıp Sönmesini Sağlayın!

 
Işıklarınızı, Yeşil LED'inizi yanıp sönmek ve kapatmak yerine, LED'ler arasında geçiş yapacak şekilde ayarlamak istiyorsunuz. Bu adım için, Yeşil LED'i kurma adımıyla aynı adımları tekrarlayın. * Her iki LED'i OUTPUT moduna ayarlamayı unutmayın! * Diğeri açıkken bir LED'i kapatmayı unutmayın! Yeşil LED'inizi 5 saniye ve Sarı LED'inizi sadece 2 saniye açık kalacak şekilde ayarlamalısınız. Misal:
// variables
int GREEN = 3;
int YELLOW = 4;
int DELAY_GREEN = 1000;
int DELAY_YELLOW = 1000;

// basic functions
voidsetup()
{
// setup LED modes
// we're specifying that we're going to send information to this LED
pinMode(GREEN, OUTPUT);
pinMode(YELLOW, OUTPUT);
}

voidloop()
{
// High turns things on
// Low turns things off
digitalWrite(GREEN, HIGH);
digitalWrite(YELLOW, LOW);
// how long we want the green led on
delay(DELAY_GREEN);

digitalWrite(GREEN, LOW);
digitalWrite(YELLOW, HIGH);
// how long we want the yellow led on
delay(DELAY_YELLOW);
}

Adım 8: Kırmızı LED'inizi Kablolayın!

Bu adımda son LED'inizi bağlayacağız. Bu adım için ihtiyacınız olacaklar:
  •      
  • 1 x 100 Ohm Direnç (Kahverengi Siyah Kahverengi)
  •      
  • 1 x Breadboard veya Jumper Telleri (22 awg)
  •      
  • 1 x Kırmızı LED

Adım 9: Tüm Işıkları Ayarları!

 
  Bu adım için, Kırmızı LED'i Sarı LED ile aynı şekilde ayarlayın. * Tüm Led'leri OUTPUT moduna ayarlamayı unutmayın! * Biri açıkken iki LED'i kapatmayı unutmayın! Yeşil LED'inizi 5 saniye, Sarı LED'inizi 2 saniye ve ardından Kırmızı LED'inizi 5 saniye açık kalacak şekilde ayarlayın. Kod:
// variables
int GREEN = 3;
int YELLOW = 4;
int RED = 5;
int DELAY_GREEN = 1000;
int DELAY_YELLOW = 1000;
int DELAY_RED = 1000;

// basic functions
voidsetup()
{
// setup LED modes
// we're specifying that we're going to send information to this LED
pinMode(GREEN, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(RED, OUTPUT);
}

voidloop()
{
// High turns things on
// Low turns things off
digitalWrite(GREEN, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, LOW);
// how long we want the green led on
delay(DELAY_GREEN);

digitalWrite(GREEN, LOW);
digitalWrite(YELLOW, HIGH);
digitalWrite(RED, LOW);
// how long we want the yellow led on
delay(DELAY_YELLOW);

digitalWrite(GREEN, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, HIGH);
// how long we want the red led on
delay(DELAY_RED);
}

Adım 10: İşlevleri Kullanın!

Önceki adımda, aşağıdaki kod satırlarını yazdık: 
digitalWrite(GREEN, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, LOW);

Daha karmaşık programlara başladıktan sonra , birçok adımımız olacak. Adımlar arasına boşluk koymak programı biraz daha okunabilir kılar; F fonksiyonlarını kullanmak programı daha da okunabilir hale getirir. Fonksiyonlar, talimatları gruplandırmanıza izin verir. Fonksiyonların 3 ana parçası vardır. Giriş, talimatlar ve çıktı! Burada sadece talimatların gruplandırılmasına odaklanacağız! Fonksiyonlar tıpkı  değişkenler gibidir. Bunları oluşturduktan sonra, programınızın geri kalanındaki işleve koyduğunuz talimat setlerini değiştirebilirsiniz.
void loop()
{
  digitalWrite(GREEN, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, LOW);
}

Bunu Ekliyoruz:void loop()
{
  green_light();
}
void green_light()
{
digitalWrite(GREEN, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, LOW);
}

Yeşil ışık yapmak istediğiniz her yere şimdi şu kodu yazabilirsiniz  green_light(); * Unutmayın: Kullanabilmek için bir değişken oluşturmanız gerekir! * Değişkenler kapsam olarak bilinen farklı alanlarda bulunur. Kapsam, bir başlangıç ​​kıvrık ayraç {ve onun eşleşen bitiş kıvrık ayraç, yani burası} arasındaki alandır. Bizim durumumuzda, kodun üstündeki değişkenleri açıklayacağız. Bu değişkenler genel değişkenler olarak bilinir. Bir  küresel değişken, belgede kullanılan herhangi bir yerde olabilir. Örnek Kod:
// variables
int GREEN = 2;
int YELLOW = 3;
int RED = 4;
int DELAY_GREEN = 5000;
int DELAY_YELLOW = 2000;
int DELAY_RED = 5000;

// basic functions
voidsetup()
{
// setup LED modesv   // we're specifying that we're that
// we're going to send information to this LED
pinMode(GREEN, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(RED, OUTPUT);
}

voidloop()
{
  green_light();
delay(DELAY_GREEN);

  // code to make a yellow light
delay(DELAY_YELLOW);

  // code to make a red light
delay(DELAY_RED);
}

void green_light()
{
digitalWrite(GREEN, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, LOW);
}

void yellow_light()
{
  // your code here
}

void red_light()
{
  // your code here
}

// 

Adım 11: Kızılötesi LED Ekleme

Kızılötesi (IR) LED normal bir LED gibi çalışır, ancak insanlar bunlardan yayılan ışığı göremez. Trafik Işığı Kırmızı veya Yeşil olsun ya da olmasın, araç takip eden hattımızla iletişim kurmak için bir IR LED kullanacağız. Trafik Işığı Kırmızı ise, IR Işığı da yanar. Mantık bu şekilde işlemektedir. Bu adım için ihtiyacınız olacaklar:
  •      
  • 1 x 100 Ohm Direnç (Kahverengi Siyah Kahverengi)
  •      
  • 1 x Breadboard veya Jumper Kabloları (22 awg)
  •      
  • 1 x IR LED
 

Adım 12: Kızılötesi Alıcısı Ekleme

Kızılötesi alıcı kızılötesi ışığı algılar! Aracı takip eden hattımızın varlığını tespit etmek için kullanacağız. Bu, Trafik Işığının Kırmızı olduğu süreyi azaltmamıza veya Trafik Işığının yeşil olduğu süreyi artırmamıza olanak tanır. Bu adım için ihtiyacınız olacaklar:
  •      
  • 1 x 10k Ohm Direnç (Kahverengi Siyah Turuncu)
  •      
  • 3 x Breadboard veya Jumper Kabloları (22 awg)
  •      
  • 1 x IR Alıcı
         
→3. PROJE

Arduino Trafik Işığı Projesi - 3

3. Arduino Trafik Işığı Projesi Yapımı İçin Gerekenler:

 

 

 Arduino Trafik Işığı Devresi

Kurmamız gereken devre gerçekten basittir.
  •      
  • Pin2 yeşil LED'in pozitif ayağına gider.
  •      
  • Pin3 sarı LED'in pozitif ayağına gider.
  •      
  • Pin4 kırmızı LED'in pozitif ayağına gider.
  •      
  • Negatif LED bacakları için her birine 100 ohm'luk bir direnç ekleyin ve GND'ye getirin.

Aşağıda, bu devrenin doğru bir şekilde çalışması için yapmanız gerekenin bir şeması bulunmaktadır. Diyagramları prototiplemek ve hazırlamak için harika bir program arıyorsanız, Fritzing'i kullanailirsiniz.

Arduino Trafik Işığı Kodu

Şimdi ışıklarımızı hayata geçirmek için bir kod yazma zamanı. Programlama deneyiminiz varsa, bu kodu gerçekten basit bulacaksınız. Programlamaya yeni başladıysanız, tüm temel bilgileri öğrenmeye başlamak için bu proje harika bir seçim olacaktır. İlk olarak, değişkenlerimizi bildirmemiz gerekecek, bunlar kodumuz boyunca referans verebileceğimiz verileri saklamak için kullanılıyor. Örneğin, GREEN değişken, yeşil LED'in bağlı olduğu pini temsil eder. DELAY_GREEN değişkeni ile milisaniye cinsinden olsa da, programın ilerlemesini geciktireceğiz.
// variables
int GREEN = 2;
int YELLOW = 3;
int RED = 4;
int DELAY_GREEN = 5000;
int DELAY_YELLOW = 2000;
int DELAY_RED = 5000;

Şimdi pinleri, girdi olarak değil çıktı olarak işlev görecek şekilde ayarlamamız gerekiyor.
// basic functions
void setup()
{
  pinMode(GREEN, OUTPUT);
  pinMode(YELLOW, OUTPUT);
  pinMode(RED, OUTPUT);
}

Döngü işlevi
Alttaki kod programın içinden geçeceği bir döngü oluşturur, bu nedenle bir işlevi her çağırdığımızda, bir ışık yanar ve sonra bir gecikme ayarlayabiliriz, böylece süre geçene kadar değişmez.
void loop()
{
  green_light();
  delay(DELAY_GREEN);
  yellow_light();
  delay(DELAY_YELLOW);
  red_light();
  delay(DELAY_RED);
}

Şimdi her LED için bir fonksiyon oluşturmamız gerekecek. Gördüğünüz gibi green_light () işlevi, sarı ve kırmızı LED'leri kapatırken yeşil LED'i açacaktır.
void green_light()
{
  digitalWrite(GREEN, HIGH);
  digitalWrite(YELLOW, LOW);
  digitalWrite(RED, LOW);
}

void yellow_light()
{
  digitalWrite(GREEN, LOW);
  digitalWrite(YELLOW, HIGH);
  digitalWrite(RED, LOW);
}

void red_light()
{
  digitalWrite(GREEN, LOW);
  digitalWrite(YELLOW, LOW);
  digitalWrite(RED, HIGH);
}

Kodu yazmayı bitirdikten sonra, Arduino'ya yüklemeniz gerekir. Fonksiyon çağrıları ve gecikmeler kullanılarak tanımladığımız desende ışıklar yanıp sönmeye başlamalıdır. Arduino'ya yüklemeden önce kodunuzu her zaman test etmelisiniz. Bu, kodunuzda herhangi bir hata olup olmadığını size bildirir ve doğru olması için değişiklik yapmanızı sağlar.
   

ve BİTTİ!👏

Etiketler: Mehmet ŞENTÜRK BİLGİ YAZISI
Ekim 02, 2021
Listeye dön
cultureSettings.RegionId: 0 cultureSettings.LanguageCode: TR
Çerez Uyarısı

Alışveriş deneyiminizi iyileştirmek için yasal düzenlemelere uygun çerezler (cookies) kullanıyoruz. Detaylı bilgiye Gizlilik ve Çerez Politikası
sayfamızdan erişebilirsiniz.