A

PWM İLE KARAŞİMŞEK

Başlatan ATE, 16 Kasım 2012, 22:19:27

ATE

16F628 PWM İLE KARAŞİMŞEK NASIL YAPABİLİRM YARDIMCI OLURMUSUNUZ

ete

Kaç tane led kullanmak istediğini belirtmemişsin.?
628 de 8 bitlik B portu var 8 led bağlanabilir.
A portundan 0-1-2-3 - 6 - 7 nolu pinleri kullanabilirsin
Tabiiki A portu atlamalı gittiği için uygulaması zor olacaktır.
Başlangıç olarak aynı anda kaç adet ledin yanık kalacağına karar vermelisin.
Bunu tespit ettikten sonra sıra led pinlerini tanımlamaya gelecektir.
Kara VAR WORD şeklinde bir Word değişkeni tanımla.
Daha sonra
SYMBOL kara.0=portA.0
Symbol Kara.1=PORTA.1
Symbol Kara.2=PORTA.2
Symbol Kara.3=PORTA.3
Symbol Kara.4=PortA.6
Symbol Kara.5=PORTA.7
Symbol Kara.6=PORTB.0
Symbol Kara.7=PORTB.1
Symbol Kara.8=PortB.2
Symbol Kara.9=PORTB.3
Symbol Kara.10=PORTB.4
Symbol Kara.11=PORTB.5
Symbol Kara.12=PORTB.6
Symbol Kara.13=PORTB.7
şeklinde Kara isimli değişkenin bitlerini ilgili port pinlerine ata.
Şimdi diyelimki aynı anda 4 adet Led yanık kalacak. 4 adet led in hepsi on olursa bunun binary karşılığı 15 dir.
O halde KARA=15 ile işe başlaman gerekiyor.
Daha sonra biraz bekleme verip bir bit sola kaydırabilirsin. Yani KARA=KARA<<1 böylece yanan ledler 1 hane sola kayar.
Bu işlemi ledlerin konumu %1111 0000 0000 0000 oluncaya kadar devam edersin. Bu aşamada sona gelmişsin demektir.
Bu sefer sistemi geri kaydırırsın. Taaki Kara=15 oluncaya kadar. Sonra tekrar geri döndürürsün. Yani Kara=Kara>>1.
Olay budur.
Ete



pwm.c

Hazır devre arayan varsa şu sitede ATtiny2313 ile yapılmış bir örnek var:
http://www.evilmadscientist.com/2009/the-larson-scanner-kit/
bunun için ATMEL programlayıcı gerekiyor. bilgisayarınızda seri port varsa çok basit bir devre ile PonyProg programıyla işi halledebilirsiniz.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

ATE


ATE

YALNIZ SYMBOL KARA.0=PORTB.0 YAZDIĞIMDA BU SEKİLDE Bİ HATA VERİYOR

ERROR Line 26: Redefinition of SYMBOL. (KARAŞİMŞEK.pbp)


ete

Belliki bir sembol ismini 2 defa kullanmışsın.
Ete

ATE

ete hocam 16f84a ile 8 bit lik bir kuyruklu karaşimşek nasıl yapabilirm uğrastım fakat pek birşey yapamadım yardımcı olursan çok sevinirim

ete

16f84 ile ancak kuyruksuz olanını yapabilirsin. Bu işlemci eski nesil işlemcilerden olup gerek hafıza ve gerekse timer özellikleri açısından bu iş için uygun değildir.

Ete

ATE

elimde pic16f628 var ve AŞAĞIDAKİ GİBİ BİR KARA ŞİMŞEK YATIM AMA BUNU KUYRUKLUSUNU NASIL YAPABİLİRİM ?:S

TRISA=0
TRISB=0
PORTB=0
PORTB=%10000000

SAG:
PAUSE 50
PORTB=PORTB>>1
IF PORTB=%00000001 THEN SOL
GOTO SAG

SOL:
PAUSE 50
PORTB=PORTB<<1
IF PORTB=%10000000 THEN SAG
GOTO SOL
END

ete

Kuyruk dediğimiz olay her bir Port pinine değişik oranda PWM uygulanması anlamına geliyor.
Sen şu anda tek ledi hareket ettiriyorsun.Kuyrukluda en az 3 adet en fazla 5 adet led sağa sola hereket edecek ve ilk yanan led %100 duty değerini alacak. Sonra peşinden gelenler kademeli olarak aşağı değerlerde Duty değeri alacaklar.
Yazdığın programla mukayese edilirse sen daha İlkokul birdesin kuyruklusunu ancak Üniversitede yapabilirsin diyebilirim.
Detayı anlatsamda anlamayacağından eminim . En iyisi tahsile devam etmen. Böylece önce aynı anda birden fazla led kaydırmayı öğrenir ardından bütün port pinlerine nasıl PWM uygulanır onu öğrenmeye çalışır sonrada bunları kaydırarak nasıl kuyruk imajı yaratırım onu bulursun. Epeyce yolun var anlaşılan.

Ete


ATE

BİRDEN FAZLA LED KAYDIRMA YAPIORUM ORADA SORUN YOK BEN SADECE BUNA İLEVETEN NE GİBİ FARKLILIKLAR YAPMAM GEREK HOCAM .?

tuncay37

Alıntı yapılan: ete - 16 Kasım 2012, 23:57:52
Kara VAR WORD şeklinde bir Word değişkeni tanımla.
Daha sonra
SYMBOL kara.0=portA.0
Symbol Kara.1=PORTA.1
Symbol Kara.2=PORTA.2
Symbol Kara.3=PORTA.3
Symbol Kara.4=PortA.6
Symbol Kara.5=PORTA.7
Symbol Kara.6=PORTB.0
Symbol Kara.7=PORTB.1
Symbol Kara.8=PortB.2
Symbol Kara.9=PORTB.3
Symbol Kara.10=PORTB.4
Symbol Kara.11=PORTB.5
Symbol Kara.12=PORTB.6
Symbol Kara.13=PORTB.7

Ete

üstadım. dediğin tanımlamayı bu şekilde bir türlü yapamadım. her türlüsünü denedim ama sürekli hata veriyor.
symbol kara lowbyte.0=porta.0      şeklinde de denedim olmadı.

Powered by EzPortal