Arduino ile Trafik Lambası

Bu başlık altında daha önce geliştirdiğimiz Blink Pattern (Çoklu Blink) uygulamasının kodlarında değişiklik yaparak, uygulamayı trafik lambasına dönüştürmeyi sağlayacağız. Uygulama için ihtiyacımız olan devre elemanları aşağıdaki gibidir:

  • LED x 3 (Red, Yellow ve Green)
  • Direnç (330 Ohm) x 3

Bu bileşenleri temin ettikten sonra devremizi aşağıdaki gibi oluşturalım.

Yukarıda görülen devrede bağlantı işlemi aşağıdaki gibi yapılmıştır.

  • Kırmızı LED’in Anot yani (+) bacağı 12 nolu dijital pine bağlandı.
  • Sarı LED’in Anot yani (+) bacağı 11 nolu dijital pine bağlandı.
  • Yeşil LED’in Anot yani (+) bacağı 10 nolu dijital pine bağlandı.

Devremizin kodu aşağıdaki gibidir.


int redLed = 12;
int yellowLed = 11;
int greenLed = 10;

void setup() {

 pinMode(redLed, OUTPUT);
 pinMode(yellowLed, OUTPUT);
 pinMode(greenLed, OUTPUT);

}

void loop() {

 digitalWrite(redLed, HIGH);
 delay(7000);

 digitalWrite(yellowLed, HIGH);
 delay(2000);

 digitalWrite(redLed, LOW);
 digitalWrite(yellowLed, LOW);
 digitalWrite(greenLed, HIGH);
 delay(5000);

 digitalWrite(greenLed, LOW);
 digitalWrite(yellowLed, HIGH);
 delay(1000);

 digitalWrite(yellowLed, LOW);

}

Kodların açıklaması aşağıdaki gibidir:


int redLed = 12;
int yellowLed = 11;
int greenLed = 10;

Yukarıda int tipinde 3 adet değişken tanımladık. Değişkenlere sırasıyla LED’lerimizin (+) bacağını bağladığımız dijital pinlerin sayısal değerlerini değer olarak atadık.


pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(greenLed, OUTPUT);

pinMode komutu, pin ve mode olmak üzere iki parametre almaktadır. Pin parametresi, modunu ayarlamak istediğimiz pin bilgisini; mode parametresi ise belirtilen pinin giriş(INPUT) veya çıkış (OUTPUT) olarak ayarlanmasını sağlamak için kullanılır. Yukarıda verilen üç pinMode komutu ile 12, 11 ve 10 nolu pinler çıkış olarak ayarlanmıştır.

loop metodunda bulunan kodların açıklaması ise aşağıdaki gibidir.


digitalWrite(redLed, HIGH);
delay(7000);

Bu kod ile öncelikle Kırmızı led yanar. Yanma işlemi 7 saniye devam eder.

—————————————


digitalWrite(yellowLed, HIGH);
delay(2000);

Kırmızı led’ten sonra sarı led’in yanması sağlanır. Bu işlem iki saniye devam eder. Bu arada kırmızı ledin yanması devam eder.

—————————————


digitalWrite(redLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(greenLed, HIGH);
delay(5000);

Bu kod bloğu ile kırmızı ve sarı led söner, yeşil ledin ise yanması sağlanır. Bu işlem 5 saniye devam eder.

—————————————


digitalWrite(greenLed, LOW);
digitalWrite(yellowLed, HIGH);
delay(1000);

Yukarıdaki kod bloğu ile öncelikle yeşil led söndürülür, sarı ledin ise yanması sağlanır. Bu işlem 1 saniye sürer.

—————————————


digitalWrite(yellowLed, LOW);

Yukarıdaki kod ile sarı ledin sönmesi sağlanır. Bu son satırla birlikte loop döngüsü tekrar başa döner ve kırmız ledin yanması sağlanarak işlemlerin tekrar yapılması sağlanır.

Bu uygulama hakkında ayrıntılı bilgiler edinmek için kanalımda yayınladığım şu videoyu izlemenizi tavsiye ediyorum.

Paylaşmak İster misiniz
  •  
  •  
  •  
  •  

Arduino ile Trafik Lambası” için 2 yorum

  • 18 Kasım 2018 tarihinde, saat 23:33
    Permalink

    Peki 2 tane trafik lambası yapmak için n yapmamız lazım yardımcı olurmusunuz ?

    Yanıtla
    • 26 Kasım 2018 tarihinde, saat 19:56
      Permalink

      Merhaba Naci,

      iki trafik lambası için;

      Bağlantı şeması: https://static.makeuseof.com/wp-content/uploads/2017/01/Arduino_Dual_Traffic_light.png

      Kaynak kodu:

      // 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);
      }

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

      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);

      }

      Yanıtla

Bir cevap yazın

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

four + twelve =