Herkese merhaba
Bu çalışamaya göz atmadan önce neler yapıldığını tam olarak anlayabilemek için PWM isimli yazımı okumanız yararlı olur.
İlk olarak gerekli olan parçalar neler bir bakalım;
- 1 Adet 220 Ohm Direnç
- 1 Adet LED
- 1 Adet Arduino Mega 2560 ya da diğer Arduino boardlarından biri
- 1 Adet Breadboard
- Arduino Yazılımı
Arduino'nun PWM çıkışına bir led bağladım. Daha önceki çalışmarda sürekli olarak dijital çıkışları kullanarak led yakıp söndürmüştük. Bu sefer pwm sinyalleri üretiyoruz ve bu sinyalleri ledin ışığını takip ederek gözlemleyeceğiz.
Aşağıdaki grafiğe bakılarak hangi analog çıkışı verdiğimizde nasıl bir PWM üretileceğini inceleyebiliriz. Eğer 8 bitlik bir analog çıkış uyguluyorsak ve %25 sinyal oranına sahip bir pwm üretmek istiyorsak. Burada en yüksek genlik değeri +5V en düşük genlik değeri ise 0V dur.
28 = 256 yani (0-255) aralığında oluyor
(25*256)/100 = 64
yani analog çıkışından 64 değerini göndermemiz gerekir. Burada ortalama gerilim 1.25 V oluyor.
kanımca bu kadar önbilgi yeterli artık kodu incelemeye başlıyalım. Bu kod bir ledi kademe kademe artırarak en yüksek parlaklık seviyesine çıkarıp, ardından kademe kadame düşerek ışık vermeyecek şekilde çalıştırmaya yarıyor. Bu olay bir döngü halinde sürekli olarak tekrarlanıyor. Yani burada kademe kademe parlayan ve sönen bir led ışığı üretmeye çalışıyoruz.
KOD :
/*
KOD :
/*
******************
H.Melih ERDOĞAN
******************
Project 3
Name : "PWM Output"
*/
int ledPin = 2; // Çıkış olarak kullanacağımız yani led bağlayacağımız pwm bacağını beliriliyoruz.
int ledLevel = 0; // göndereceğimiz pwm nin siyal oranını atacağımız değişken.
void setup(){
pinMode(ledPin, OUTPUT); // led bağladığım bacağı çıkış olarak yaralıyorum
}
void loop(){
analogWrite(ledPin, ledLevel);// daha önceden belirlediğim bacağa (pin 2) analog değerler gönderiyorum
delay(1000); // 1 sn beleme yapıyorum.
ledLevel = ledLevel +51; // analog olarak göndereceğim değeri arttırıyorum. (led en parlaklığı artıyor)
Project 3
Name : "PWM Output"
*/
int ledPin = 2; // Çıkış olarak kullanacağımız yani led bağlayacağımız pwm bacağını beliriliyoruz.
int ledLevel = 0; // göndereceğimiz pwm nin siyal oranını atacağımız değişken.
void setup(){
pinMode(ledPin, OUTPUT); // led bağladığım bacağı çıkış olarak yaralıyorum
}
void loop(){
analogWrite(ledPin, ledLevel);// daha önceden belirlediğim bacağa (pin 2) analog değerler gönderiyorum
delay(1000); // 1 sn beleme yapıyorum.
ledLevel = ledLevel +51; // analog olarak göndereceğim değeri arttırıyorum. (led en parlaklığı artıyor)
// eğer değer 255 i geçmiş ise bu sefer azalarak 0 değerine kadar gidiyorum.
if(ledLevel >=255){
ledLevel = 255; // değişkeni en yüksek değere çek (led en parlak surumda)
for(;;){
analogWrite(ledPin, ledLevel);// daha önceden belirlediğim bacağa (pin 2) analog değerler gönderiyorum
ledLevel = ledLevel -51; // analog olarak göndereceğim değeri azaltıyorum. (led parlaklığı azalıyor)
delay(1000); // 1 sn bekle
if(ledLevel <=0){
ledLevel=0;
break; // değer 0 dan küçük ise sonuz döngüden çık ve değişkeni 0 a eşitle.
}
}
}
}
kod anlaşıldı ise artık devre şemasına bakarak gerekli devreyi kurabilirsiniz. Ben bu çalışnmada Arduino üzerinde PWM sinyali üretebileceğim 2 numaralı bacağını kullandım.
Devre şeması
Devrenin kurulmuş ve çalıştırılmış halinin fotoğafları aşağıdadır.
Aşağıdaki fotoğrafta ledin ışığının parlaklığı artıyor.
if(ledLevel >=255){
ledLevel = 255; // değişkeni en yüksek değere çek (led en parlak surumda)
for(;;){
analogWrite(ledPin, ledLevel);// daha önceden belirlediğim bacağa (pin 2) analog değerler gönderiyorum
ledLevel = ledLevel -51; // analog olarak göndereceğim değeri azaltıyorum. (led parlaklığı azalıyor)
delay(1000); // 1 sn bekle
if(ledLevel <=0){
ledLevel=0;
break; // değer 0 dan küçük ise sonuz döngüden çık ve değişkeni 0 a eşitle.
}
}
}
}
kod anlaşıldı ise artık devre şemasına bakarak gerekli devreyi kurabilirsiniz. Ben bu çalışnmada Arduino üzerinde PWM sinyali üretebileceğim 2 numaralı bacağını kullandım.
Devre şeması
Devrenin kurulmuş ve çalıştırılmış halinin fotoğafları aşağıdadır.
Aşağıdaki fotoğrafta ledin ışığının parlaklığı artıyor.
Aşağıdaki fotoğrafta ledin ışığının parlaklığı azalıyor.
Aşağıdaki fotoğrafta ledin ışığının parlaklığı en yüksek seviyede. Yani lede şuan 5V luk gerilim uyguluyoruz.
Diğer Arduino projelerine de bakmak isterseniz technologylaboratory.blogspot.com/search/label/Arduino