Bardağın yarısı dolu (yada PWM)

Paylaş
Bardağın yarısı dolu (yada PWM)

Bu yazının başlığı elektronik açısından garip te gelse ifade ettiği şey bakımından gözümüzün önüne somut bir şey getirmektedir -bardağın yarısı dolu (yada boş).

Bir büyüklüğü, potansiyeli, doluluğu elektronikte oluşturabilmek için PWM yöntemi geliştirilmiştir. Eğer bardak tam dolu olsaydı %100 dolu derdik, yarısı dolu ise %50 dolu diyebileceğimiz gibi yarısının yarısı için de %25 dolu diyebilirdik. Bardağın içindeki suyun yüksekliğini de ölçsek yada bardaktaki suyu tartsak ta oransal olarak tamamına göre hep aynı oranları bulacağız. Bu oransal yaklaşım bize elektronik olarak bir potansiyeli (yada voltajı) ifade etmemizi sağlar.

Bardak örneğimizdeki gibi bardağı azar azar doldurarak bir çok oransal/ölçülebilir değer oluşturabiliriz. Daha önceki LED yakıp söndürdüğümüz yazımızda aslında oransal olarak ledi tam dolduruyorduk. Ama gerçek dünya gıcıklıklarla doludur kimseyi memnun edemezsiniz birisi çıkıp bu ledin böyle birden yanıp sönmesini beğenmez şöyle yavaş yavaş parlaklığı artsın sonra yavaş yavaş sönsün filan gibi ukalaca isteklerde bulunacaktır yani şu bardağı yavaş yavaş doldur yavaş yavaş boşalt demek istiyor aslında (bana göre bildiğin gıcık bulmuşun yanıp sönen ledi birde yavaş yavaş yananı arıyor).

Biz şimdi şu arduino borda o kadar para verdik ve topu topu bir adet led koymuş adamlar ve marifetmiş gibi birde yanıp sönen led programı örneği vererek kendinizi bir şey sanmanızı sağlarlar. Ama demezlerki etraf gıcık dolu. Arduinoda bu ledin bağlı olduğu bacak (pin 13) dijital bir çıkıştır (yani durumu “1” veya “0” olabilir) ve arduinonun sağladığı pwm komutu analaogWrite() ancak analog çıkışlarda işe yarar(tüh vede yuh). Ama üzülmeye gerek yok biz yine de bu ledin gayet güzel istediğimiz gibi parlaklığını değiştirebilirz.

Ne demiştik bardak tam dolu olduğunda %100 oluyor o zaman bunun voltaj karşılığı 5v olsun, yanıp sönen led programımızda lede aralıklarla 5v verip duruyorduk. Ledin parlaklığını etkilemek için bu voltajı ne kadar düşürürsek o kadar daha az parlayacak. Bu voltaj etkisini yaratmak için %100 doluk için bir birim zaman içinde ne kadar 5v verdik ona bakarız, birim zamanın tamamında 5v verirsek led tam yanacak ama birim zamanın yarısı kadar 5v verip(bardağın yarısını doldurduk) ve kalan yarısı içinde birşey yapmadan beklersek (bardağın boş kısmı) güzel bişey yapmış oluruz (gerçekten).

Aşağıda Arduinoda yazdığım sketch ile topu topu bordun üstündeki bir adet led yavaşça parlar sonra yavaşça söner. Siz aşağıdaki programı kopyalayın çalıştırın nasılsa anlarsınız cin gibisiniz vesselam.

Her yazımda adet oldu kod yapısı hakkında bilgi vereyim, kodlarda  “do { kodlar;komutlar;} while -şartlar-;” kısmı bir döngüyü ifade eder while kısmındaki şart sağlanana kadar do-while arasındaki her komut çalıştırılır while kısmındaki şart kontrol edilir sağlamıyorsa do kısmından itibaren kod yeniden çalışır, döner durur. delay(milisaniyeOlarakSure) komutu bildiğin bekletme işini yapar. delayMicroseconds(mikrosaniyeSüre) da bekletir ama çok daha küçük süre olan micro saniye bazında beklersiniz.

