Arduino ile Led Parlaklığı Ayarlama – PWM Kullanımı

Robotik ve Arduino Kodlama ve Proje Geliştirme

Arduino ile Led Parlaklik Ayarı Yapma PWM

Arduino ile Led Parlaklığı Ayarlama – PWM Kullanımı

Arduino ile Led Parlaklık Ayarlama Uygulamasında PWM (Pulse Width Modulation) Darbe Genişliği Modülasyonu tekniği kullanılmaktadır. Bu projemizde öncelikle PWM hakkında bilgi verilecektir.

PWM (Pulse Width Modulation) Darbe Genişliği Modülasyonu Nedir?

Arduino’nun Dijital Çıkışlarından sadece 2 değer alınabilir. Bunlarda 0V ve 5V’tur. Bunlar LOW ve HIGH olarak gösterilmektedir. Ancak bu iki değerle sadece LED’in yanması ve sönmesi sağlanabilir. Parlaklığının ayarlanması mümkün değildir. Ancak digital çıkış olmasına rağmen geliştirilen bir teknoloji bu soruna çözüm oluşturmaktadır. PWM teknolojisi aslında gerilim değerinde bir değişim yapmaz. Dijital çıkış mantığı değişmez. Arduino yine 5V çıkış vermektedir. Uygulanan gerilim darbe şeklinde gönderilmektedir. Ancak bu darbenin uygulanma süresi değiştirilmektedir. Süre azaldıkça LED daha az yanmakta, süre uzadıkça parlaklığı artmaktadır. Uygulanan darbenin genişliği 0-255 değerleri arasında değiştirilebilmektedir. Bu değer neden 0-255 arasında değişmektedir. Arduino‘da dijital pinlerden giriş ve çıkış değerleri 8 bitlik veri paketleri halinde yapılmaktadır. 8Bit ise 2 üssü 8 = 256 değerine eşittir. 0 ile başlandığı içinde maksimum değer 255 olmaktadır.  Uygulama kodlarımızda da bu konuya tekrar değinilecektir.

Grafik Kaynak: wikipedia.com

PWM’de yukarıda da görüldüğü gibi 5V luk sinyalin uygulanma süresi değiştirilmektedir. Yüzdelik dilim arttıkça parlaklık artar. Uygulanan gerilimin değeri 5V değişmez. Modülasyon kelimesi de sinyalde yapılan değişikliği ifade etmektedir. Yüzdelik olarak ifade edilirse 100/255= %0.39luk bir değişimle parlaklık ayarı yapılabilmektedir.

Arduino’nun tüm dijital çıkışları PWM’i desteklemez. Arduino Uno da 3,5,6,9,10,11 nolu pinlerden PWM işlemi yapılabilmektedir. Bu pinlerin yanında
simgesi bulunmaktadır.

PWM ile Led  Parlaklığı Ayarlama Devre Şeması

Arduino ile Led Parlaklik Ayarı Yapma PWM

PWM ile Led Parlaklığı Ayarlama Proje Kodları

/*
www.robotik.cc
Arduino ile Led Parlaklık Ayarı Yapma
PWM teknolojisi kullanımı
*/
#define ledPin 9
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
for (int i=0;i<=255;i++)
{ analogWrite(ledPin, i);
delay(10); }
for (int i=255;i>=0;i--)
{
analogWrite(ledPin, i);
delay(10);
}
}

 

#define ledPin 9 kod satırında 9 nolu PWM pini seçilmiştir.

pinMode(ledPin, OUTPUT); kod satırında ledPin çıkış olarak ayarlanmıştır.

for (int i=0;i<=255;i++)
{ analogWrite(ledPin, i);
delay(10); }

Yukarıdaki kod satırlarında for döngüsü kullanılmıştır. Döngüler programlamada oldukça sık kullanılan kod bloklarıdır. Tekrarlanması istenen kodlar

döngülerin içine yazılır. Burada da LED’in parlaklığının kademeli olarak 0 dan 255 e yükseltilmesi yanı parlaklığının arttırılması gerçekleştirilmektedir.

analogWrite komutu aslında analog çıkışlarda kullanılmaktadır. Ancak burada PWM ‘in özelliği nedeniyle dijital çıkışta kullanılabilmektedir. i değeri çıkışa gönderilecek sinyalin yoğunluğunu belirlemektedir.

delay(10) ile de 10 milisaniyelik gecikme sağlanmakta ve led’in parlaklığının yavaş yavaş artması sağlanmaktadır.

for (int i=255;i>=0;i--)
{
analogWrite(ledPin, i);
delay(10);
}

yukarıdaki blokla ise tam ters işlem yapılarak LED in parlaklığı azaltılmaktadır. Döngünün başlangıç değeri 255 bitiş değeri 0 olarak belirtilmiş ve her seferinde i– ile değer 1 azaltılmaktadır.

delay(10) ile de 10 milisaniyelik gecikme sağlanmakta ve led’in parlaklığının yavaş yavaş azalması sağlanmaktadır.

Proje Kodlarını Aşağıdan İndirebilirsiniz.

Arduino ile Led Parlaklık Ayarlama