Picbasic dilinde yazilimsal PWM uygulamasina bir ornek olmasi amaciyla bilgi vermek istedim
PWM in ne demek oldugunu aciklamiyorum bildiginizi farz ediyorum.
PWM mikrodenetleyicilerde iki sekilde yapilabilmektedir.
Birincisi MCU icerisinde bulunan donanim sayesinde olabilmektedir, ancak gelismis MCU lar disinda bir cok MCU da bu donanimda en cok 1 ya da iki adet bulunur. Dolayisiyla RGB uygulamasi gibi 3 ayri PWM sinyali ihtiyaci oldugunda donanimsal PWM kanal sayisi yetersiz kalabilmektedir.
Ikincisi olan yazilimsal PWM ise bir cok kanaldan PWM elde edilebilmesine olanak saglamaktadir. Ancak ne varki butun PWM sinyallerinin uretilebilmesi icin MCU mesgul edildiginden diger islere zaman ayirmak programlama cambazliklari yapmayi gerektirmektedir. Dolayisiyla daha cok programlama bilgisi gerektirmektedir. Donanimsal PWM de sadece pwm degerini kurmaniz yeterlidir sinyaller MCU icerisindeki donanim tarafindan yazilima ihtiyac duymadan devam ettirilir.
Ornek olmasi acisindan asagida RGB ledlerde cesitli animasyonlar yapan bir program veriyorum.
Programa bakarsaniz herhangi bir PWM ile ilgili komut kullanilmamistir. LOW ve HIGH komutlari bize yetiyor.
Programa satir satir aciklama koymaya ve kodlari daha yakisikli hale getirmeye vaktim olmadi, ancak istek olursa zaman buldugumda eklerim.
****************************************************************************
trisb=0
esas var byte
esas1 var byte
RED VAR BYTE
GREEN VAR BYTE
BLUE VAR BYTE
SAY VAR BYTE
don var byte
LEDRED VAR PORTB.0 ' kirmizi led
LEDGREEN VAR PORTB.1 ' yesil led
LEDBLUE VAR PORTB.4 ' mavi led
CLEAR
RED=10
BLUE=250
GREEN=5
BASLA:
for esas=1 to 3
red=255
blue=1
green=1
for don=1 to 200
gosub zipla
next don
red=1
blue=1
green=255
for don=1 to 250
gosub zipla
next don
red=1
blue=255
green=1
for don=1 to 200
gosub zipla
next don
red=255
blue=1
green=255
for don=1 to 250
gosub zipla
next don
next esas
gosub animasyon
red=0
green=0
blue=0
for esas=1 to 63
red=red+4
gosub zipla1
next esas
for esas=1 to 63
green=green+4
gosub zipla1
next esas
for esas=1 to 63
blue=blue+4
gosub zipla1
next esas
red=255
green=255
blue=255
gosub zipla1
for esas=1 to 63
red=red-4
gosub zipla1
next esas
for esas=1 to 63
green=green-4
gosub zipla1
next esas
for esas=1 to 63
blue=blue-4
gosub zipla1
next esas
red=0
green=0
blue=0
for esas=1 to 31
red=red+8
gosub zipla1
next esas
for esas=1 to 31
green=green+8
gosub zipla1
next esas
for esas=1 to 31
blue=blue+8
gosub zipla1
next esas
red=255
green=255
blue=255
gosub zipla1
for esas=1 to 31
red=red-8
gosub zipla1
next esas
for esas=1 to 31
green=green-8
gosub zipla1
next esas
for esas=1 to 31
blue=blue-8
gosub zipla1
next esas
goto basla
zipla: ' PWM sinyallerin uretildigi alt program RED GREEN BLUE degerlerine gore uretilir
for don=1 to 250
HIGH LEDRED
HIGH LEDGREEN
HIGH LEDBLUE
FOR SAY=0 TO 255
IF SAY=RED THEN
LOW LEDRED
ENDIF
IF SAY=GREEN THEN
LOW LEDGREEN
ENDIF
IF SAY=BLUE THEN
LOW LEDBLUE
ENDIF
NEXT SAY
next don
return
zipla1: ' PWM sinyallerin uretildigi alt program RED GREEN BLUE degerlerine gore uretilir
for don=1 to 50
HIGH LEDRED
HIGH LEDGREEN
HIGH LEDBLUE
FOR SAY=0 TO 255
IF SAY=RED THEN
LOW LEDRED
ENDIF
IF SAY=GREEN THEN
LOW LEDGREEN
ENDIF
IF SAY=BLUE THEN
LOW LEDBLUE
ENDIF
NEXT SAY
next don
return
animasyon: ' ornek bir animasyon
red=0
green=0
blue=0
for esas=1 to 7
red=red+32
gosub zipla1
next esas
for esas=1 to 7
green=green+32
gosub zipla1
next esas
for esas=1 to 7
blue=blue+32
gosub zipla1
next esas
red=255
green=255
blue=255
gosub zipla1
for esas=1 to 7
red=red-32
gosub zipla1
next esas
for esas=1 to 7
green=green-32
gosub zipla1
next esas
for esas=1 to 7
blue=blue-32
gosub zipla1
next esas
return
****************************************************************************
Özkan ÇINAR

Hiç yorum yok:
Yorum Gönder
Yazılarla ilgili düşündükleriniz, eleştirileriniz, istekleriniz, akliniza gelen ne varsa yazin ..