Proje

Arduino ile İlk Projeniz: Buton Kontrollü LED ve PWM ile Parlaklık Ayarı

Arduino ile İlk Projeniz: Buton Kontrollü LED ve PWM ile Parlaklık Ayarı

Arduino, mikrodenetleyici dünyasına girişin en kolay yoludur; ucuz, geniş topluluk desteğine sahip ve öğrenmesi nispeten hızlıdır. Bu yazıda klasik "LED yakma" projesini bir adım ileriye taşıyıp, butona basıldığında LED'in parlaklığının değiştiği, gerçek hayatta da işe yarayan bir devre yapacaksınız.

Gerekli Malzemeler

  • Arduino Uno (veya Nano)
  • 1 adet kırmızı LED (ya da istediğiniz renk)
  • 1 adet taktil buton (anlık basmalı)
  • 220 Ω direnç (LED için, ¼ W yeterli)
  • 10 kΩ direnç (buton pull-down için)
  • Breadboard
  • Jumper kablo seti

Devre Bağlantısı

Breadboard üzerindeki bağlantı sırası şu şekilde yapılır:

  • LED'in anot (uzun) bacağını D9 pinine bağlayın — D9, Arduino Uno'da PWM destekli bir pin.
  • LED'in katot (kısa) bacağını 220 Ω direnç üzerinden GND'ye bağlayın.
  • Butonun bir bacağını 5V'a, diğer bacağını hem D2 pinine hem de 10 kΩ pull-down direnç üzerinden GND'ye bağlayın.

Pull-down direnç neden gerekli? Butona basılmadığında D2 pini havada kalmasın diye 0V'a çekiliyor. Butona basıldığında 5V gelince pin HIGH okuyor; aksi hâlde "floating" durum rastgele değerler üretirdi.

Arduino Kodu

Aşağıdaki kod, her buton basışında LED parlaklığını beş kademeli olarak artırır; en yüksek seviyeye ulaştıktan sonra sıfırdan başlar:

const int ledPin = 9;
const int btnPin = 2;

int brightness = 0;
int lastBtnState = LOW;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(btnPin, INPUT);
}

void loop() {
  int btnState = digitalRead(btnPin);

  if (btnState == HIGH && lastBtnState == LOW) {
    brightness += 51;       // 0, 51, 102, 153, 204, 255
    if (brightness > 255) brightness = 0;
    analogWrite(ledPin, brightness);
    delay(50);              // Titreşim (debounce) için kısa bekleme
  }

  lastBtnState = btnState;
}

analogWrite() fonksiyonu, aslında LED'i çok hızla açıp kapatarak (PWM — Pulse Width Modulation) farklı parlaklık seviyeleri oluşturur. 0 tamamen söndürme, 255 tam parlaklıktır. Gözümüz bu hızlı yanıp sönmeyi algılamaz ve sanki LED'in ışığı azalıp çoğalıyor gibi görürüz.

PWM Neden Böyle Çalışır?

Arduino Uno, D3, D5, D6, D9, D10 ve D11 pinlerinde 490 Hz veya 980 Hz frekanslı PWM üretir. analogWrite(9, 128) dediğinizde pin, her döngünün yarısında HIGH, yarısında LOW kalır; bu da efektif olarak 2.5V gibi bir ortalama gerilim anlamına gelir. LED, 0–5V arasında bu ortalamaya orantılı parlaklıkta yanar.

Daha İleri Gitmek

Bu temel yapıyı genişletmek için birkaç fikir: potansiyometre ekleyip analogRead() ile parlaklığı sürekli ayarlayabilirsiniz. RGB LED kullanarak üç ayrı PWM kanalıyla milyonlarca renk elde edebilirsiniz. Birden fazla LED ve buton ekleyip bir "mors kodu makinesi" yapabilirsiniz. Ya da bir buzzer ekleyip butona basıldığında hem ses hem ışık üretebilirsiniz.

Arduino'nun güzelliği tam da burada: tek bir doğru adımla başlayıp giderek karmaşıklaşan projelere geçmek son derece doğal ve keyifli bir süreç haline geliyor. Devrenizi kurduktan sonra her şey beklediğiniz gibi çalışıyorsa o "mükemmel his"i sizi bir sonraki projeye taşıyacaktır.

Etiketler: arduino led pwm buton proje başlangıç