Arşiv

Posts Tagged ‘analogWrite’

Arduino Temel İşlevler

Arduino ile Karanlıkta Yanan Led (Parlaklık Ayarlı)

Bir önceki karanlıkta yanan led uygulamasında LDR voltajı digitalRead() ile okunarak digitalWrite() ile led devresine 5V verilmiştir. Bu uygulamada ise karanlığa oranla led parlaklığı arttırılacaktır.

Arduino pinleri çıkış olarak ayarlandığında 0 veya 5V vermektedir. Ara değerleri çıkış olarak verebilmek için analog sinyal üretilmesi gerekir. Analog çıkışı Arduino’nun PWM (Pulse Width Modulation) sahip pinleri (yanında ~ işareti olan pinler) verebilmektedir. Arduino Uno’da 3,5,6,9,10 ve 11. pinler PWM çıkışına sahiptir. Bu pinlerle analog sinyal üretilip motor hız kontrolü, LED parlaklığı ayarlanabilmektedir.

Bu pinler; analogWrite(pin, deger) fonksiyonu ile 0-5V arası çıkış gerilimi verebilir. deger parametresi 0-255 arası int türündendir. 0-> 0V, 255->5V için kullanılır. Ara değer vermek içinse oranlama yapılır.

Devrede 330 ohm’luk led direnci ve 10K’lık potansiyemetre (direnç yerine) kullanılmış olup devre tasarımımız şöyledir:

Dijital 9.pin (PWM var) lede +0..5V arası voltaj vermek için kullanılmaktadır. Karanlıkta LDR direnci artar dolayısıyla üzerine düşen voltaj da artar. Analog 1.pin LDR’ye düşen voltajı okur ve 0-1023 arası değere dönüştürür. Eşik değer 300 belirlenmiştir. Eşik değer aşıldığında (karanlık arttığında) analogWrite(9, gonderilecekDeger) ile karanlığa oranla 0-5V arası voltaj dijital 9.pin ile lede gönderililir. Aksi durumda led söndürülür. Oranlama gelen değerin 1023’e bölünüp 255 ile çarpılmasıyla yapılmıştır.

Kaynak kod şöyledir:

int gelenDeger;
int gonderilecekDeger;

void setup()
{
  pinMode(9, OUTPUT); //PWM pini 
  pinMode(A1, INPUT); //LDR'ye düşen voltaj  

  Serial.begin(9600);
}

void loop()
{
  gelenDeger = analogRead(A1); //0-1023 arası değer dönecek
  gonderilecekDeger = (gelenDeger/1023.0)*255; //PWM değeri
  
  if (gelenDeger >=300) //LDR eşik değeri
  {
    analogWrite(9, gonderilecekDeger); 
  } else
  {
    analogWrite(9, 0); //OV
  }

  Serial.print(gelenDeger);
  Serial.print("-");
  Serial.println(gonderilecekDeger);
  
  delay(750);
}

Seri monitör çıktıları aşağıdaki gibi olup solda LDR’den okunan analog değer, sağda ise lede gönderilen analog değer vardır.

Ledin ne kadar karanlıkta yanacağı analog pinin potansiyemetrenin orta ayağına çekilmesi ile ya da pot’un direncinin arttırılmasıyla da ayarlanabilir.

Kaynakça
https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/
https://www.arduino.cc/en/Tutorial/PWM
https://gelecegiyazanlar.turkcell.com.tr/konu/arduino/egitim/arduino-301/arduinoda-analog-sinyal-uretme

 

Kategoriler:Robotik Etiketler:, , , , , , , ,