Arduino LED Parlaklığı Ayarlama Buton ve PWM Kullanımı
Arduino LED parlaklığı ayarlama, potansiyometre, kod kısmı, LDR gibi farklı yöntemlerle değiştirilebilir, bu yazımızda, butonlar yardımıyla, PWM kullanarak LED’in parlaklığını değiştiriyoruz.
Normal şartlarda, buton ve LED kullanmak için, çekme(pull-up) direnci kullanmamız gerekiyor, fakat Arduino Uno’da dahili olarak bulunan dirençler sayesinde, kod kısmında bu dirençleri belirterek, devreye direnç takmadan kullanabiliyoruz.
Devre Şeması
Program Kodu
int but1 = 12; int but2 = 11; int butval1; int butval2; int pwmcikisi = 3; int parlaklik = 0; int beklemesuresi = 10; void setup() { Serial.begin(9600); pinMode(but1, INPUT_PULLUP); pinMode(but2, INPUT_PULLUP); pinMode(pwmcikisi, OUTPUT); } void loop() { butval1 = digitalRead(but1); butval2 = digitalRead(but2); delay(beklemesuresi); if (butval1 == LOW) { parlaklik = parlaklik + 25; } if (butval2 == LOW) { parlaklik = parlaklik - 25; } if (parlaklik > 255) { parlaklik = 255; } if (parlaklik < 0) { parlaklik = 0; } analogWrite(pwmcikisi, parlaklik); Serial.print("Parlaklik: "); Serial.println(parlaklik); delay(100); }
Kod Açıklaması
Öncelikle buton ve LED’için gerekli giriş ve çıkışları belirtiyoruz ve bekleme süresi, parlaklik değişlenleri atıyoruz.
int but1 = 12;
int but2 = 11;
int butval1;
int butval2;
int pwmcikisi = 3;
int parlaklik = 0;
int beklemesuresi = 10;
setup() kısmında ise;
void setup()
{
Serial.begin(9600);
pinMode(but1, INPUT_PULLUP);
pinMode(but2, INPUT_PULLUP);
pinMode(pwmcikisi, OUTPUT);
}
Seri monitör üzerinden parlaklık değerini görmek için 9600 hızında bir seri haberleşme başlatıyoruz. buton pinlerini INPUT_PULLUP özelliği ile giriş olarak ayarlıyoruz bu sayede harici bir dirence gerek kalmadan dahili Arduino dirençleri ile işlem yapabileceğiz. Ayrıca, pwmcikisi ile LED’in parlaklığını değiştireceğiz.
loop() kısmında ise;
void loop()
{
butval1 = digitalRead(but1);
butval2 = digitalRead(but2);
delay(beklemesuresi);
if (butval1 == LOW)
{
parlaklik = parlaklik + 25;
}
if (butval2 == LOW)
{
parlaklik = parlaklik - 25;
}
if (parlaklik > 255)
{
parlaklik = 255;
}
if (parlaklik < 0)
{
parlaklik = 0;
}
analogWrite(pwmcikisi, parlaklik);
Serial.print("Parlaklik: ");
Serial.println(parlaklik);
delay(100);
}
10ms aralıklarla, butonların basılıp basılmadığını kontrol ediyoruz, eğer butonların her hangi birine basılırsa buton, GND’ye yani 0V’a çekiliyor, kod kısmında LOW tespit edildiğinde parlaklığı arttırıyor ya da azaltıyoruz.
Orta kısımda, eğer parlaklık 255 üzerine çıkmaya çalışırsa bunu 255’e sabitliyoruz çünkü Arduino üzerindeki pwm registerı 8-bittir bu değer matematiksel olarak 28 = 256 yapar ve 0 ve 255 aralığındaki değerler 0V ve 5V aralığında PWM değerine göre değişir yani, PWM 128 değeri yaklaşık olarak 2.5V’a denk gelir.
Son kısımda, analogWrite fonksiyonu ile parlaklığı değiştiriyor ve Serial.print fonksiyonu ile seri ekran parlaklık değerlerini yazdırıyoruz.
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.