Arduino Ders 8.2 (Karaşimşek devresi hız ayarı || yürüyen ışık devresi hız ayarı)

Karaşimşek Devresi

Karaşimşek Devresi

Karaşimşek Devresi Nedir?

Merhaba arkadaşlar, bugün Karaşimşek Devresi hakkında konuşacağız. Karaşimşek devresi, adından da anlayabileceğiniz gibi, ışıkların çok hızlı bir şekilde yanıp sönmesiyle ortaya çıkan bir görsel etkidir. Bu devre, özellikle sahne ışıkları, gösteriler veya eğlence amaçlı projelerde kullanılır. İsminden de anlaşılacağı üzere, "şimşek" etkisi yaratmak için ışıklar birden yanıp söner, tıpkı gökyüzündeki şimşeğin ani parlaması gibi.

Karaşimşek devresi genellikle LED'ler kullanarak yapılır. Bir LED'in hızla yanıp sönmesi, gözümüzde bir ışık patlaması etkisi yaratır. Bu etki, çok hızlı bir şekilde yanıp sönme döngülerini içerir ve ışığın aniden kaybolup tekrar belirmesi sağlanır. Hız ayarı ise, potansiyometre gibi analog sensörlerle kontrol edilebilir.

Karaşimşek Devresi Nerelerde Kullanılır?

Karaşimşek devreleri, genellikle ışık gösterileri, diskolar, partiler, sahne dekorları, filmler gibi görsel efektlerin kullanıldığı her alanda tercih edilir. Ayrıca, bazı güvenlik sistemlerinde de alarm ışıkları olarak kullanılarak dikkat çekici bir uyarı sağlamak amacıyla faydalıdır. Şimşek etkisi yaratan bu devreler, görsel estetik açısından da etkileyici olurlar.

Yazılımı Verelim ve Anlatalım

Şimdi, Karaşimşek devresinin yazılımına bakalım. Bu yazılım, Arduino platformunda çalışan bir devre için yazılmıştır. Aşağıdaki kodu inceleyelim:

int ledPin1 = 3;  // LED1 için pin tanımlaması
int ledPin2 = 4;  // LED2 için pin tanımlaması
int ledPin3 = 5;  // LED3 için pin tanımlaması
int ledPin4 = 6;  // LED4 için pin tanımlaması
int ledPin5 = 7;  // LED5 için pin tanımlaması
int ledPin6 = 8;  // LED6 için pin tanımlaması
int ledPin7 = 9;  // LED7 için pin tanımlaması
int potPin = 0;   // Potansiyometre (hız ayarı) için analog pin

void setup() {
  pinMode(ledPin1, OUTPUT);  // LED1 çıkışı
  pinMode(ledPin2, OUTPUT);  // LED2 çıkışı
  pinMode(ledPin3, OUTPUT);  // LED3 çıkışı
  pinMode(ledPin4, OUTPUT);  // LED4 çıkışı
  pinMode(ledPin5, OUTPUT);  // LED5 çıkışı
  pinMode(ledPin6, OUTPUT);  // LED6 çıkışı
  pinMode(ledPin7, OUTPUT);  // LED7 çıkışı
  pinMode(potPin, INPUT);    // Potansiyometre girişi
}

void loop() {
  int potValue = analogRead(potPin);  // Potansiyometreden okuma
  int delayTime = map(potValue, 0, 1023, 100, 2000);  // Potansiyometreye göre hız ayarı

  digitalWrite(ledPin1, HIGH);   // LED1'i yak
  delay(delayTime);              // Hız ayarına göre bekle
  digitalWrite(ledPin1, LOW);    // LED1'i söndür

  digitalWrite(ledPin2, HIGH);   // LED2'yi yak
  delay(delayTime);              // Hız ayarına göre bekle
  digitalWrite(ledPin2, LOW);    // LED2'yi söndür

  digitalWrite(ledPin3, HIGH);   // LED3'ü yak
  delay(delayTime);              // Hız ayarına göre bekle
  digitalWrite(ledPin3, LOW);    // LED3'ü söndür

  digitalWrite(ledPin4, HIGH);   // LED4'ü yak
  delay(delayTime);              // Hız ayarına göre bekle
  digitalWrite(ledPin4, LOW);    // LED4'ü söndür

  digitalWrite(ledPin5, HIGH);   // LED5'i yak
  delay(delayTime);              // Hız ayarına göre bekle
  digitalWrite(ledPin5, LOW);    // LED5'i söndür

  digitalWrite(ledPin6, HIGH);   // LED6'yı yak
  delay(delayTime);              // Hız ayarına göre bekle
  digitalWrite(ledPin6, LOW);    // LED6'yı söndür

  digitalWrite(ledPin7, HIGH);   // LED7'yi yak
  delay(delayTime);              // Hız ayarına göre bekle
  digitalWrite(ledPin7, LOW);    // LED7'yi söndür
}
        

Yazılımın Açıklaması:

Pin Tanımlamaları:

İlk olarak, devrede kullanılacak LED'lerin bağlanacağı pinler tanımlanır. Arduino'nun 3 numaralı pininden 9 numaralı pinine kadar toplam 7 LED kullanıyoruz. Ayrıca, potansiyometre (analog sensör) için de A0 pinini kullanıyoruz.

Pin Modları:

pinMode() fonksiyonu ile LED'lerin bağlı olduğu pinler çıkış olarak, potansiyometre ise giriş olarak ayarlanır. Böylece Arduino, LED'leri kontrol edebilir ve potansiyometreden gelen veriyi okuyabilir.

Ana Döngü (loop):

loop() fonksiyonu, Arduino'nun sürekli olarak çalışacak olan ana döngüsüdür. Bu döngüde, potansiyometreden alınan değer analogRead(potPin) komutu ile okunur. Potansiyometreden okunan değer 0 ile 1023 arasında bir değere sahiptir. Bu değeri, map() fonksiyonu ile 100 ile 2000 arasında bir zaman dilimine dönüştürürüz. Bu dönüştürme, LED'lerin yanma hızını belirler. Yani, potansiyometreyi çevirerek ışıkların ne kadar hızlı yanıp söneceğini kontrol edebilirsiniz.

LED'lerin Yanıp Sönmesi:

LED'lerin yanma ve sönme işlemleri sırasıyla yapılır. Her bir LED için digitalWrite() komutu ile ışıklar yakılır, ardından delay() fonksiyonu ile belirli bir süre beklenir. Bu süre, potansiyometreden alınan değere göre dinamik olarak değişir. Her LED'in ardından bir bekleme süresi gelir ve bu şekilde bir "yürüyen ışık" etkisi yaratılır.

Sonuç:

Karaşimşek devresi, görsel bir efekt yaratmak için kullanılan ve ışıkların hızlı bir şekilde yanıp sönmesini sağlayan bir devredir. Bu devrede, hız ayarını potansiyometre ile yaparak, ışıkların yanma hızını değiştirebiliriz. Arduino kullanarak bu tür efektler oluşturmak, hem eğlenceli hem de öğretici bir projedir. Bu devreyi, eğlenceli ışık gösterileri, sahne efektleri veya alarm ışıkları gibi birçok alanda kullanabilirsiniz.

Yorum Gönder

0 Yorumlar