Pic Basic ile RGB sorunu

ibrahim_89

Üye
Katılım
28 May 2008
Mesajlar
98
Puanları
1
Yaş
35
selam arkadaşlar basic ile rgb yapmaya çalıştım ama olmadı hatam nerde olabilir acaba
sorun say değişkenini (örnekte 200) 5 yaptım 100 yaptım 1000 yaptımsa da led yanma hızını bir türlü ayarlayamadım çok hızlı yanıyor saniyede tüm renkleri 3-4 kere dönüyor. program mantığındamı bir hata var anlayamadım. kolay gelsin...

;
Kod:
@ device pic16F628a
@ DEVICE pic16F628a, WDT_off
@ DEVICE pic16F628a, PWRT_Off
@ DEVICE pic16F628a, PROTECT_OFF
@ DEVICE pic16F628a, MCLR_OFF
@ DEVICE pic16F628a, INTRC_OSC_NOCLKOUT 'XT_OSC - HS_OSC –

'option.7=0 'option.7=0 yaptığında aktif olur option.7=1 yaptığında pasif olur
OPTION_REG.7=1
Cmcon=7
say var byte
red var byte
green var byte
blue var byte
trisb=%11110000

red=0
green=100
blue=200

'_______________________________________________________________________________

dongu:
for say = 0 to 200

if say=199 then
 red=red+1
 green=green+1
 blue=blue+1
 say=0  
endif
'_______________________________________________________
hpwm 1, red , 1000

high portb.5
low portb.6
low portb.7
'_______________________________________________________
hpwm 1, green , 1000

low portb.5
high portb.6
low portb.7

'_______________________________________________________
hpwm 1, blue , 1000

low portb.5
low portb.6
high portb.7

'_______________________________________________________
if red=255 then
 red=0
 endif
 
if blue=255 then 
blue=0
endif

if green=255 then
 green=0
endif

Next
goto dongu
 
Merhaba İbrahim;
Bu şekilde dediğin gibi çok hızlı çalışır.Haklısın sistem ve yazılımda bi sorun yok.Ama yavaş çalışması için döngü zamanını geçiktirmelisin.
Mesela Pause 10 yada Pause 100 diye bir komut girersen her bir tur döngüsünde sana o kadar zaman içinde bekleme sağlar.
dongu:
burada
for say = 0 to 200
Pause 100 '!!!!!!
veya
if green=255 then
green=0
endif
Pause 100 '!!!!!!
Next
goto dongu
Return 'bunuda ilave et
Kolaygelsin. :)
 
eyupbakan ' Alıntı:
Merhaba İbrahim;
Bu şekilde dediğin gibi çok hızlı çalışır.Haklısın sistem ve yazılımda bi sorun yok.Ama yavaş çalışması için döngü zamanını geçiktirmelisin.
Mesela Pause 10 yada Pause 100 diye bir komut girersen her bir tur döngüsünde sana o kadar zaman içinde bekleme sağlar.
dongu:
burada
for say = 0 to 200
Pause 100 '!!!!!!
veya
if green=255 then
green=0
endif
Pause 100 '!!!!!!
Next
goto dongu
Return 'bunuda ilave et
Kolaygelsin. :)

gecikme kullandığımda kırpma yapıyor.
 
tamam haklısın fazla düşünmeden cevapladım.

dongu:
for say = 0 to 200
bir de burada dene o zaman Pause'yi
mutlaka işe yarayacak.
 
eyupbakan ' Alıntı:
tamam haklısın fazla düşünmeden cevapladım.

dongu:
for say = 0 to 200
bir de burada dene o zaman Pause'yi
mutlaka işe yarayacak.

hemen deneyim kardeş haberdar ederim
________________________________________________
denedim kardeş kırpma olmuyor ama tek renk gösteriyor hızlı yanıp sönmeler oluyor yine. çok ileri düzeyde programcı bir arkadaş var for next hesabın yanlış diyor. ama ne yapmam gerektiği konsunda bilgi vermiyor.
 
renk geçişleri çok hızlı for nex değişkeni neye ayarladıysamda bi değişme olmadı. VE kapsı olarak 7411 kullanmışıtm. acaba onun hızı pic bnm oluşturduğum tarama hızından daha yavaş olma gibi bir şansı varmı acaba arkadaşlar. bütün ve kapılarının her bir girişine PWM diğer girişlere de pic den 3 bit ayırdm mantık o şekilde. yardımlarınızı bekliyorum iyi günler iyi çalışmalar...
 
peki arkadaşlar ve kapı sı kullanmadan yazılımsal pwm i nasıl oluşturabilirim. bu konuda fikri olan veya daha önce projesi olmuş olan arkadaşlar yardımcı olamazlarmı acaba.
 
selam arkadaşım
eyüpbakan arkadaşımızın dediği doğrudur. HPWM kullanarak rgb yapıyorsun. Maalesef HPWM den saniyede 10 bit çözünürlükte çıkış alabilirsin. Doğaal olarak bunu da gözle algılamak kaçınılmaz. Böyle bir sorun benimde başıma geldi. Problem ise son derece gıcık. Sen kare dalga üretiyorsun, her bir duty de yani sinyal çıkış noktasında led aniden yanıyor, bunu engellemek için ledleri sürdüğün transistörle led arasına basit bir RC dewre kurman gerekiyor. yani 100nF paralel kondansatör ve 1k lık bir direnç. bu ürettiğin kare dalga sinyalini hafif testere sinyale benzeyen bir forma dönüştürüyor. Böylelikle gözle algılanamaz bir titremeye dönüştürüyor. Bence bunu dene. Başarılı olacaksın...
 
Merhaba dostum ben yeniyim sitede,eğer konu kapanmadıysa yardımcı olayım.
 

Forum istatistikleri

Konular
129,446
Mesajlar
926,871
Kullanıcılar
452,003
Son üye
ersel75

Yeni konular

Geri
Üst