Bu yazıda Arduino’nun PWM özelliği olmayan pinlerine bağlı LED’lerin parlaklığını nasıl değiştirebileceğimizi anlatacağız.
Arduino Uno’nun 3,5,6,9,10 ve 11 numaralı dijital pinlerinde PWM özelliği var ve bu pinlere bağladığımız LED’lerin parlaklığını analogWrite() komutu ile ayarlayabiliyoruz.
Peki Arduino üzerindeki dahili LED’in bağlı olduğu 13. pin gibi PWM özelliği olmayan pinlere bağlı LED’lerin parlaklığını ayarlayabilmemiz mümkün mü? Elbette!
Videoda görüldüğü gibi Arduino Uno üzerindeki dahil LED’in parlaklığı değişiyor. Bunu yapmanın yollarından birisi delayMicroseconds() komutunu kullanmak. Böylece LED’i çok küçük aralıklarla yakıp söndürebiliyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { for (int x = 20; x <= 1000; x++) { digitalWrite(LED_BUILTIN, HIGH); delayMicroseconds(x); digitalWrite(LED_BUILTIN, LOW); delayMicroseconds(1000-x); } for (int x = 1000; x >= 20; x--) { digitalWrite(LED_BUILTIN, HIGH); delayMicroseconds(x); digitalWrite(LED_BUILTIN, LOW); delayMicroseconds(1000-x); } } |
Yukarıdaki sketch kodunda bunun nasıl yapılacağı gösteriliyor. ilk for döngüsünde LED’in yanık kalma süresi 20 mikrosaniyeden 1000 mikrosaniyeye kadar artırılırken aynı zamanda sönük kalma süresi de 980 mikrosaniyeden 20 mikrosaniyeye kadar azaltılıyor.
İkinci for döngüsü de üsttekinin tam tersini yapıyor. Böylece bir nevi PWM simülasyonu yapılabiliyor. Aslında LED güç aldığı her an aynı parlaklıkta yanıyor, ancak gözlerimiz bu yüksek frekanstaki yanıp sönmeyi fark edemediği için LED’in parlaklığının değiştiğini sanıyor.
PWM desteği olmayan pinlerden PWM tipi çıkış almanın kolay yollarından birisi Brett Hagman‘ın geliştirdiği SoftPWM kütüphanesini kullanmak. Bu kütüphaneyi Arduino’nun kütüphane yöneticisini açıp softpwm aratarak kurabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include "SoftPWM.h" void setup() { SoftPWMBegin(); SoftPWMSet(13, 0); SoftPWMSetFadeTime(13, 1000, 1000); } void loop() { SoftPWMSetPercent(13, 100); delay(1000); SoftPWMSetPercent(13, 0); delay(1000); } |
Yukarıda SoftPWM ile LED parlaklığı ayarlamanın bir örneğini görüyoruz. Değerlerle oynayarak farklı parlaklık seviyeleri yakalamak mümkün.
Arduino’da iyi olmak için öncelikle elektronikte iyi olmak gerekir. Türkiye’nin en iyi temel elektronik eğitim seti ARDUINO ÖNCESİ TEMEL ELEKTRONİK EĞİTİM VE DENEY SETİ‘ni keşfedin. Gereksiz bilgilerden arındırılmış basit ve eğlenceli anlatımla ELEKTRONİK öğrenin ve Arduino’ya METE HOCA farkıyla güçlü başlayın!
ÖZGÜN ve KULLANIŞLI projeler yapabilmek için ARDUINO’yu doğru öğrenmek gerekir. Arduino’ya güçlü başlamanın en iyi yolu ARDUINO’YA GÜÇLÜ BAŞLANGIÇ EĞİTİM VE PROJE SETİ‘dir. Arduino Uno üzerine kurulu olan set ile bu müthiş geliştirme platformunu tüm detaylarıyla anlayacak, başka hiçbir yerde bulamayacağınız inceliklerini öğrenecek ve en sık kullanılan Arduino sensör ve modüllerine aşina olacaksınız.