📅 12 Nisan 2026, Pazar
📚 Ders Kitapları ✉ İletişim
@ydiner.gen.tr İlköğretim & Lise Düzeyi Kaynak Site "Bilgi paylaştıkça çoğalır"
🏠 Ana Sayfa
  • 🧊 3D Tasarım
  • Animasyon
  • ⚡ Arduino
  • 📌 Genel
  • 🎨 Grafik
  • Pardus
  • 💻 Programlama
  • Robotik ve Kodlama
  • 🗄️ SQL
  • 🌐 Web Tasarım
  • 🤖 Yapay Zeka
  • Arduino

    Potansiyometre Kontrollü Yürüyen Işık

    /*
     * 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
      }
    }