rgb şerit led isteği

Başlatan sahinler64, 17 Mart 2012, 16:33:05

sahinler64

merhabalar. ete hocam bir konuda yardıma ihtiyacım var. eğer yanıtlarsan sevinirim. ete hocam piyasadaki rgb şerit ledleri 16f684 veya 16f628 picleriyle yakıp söndürebilirmiyiz. yani animasyon renk değişimi vs. gibi işlemleri yapabilirmiyiz. biraz araştırma yaptım pic12f675 le yapılanları var. ama ya kod yok yada pbp ile yazılanı yok. bu konu hakkında biraz bilgiye, biraz daha çok yardıma ihtiyacım var. ilgilenip yardımcı olmanızı bekliyorum. saygılarımla...

pwm.c

burada 16f628 ile yapılmış bir devre var
http://www.electronics-lab.com/projects/games/005/index.html
rgb şerit sürmede kullanabilirsin.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

ete

RGB şerit ledler de bir ortak uç (+12V) bir R (kırmızı) ucu bir G (Yeşil)  ucu ve birde B (Mavi)  ucu bulunmaktadır.  Uçların açıklamalarından da anlaşılacağı üzere ortak uca +12V verip  renk uçlarında bir PWM devresi üzerinden GND sağlarsanız sistem istediğini şekilde çalışır. Tabiiki iin doğrusu 3 adet PWM çıkışı olan bir devre yapmanızdır. Bunu yazılımla yapabileceğiniz gibi donanımsal olarak 3 PWM çıkışı olan bir pic (16F777) kullanarakda yapabilirsiniz. Gerisi artık sizin hayal gücünüze kalmıştır. Bu tür sistemlerde ara geçişlerde bir renk cümbüşü pek çıkmamaktadır. En ideal renkler maksimum PWM değerleri ile Min PWM değerleri arasında yakalanmaktadır.

Şerit ledler genelde 3 erli guruplar halinde paralel bağlandıkları için pic pini direk olarak şerit ledi süremez.
Arada mutlaka bir transistör yada ULN serisinden bir entegre kullanılması gerekir . Bunu ihmal etmeyin.

Ete



mitec

