Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

picbasic le led animasyon

Başlatan yesilxx, 19 Haziran 2008, 22:38:19

yesilxx

selam arkadaşlar picbasic le uğrağmaya yeni başladımilk önce buton led devrelerini yaptım çalıştırdım sonra yürüyen ışık yaptım devamında değişik kombinasyonlar denemek istedim ama başaramadım

yapmak istediğim portb.0 dan portb.7 ye kadar olan 8 adet ledi ilk olarak 2 şer ikişer önce sola sonra sağa kaydırmak, tamalandıktan sonra tek haneli 4 bit yanacak sonra çift haneli dört bit yanacak sonra hepsi sönüp yanacak ve bu tekrar edip gidecek ama tam olarak çalıştıramadım kodlar aşağıda

TRISB = %00000000
PORTB = %00000011

PAUSE 500
PORTB = PORTB <<2
IF PORTB =%11000000 then PORTB=PORTB >>2
PAUSE 100
PORTB = %10101010
PAUSE 100
PORTB = %01010101
PAUSE 100
PORTB = %10101010
PAUSE 100
PORTB = %01010101
PAUSE 100
PORTB = %11111111
PAUSE 100
PORTB = %00000000
PAUSE 100
PORTB = %11111111
PAUSE 100
PORTB = %00000000
END

burada nasıl bi düzenleme yapmam lazım acaba ?

nurican

ya merak ettimde tek haneli 4 bit yanacak çift haneli 4 bit yanacak ne demek :??
Bir yerde küçük insanların büyük gölgeleri oluşuyorsa orada güneş batıyor demektir.....

yesilxx

PORTB = %01010101
PAUSE 100
PORTB = %10101010

yani böyle demek istedim, 1 3 5 7 sıradaki ledlar yanacak sonra 2 4 6 8 sıradaki ledler yanacak

Logan

Programını şu şekilde yazsaydın çalışırdı;

PORTB=0  :  TRISB=0

i var byte

pause 500  :  goto loop

loop:
portb=3    :  pause 100
       for i=0 to 2
          portb= portb << 2
          pause 100
       next i
portb=%01010101  :  pause 100
portb=%10101010  :  pause 100
portb=$ff  :  pause 100
portb=0    :  pause 100
portb=$ff  :  pause 100
portb=0    :  pause 100
goto loop


Yukarıda yazılı olan programa dikkat edecek olursan, bütün işlem bittikten sonra program "loop" etiketine gidiyor ve aynı işlemi sürekli devam ettiriyor. Umarım anlaşılmıştır. İyi çalışmalar...
İmza.

yesilxx

logan usta yardımın için teşekkür ederim, ben burada if then komutlarını anlamaya çalışmak için bu işi yapmaya çalışıyordum ama siz burada var byte olarak değişken tanımlayarak bu işi yapmışınız kafam biraz daha karıştı

siz burada  i var byte derken tanımladığınız değişken neyi ifade ediyor acaba bu uygulamayı denerken aynı zamanda pic basic derslerinede bakıyorum ama tam olarak programın işleytişini anlayabilmiş değilim bu programı biraz daha açıklayarak örnek verebilirmisiniz şimdiden yardımlarınız için teşekkürler

Logan

if-Then komutu, belli bir şarta veya şartlara bağlı olarak programın akışını değiştiren bir komuttur.

Örnek;

 if portb.0=1 then  ==> B portunun 0. biti "1" ise
    'Buradaki komut satırını işler.
  else  ==> B portunun 0. biti "1" değilse
    'Buradaki komut satırını işler.
  Endif  ==> Burada komut biter.


Ya da önemli olan sadece B portunun 0. bitinin "1" olma ihtimali ise;

if portb.0=1 then  ==> B portunun 0. biti "1" ise
    'Buradaki komut satırını işler.
  Endif  ==> Burada komut biter.


   For....Next komutu ise verilen değerler doğrultusunda programı olasılık gerçekleşene kadar burada tutar.

Örnek:

sayac var byte  ==> "sayac" isimli, byte cinsinden bir değişken atadık.

For sayac=0 to 9
  " Buradaki program, "sayac" değişkeni "10" değerini alana dek işlenir.
next sayac  ==> "sayac" registerinin değeri 1 arttırılır ve program tekrar "for" satırına döner.


Yukarıdaki örnek programın çalışması şu şekildedir; byte olarak atamış olduğumuz "sayac" değişkeni, for satırında 0 değerini alarak komutu işlemeye başlar. "Next" satırında ise değişkenin değeri "1"arttırılır ve program tekrar "for" satırına döner. Bu işlem kullandığımız değişkenin değeri "9" olana dek devam eder. Fakat unutulmaması gereken konu şudur, programın  for...next komutunu bitirmesi ve arasındaki komutları işlememesi için değişkenin "10" değerini alması gerekir. Yani "sayac" registerimiz 9 olduğu esnada, for satırı bir kez daha işlenir. Umarım açıklayıcı olmuştur...

Not: Yukarıda anlatılanlardan ziyade, sitemizde sayın @Ete'nin pic basic dersleri bulunmaktadır. Çok faydalı bir kaynaktır, çalışmalarına bu kaynaktan devam etmeni tavsiye ediyorum.
İmza.

yesilxx

usta burada for i=0 to 2 derken neyi ifade ediyoruz, yani i değişkeni 0 dan 2 ye kadar sayması neyi sağlıyor 2 şer kaymayı anladığım portb<<2 sağlıyor ama bu for i=0 to2 nin ne olduğunu anlayamadım bu konuda bi açıklama yaparsan sevinirim, belki sorduğum size göre çok basit ve anlamsız gelebilir ama ben şu an yeni başladığım için bazı yerleri bağdaştıramöıyorum şimdiden teşekkürler

loop:
portb=3    :  pause 100
      for i=0 to 2
         portb= portb << 2
         pause 100

OG

ETE'nin Pic Basic Pro Derslerinden başlayın. Forumda bulabilirsiniz.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Logan

Bu komut, i değişkenini 0'dan başlayarak 2'ye kadar arttırır. Bu esnada for ile next arasındaki işlemler 3 defa tekrar edilmiş olur. i registerinin aldığı değerler sırasıyla 0-1-2'dir. Eğer komutu şu şekilde yazsaydık;

for i=0 to 8 step 2
  'İşlenmesini istediğimiz komutlar.
next i


i registeri 0'dan 8'e kadar her döngüde değerini 2 arttırarak sayacaktı. Aynı şekilde -2'de diyebilirdik.

@yesilxx, bir önceki mesajımda belirttim fakat yine irdelemek istiyorum. @ete hocanın derslerini mutlaka indir ve çalışmalarına bu dersler üzerinden devam et.
İmza.