/*
* Proje: Potansiyometre Kontrollü 5 LED'li Yürüyen Işık (Knight Rider Efekti)
* Amaç: Potansiyometre ile LED'lerin yürüme hızını ayarlamak.
*
* Bağlantılar:
* - Potansiyometre Orta Bacağı: Arduino Analog Pin A0
* - Potansiyometre Dış Bacakları: 5V ve GND
* - LED'ler (220 Ohm direnç üzerinden): Arduino Dijital Pinler 2, 3, 4, 5, 6
* - LED'lerin Katot Bacakları: GND
*/
// 5 LED'in bağlı olduğu dijital pinleri tanımlıyoruz
const int ledPins[] = {2, 3, 4, 5, 6};
const int ledCount = 5;
// Potansiyometrenin bağlı olduğu analog pini tanımlıyoruz
const int potPin = A0;
// Gecikme süresini (hızı) tutacak değişken
int delayTime = 0;
void setup() {
// Tüm LED pinlerini ÇIKIŞ (OUTPUT) olarak ayarlıyoruz
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT);
}
// İsteğe bağlı: Hata ayıklama ve değerleri izlemek için Seri Monitörü başlatın
// Serial.begin(9600);
}
void loop() {
// 1. Potansiyometre Değerini Oku
// Analog okuma değeri 0 ile 1023 arasında olacaktır.
int potValue = analogRead(potPin);
// 2. Analog Değeri Gecikme Süresine (Milisaniye) Dönüştür (Mapping)
// 'map' fonksiyonu, 0-1023 değerini 10ms (hızlı) ile 500ms (yavaş) arasına çevirir.
// Bu aralıkları (10 ve 500) kendi zevkinize göre değiştirebilirsiniz.
delayTime = map(potValue, 0, 1023, 10, 500);
/*
// Seri Monitörde değerleri göstermek isterseniz bu satırların başındaki // işaretlerini kaldırın:
Serial.print("Potansiyometre (0-1023): ");
Serial.print(potValue);
Serial.print(" | Gecikme Suresi (ms): ");
Serial.println(delayTime);
*/
// --- Yürüyen Işık Efekti Başlangıcı ---
// A) İLERİ YÖN (2 -> 3 -> 4 -> 5 -> 6)
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], HIGH); // LED'i yak
delay(delayTime); // Ayarlanan süre kadar bekle
digitalWrite(ledPins[i], LOW); // LED'i söndür
}
// B) GERİ YÖN (6 -> 5 -> 4 -> 3 -> 2) (Knight Rider Efekti)
// i=ledCount-2 (yani 4. index, pin 5) ile başlar ve i > 0 (yani pin 3) olana kadar döner.
// Bu, pin 2 (ilk LED) ve pin 6'nın (son LED) iki kez üst üste yanmasını engeller.
for (int i = ledCount - 2; i > 0; i--) {
digitalWrite(ledPins[i], HIGH); // LED'i yak
delay(delayTime); // Ayarlanan süre kadar bekle
digitalWrite(ledPins[i], LOW); // LED'i söndür
}
}
Buna da gözat
Arduino Hareket Sensörü ile LED Yakma
Hareket Sensörü (PIR) Nedir? PIR (Pasif Kızılötesi) Sensörü, çevredeki nesnelerin yaydığı kızılötesi (ısı) seviyelerindeki değişiklikleri ölçerek …
Bilişim Teknolojileri Kaynak Site