#3
ne kadar oldu bilmiyorum ama çok eskiden yaptığım rgb animasyon programı.şimdi yeniden inceledim de program yazma mantığım bayağı bi kötüymüş... herhalde ilk zamanlar yaptığım çalışmalardan birisi istersen üzerinde biraz oynama yaparak daha güzel hale getirebilirsin.yinede bu haliylede oldukça güzel çalışıyor.
'**************************************************************** @   device  pic12F675, intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_on '--------------------------------------------------------------------------------- DEFINE OSC 4 DEFINE OSCCAL_1K 1  DEFINE OSC 4 CMCON = 7 ansel=0 TRISIO=%101000 '-------------------------------------------------------------------------     duty VAR BYTE     bekle VAR BYTE     a VAR BYTE     hiz VAR BYTE     but VAR BYTE     sayi VAR BYTE     z VAR BYTE'------------------------------------------------------------------------mavi VAR GPIO.0kirmizi VAR GPIO.1yesil VAR GPIO.2kirmizi=1:mavi=1:yesil=1'------------------------------------------------------------------------Read 0,butIF but=255 Then but =0'------------------------------------------------------------------------ana: IF but=0 Then GoTo basla IF but=1 Then hiz=1:Call bir IF but=2 Then Call iki IF but=3 Then Call uc IF but=4 Then hiz=5:Call bir IF but=5 Then sayi=4:Call ortak IF but=6 Then sayi=5:Call ortak IF but=7 Then sayi=6:Call ortak IF but=8 Then sayi=7:Call ortak IF but=9 Then sayi=8:Call ortak IF but=10 Then sayi=9:Call ortak IF but=11 Then sayi=10:Call ortak IF but=12 Then Call onbir IF but=13 Then Call oniki IF but=14 Then Call onuc IF but=15 Then Call ondort IF but=16 Then bekle=35:Call onbes 'IF but=17 Then Call onalti GoTo anabasla: hiz=1:Call bir Call iki Call uc hiz=5:Call bir sayi=4:Call ortak sayi=5:Call ortak sayi=6:Call ortak sayi=7:Call ortak sayi=8:Call ortak sayi=9:Call ortak sayi=10:Call ortak Call onbir Call oniki Call onuc Call ondort bekle=35:Call onbes 'Call onalti GoTo basla'------------------------------------------------------------------------ bir:    For duty=255 to 0 step-1   PWM kirmizi,duty,hiz   Call butonbak    Next duty        Low GPIO.1    For duty=255 to 0 step-1   PWM yesil,duty,hiz   Call butonbak    Next duty         Low GPIO.2    For duty=0 to 255   PWM kirmizi,duty,hiz   Call butonbak    Next duty    High GPIO.1:Low GPIO.2     For duty=255 to 0 step-1   PWM mavi,duty,hiz   Call butonbak    Next duty    Low GPIO.0         Low GPIO.2    For duty=0 to 255   PWM yesil,duty,hiz   Call butonbak    Next duty     Low GPIO.0:High GPIO.2         For duty=255 to 0 step-1   PWM kirmizi,duty,1   Call butonbak    Next duty    Low GPIO.1     For duty=0 to  255   PWM mavi,duty,hiz   Call butonbak    Next duty    Low GPIO.1:High GPIO.0        For duty=255 to 0 step-1   PWM yesil,duty,hiz   Call butonbak    Next duty    Low GPIO.1:Low GPIO.2        For duty=255 to 0 step-1   PWM mavi,duty,hiz   Call butonbak    Next duty    Low GPIO.0:Low GPIO.1:Low GPIO.2    Pause 200     High GPIO.0:High GPIO.1:High GPIO.2          Return    iki: For bekle=200 to 100 step-5 mavi=0:kirmizi=0:yesil=0 Pause bekle Call butonbak mavi=0:kirmizi=1:yesil=1 Pause bekle Call butonbak mavi=1:yesil=0:kirmizi=1 Pause bekle Call butonbak mavi=1:yesil=1:kirmizi=0 Pause bekle Next bekle Call butonbak Returnuc: For a=0 to 7 For bekle=0 to 8 mavi=0:kirmizi=1:yesil=1:Pause 25 mavi=1:kirmizi=1:yesil=1:Pause 25 Call butonbak Next bekle For bekle=0 to 8 mavi=1:kirmizi=0:yesil=1:Pause 25 mavi=1:kirmizi=1:yesil=1:Pause 25 Call butonbak Next bekle Next a Returnortak: For a=0 to 100 IF sayi=4 Then GPIO=24 IF sayi=5 Then GPIO=30 IF sayi=6 Then GPIO=29 IF sayi=7 Then GPIO=27 IF sayi=8 Then GPIO=26 IF sayi=9 Then GPIO=25 IF sayi=10 Then GPIO=28 Call butonbak Pause 40 Next a Returnonbir: For bekle=0 to 5 For a=0 to 4 GPIO=30:Pause 20:GPIO=31:Pause 20 Next a Call butonbak For a=0 to 4 GPIO=29:Pause 20:GPIO=31:Pause 20 Next a For a=0 to 4 GPIO=27:Pause 20:GPIO=31:Pause 20 Next a For a=0 to 4 GPIO=26:Pause 20:GPIO=31:Pause 20 Next a Call butonbak For a=0 to 4 GPIO=25:Pause 20:GPIO=31:Pause 20 Next a For a=0 to 4 GPIO=28:Pause 20:GPIO=31:Pause 20 Next a Next bekle Returnoniki:     High GPIO.0:High GPIO.1:High GPIO.2       For duty=255 to 0 step-1     PWM GPIO.0,duty,4     Call butonbak    Next duty        For duty=0 to 255     PWM GPIO.0,duty,4     Call butonbak    Next duty        Returnonuc:     High GPIO.0:High GPIO.1:High GPIO.2       For duty=255 to 0 step-1     PWM GPIO.1,duty,4     Call butonbak    Next duty        For duty=0 to 255     PWM GPIO.1,duty,4     Call butonbak    Next duty        Returnondort: GoSub hep       For duty=255 to 0 step-1     PWM GPIO.2,duty,4     Call butonbak    Next duty        For duty=0 to 255     PWM GPIO.2,duty,4     Call butonbak    Next duty        Returnonbes: For z=0 to 10 bekle=bekle-5 IF bekle<10 Then bekle=8 For a=0 to 50 Low GPIO.0 Call butonbak Pause bekle Next a For a=0 to 50 High GPIO.0:Low GPIO.1 Call butonbak Pause bekle Next a For a=0 to 50 High GPIO.1:Low GPIO.2 Call butonbak Pause bekle Next a High GPIO.2 Next z Return'-------------------------------------------------------------' animasyonlar terslenerek yapıldı o yüzden 16. animasyon programa sığmıyor'onalti: ' For bekle=0 to 5' For a=0 to 7' GPIO=7-a' Call dur' Call butonbak' Next a ' For a=7 to 0 step-1' GPIO=7-a' Call dur' Call butonbak' Next a' Next bekle ' Returndur: Pause 200 Return butonbak: IF GPIO.3= 1 Then Call yap Returnyap: GoSub hep Pause 1000 but=but+1 IF but=17 Then but=0 Write 0,but GoTo anahep: High GPIO.0:High GPIO.1:High GPIO.2 Return               end


ledleri mosfetle sürmüştüm.fakat 3m ledten fazlası ısınma yapıyordu.bende mosfetlerin girişini sanırım 4.7k ile + da tuttmuştum. yani pic çıkışı 1 iken mosfet kesimde 0 iken mosfet yalıtımda oluyordu.(tabi arada birde npn transistör var)böylece mosfetin ısınmasınıda engellemiştim.yanılmıyorsam 15m rgb ledle denemiştim.hiç bi sorun çıkmamıştı
gp3 ve gp5 teki direçler direnç değil buton birisi hız biriside animasyon seçim butonu çizime direnç gibi koymuşum elimde minik butonlar vardı sanırım smd direç yerine tam oluyordu onun için.
eagle çizimide aşağıda

sahinler64

hepinize ayrı ayrı teşekkür ederim. allah razı olsun

Powered by EzPortal