/*
  yanar donerli bir sketch
 
  This example code is in the public domain.
 */

void setup() {
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);  

}

void loop() {

  int i=1;
  do {                      // led yavas yavas parlasin bolumu
  digitalWrite(13, HIGH);   // bardağın dolu kısmı -set the LED on
  delayMicroseconds(i);     // dolu kısım kadar bekle -wait for a second
  digitalWrite(13, LOW);    // bardağın boş kısmı -set the LED off
  delayMicroseconds(999-i); // boş kısım kadar bekle -wait for a second
  i++;                      // ledin daha hızlı parlaklığa ulaşması için i=i+2 deneyin
  } while (i < 999);        // ledin parlaklığına ulaşması 1 sn=1000mili sn sürecek

  digitalWrite(13, HIGH); 

  delay(2000);              // 2 saniye parlak dur

  i=1;
  do {                      // led yavaş yavaş sönsün bölümü
  digitalWrite(13, HIGH);   // set the LED on
  delayMicroseconds(999-i); // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delayMicroseconds(i);     // wait for a second
  i++;
  } while (i < 999);  

   delay(2000);             // 2 saniye sönük bekle 
}                           // loop başına dön

Görsel olarak nasıl bir şey olduğunu anlatmak istersek aşağıdaki çizim pin 13 üzerinde neler yaptığımızı gösterir.

ben her ne kadar elimizdeki tek ledi çakma bir şekilde pwm yaparak  parlaklığını ayarladıysam da şu yazıda bu işlemi arduinoya otomatik olarak da yaptırabiliyorsunuz (önce bir led bulun sonra denersiniz)

Şimdilik bu kadar, değişik örnek kodlarınızı mesela mum taklidi yapan bir sketch koyarsanız yorumlara, 1 tane tadelle ısmarlayabilirim 🙂

Devamını oku

Project Aslan, Arduino DUE Kullanan Bir Robot İşaret Dili Çevirmeni

Project Aslan, Arduino DUE Kullanan Bir Robot İşaret Dili Çevirmeni

Genellikle robotikleri endüstriyel veya araştırma alanlarına uygulandığı zaman görüyoruz, ancak günlük yaşamda da yardımcı olabilecekleri çok yol var: Örneğin, görme engelli insanlar için kişisel rehber görevi gören mutfak botu, engellilerin yemek yapmasına yardımcı olabilir. Veya – ve bu gerçek – işaret dili çevirmeni işlevi gören robot kolu. Sınıflarda, mahkemelerde ve evde, bu

Arduino Turkiye tarafından
Arduino DUE ile Yaşayabileceğiniz Sorunların Çözümleri

Arduino DUE ile Yaşayabileceğiniz Sorunların Çözümleri

Elinizden hatırı sayılır miktarda Arduino DUE geçtiyse (veya sadece şanssız gününüzdeyseniz), düzgün çalışmayan en az bir tane cihazla karşılaşma olasılığınız yüksek. Bunun için her zaman cihazı çöpe atmanız gerekmeyebilir. Birçok Arduino DUE sorununu çözmek için çeşitli yöntemler var. Diyelim ki Arduino DUE ile çalışmaya başlayacaksınız. Bunun için Arduino’yu açtınız

Arduino Turkiye tarafından
STM32 Mikro Denetleyiciler Arduino

STM32 Mikro Denetleyiciler Arduino Dünyasında Ne Anlama Geliyor?

Arduino ile tanışanlar genellikle uzun bir yolun başlangıcında oluyor. Çünkü Arduino dünyası vazgeçmesi zor maceralarla dolu. Arduino’yu tanıdıkça bu heyecanınız da artacak. Bu nedenle Arduino dünyasıyla sizi buluşturmak için biz de heyecan duyuyoruz. Çok ucuza elde edebileceğiniz Arduino kiti ve ihtiyaç duyacağınız diğer malzemeler uzun soluklu projeler için yeterli

Arduino Turkiye tarafından