Arduino LED parlaklığı ayarlama işlemi; potansiyometreler, ortam ışığına duyarlı LDR sensörleri veya çeşitli dokunmatik arayüzlerle kolayca gerçekleştirilebilir hatta her hangi bir donanım kullanmadan yazılım tabanında da bu işlemler kolaylıkla yapılabilir.
Bu rehberimizde ise, endüstriyel arayüz tasarımlarının temelini oluşturan iki adet basma butonu (artırma ve azaltma) yardımıyla PWM (Darbe Genişlik Modülasyonu) sinyalini kontrol ederek bir LED’in parlaklığını adım adım nasıl ayarlayacağımızı ele alacağız. Bu projede anlatılan temel konsepti ileriye taşımak tamamen hayal gücünüze kalmış durumda.
Normal şartlarda butonlu giriş devrelerinde, buton basılmadığında pindeki elektriksel dalgalanmaları (floating state) önlemek ve kararlı okuma yapabilmek için donanımsal pull-up veya pull-down dirençleri kullanılması zorunludur.
Ancak Arduino Uno ve diğer mikrodenetleyiciler üzerinde yerleşik olarak bulunan dahili pull-up dirençleri sayesinde, yazılımsal pin ayarlarını doğru yapılandırarak fazladan harici direnç kablolaması yapmadan butonları son derece güvenli ve kararlı bir şekilde okuyabiliriz.
Buton Kullanarak Arduino LED Parlaklığı Ayarlama Devre Şeması

Arduino LED Parlaklığı Ayarlama Yazılımı
Yazılım Kodlarının Detaylı Açıklaması
İlk aşamada, butonlar ve LED için kullanacağımız fiziksel pin numaralarını tanımlıyoruz. Ardından, parlaklık değişim adımlarını ve buton okuma durumlarını saklayacak değişkenleri tanımlayarak kodumuzun temelini oluşturuyoruz:
setup() fonksiyonu altında, parlaklık değerlerini bilgisayar ekranından anlık gözlemlemek için Seri Port haberleşmesini 9600 baud hızında başlatıyoruz. Buton pinlerini INPUT_PULLUP olarak yapılandırarak Arduino’nun dahili dirençlerini devreye sokuyoruz; bu modda butona basılmadığında pin lojik-1 (HIGH) okurken, butona basıldığında akım GND’ye akar ve pin lojik-0 (LOW) durumunu alır. LED pinini ise sinyal çıkışı vereceği için OUTPUT olarak kuruyoruz.
loop() fonksiyonu altında, buton durumlarını sürekli dinleyerek basılma olaylarını yakalıyoruz:
Artırma veya azaltma butonlarından birine basıldığında, parlaklık değişkeninin değerini belirlediğimiz adım miktarına göre güncelliyoruz. PWM sinyal aralığının sınırlarını aşmamak için parlaklık değerini 0 ile 255 aralığında sınırlamamız (constrain) gerekir.
Arduino Uno’da yer alan 8-bitlik donanımsal zamanlayıcılar (timers) nedeniyle PWM çözünürlüğü 0 (tamamen kapalı) ile 255 (tamamen açık – %100 görev döngüsü) arasında çalışır. Örneğin, nozula gönderilen 128 değeri yaklaşık %50 görev döngüsünü (duty cycle) temsil eder ve LED’e ortalama 2.5V gerilim iletilmesini sağlar.
Hesaplanan bu parlaklık değerini analogWrite() komutuyla ilgili PWM pinine yazdırıyor ve Serial.print() fonksiyonuyla anlık verileri Seri Monitöre gönderiyoruz.
Buton ile PWM Kontrolünde Karşılaşılan Donanımsal Sorunlar
Butonlu kontrol projelerinde en sık karşılaşılan kararsızlık, buton sıçraması olarak bilinen donanımsal ark (button bounce) etkisidir. Butona fiziksel olarak bir kez bastığınızda, buton içerisindeki metal yapraklar mikroskobik düzeyde saniyede onlarca kez birbirine temas edip ayrılır. Geliştirme kartı bu milisaniyelik temasları ayrı basılma olayları olarak algılar ve parlaklık değeri siz butona tek bir kez bassanız dahi anında 0’dan 255’e fırlayabilir.
- Yazılımsal Filtreleme (Debouncing): Buton durum okumasından hemen sonra 50ms gibi kısa bir gecikme eklemek (
delay(50)) veyamillis()tabanlı zaman damgası kontrolü uygulamak mekanik sıçramaların oluşturduğu parazitleri tamamen temizler. - Adım Boyutunu Doğru Ayarlayın: Parlaklık adımlarını (step) çok büyük seçmek (örn: 50’şer artış) geçişlerin sert olmasına sebep olur. 15 veya 25 gibi orta seviyeli adımlarla çok daha yumuşak bir parlaklık geçişi elde edebilirsiniz.
- PWM Destekli Doğru Pini Seçin: Arduino Uno üzerindeki her dijital çıkış pini PWM sinyali üretemez. Yalnızca kart üzerinde tilde işareti (~) ile belirtilen 3, 5, 6, 9, 10 ve 11 numaralı pinleri
analogWrite()için kullanmalısınız. - Seri Akım Sınırlama Direnci: LED’in yüksek akım çekerek bozulmasını önlemek için LED’in anot bacağına mutlaka 220 Ω veya 330 Ω değerinde bir seri akım sınırlama direnci ekleyin. Direnç hesabı Ohm Kanunu ile şu şekilde yapılır:
(örn:
).
Arduino LED Parlaklığı Ayarlama projesini bir adım ileriye taşımak için butona basılı tutulduğu sürece parlaklık değişim hızını artıran dinamik algoritmalar ekleyebilir veya güncel seviyeyi bir LCD/OLED ekran üzerinde görselleştirebilirsiniz. PWM sinyallerinin mikrokontrolcü donanımındaki çalışma yapısı hakkında daha derin bilgi edinmek için resmi Arduino Analog Output (PWM) Dokümantasyonu iyi bir teorik kaynaktır.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.

