Buton ile led yakmak :)

Başlatan demket, 15 Haziran 2009, 18:19:18

demket

Herkese kolay gelsin. Kafam karıştı, işin içinden çıkamadım. Mecburen soruyorum.

pic 16f84a ve 16f628a ve de jal ile butona basıldığında yanan led yapmaya çalışıyorum.

pin_a0 (RA0) a butonu bağladım. pin_b7 (RB7) ye de led i. Butona basınca led yandı ama...

1) Butona ilk basışta led sönük yanıyor, birkaç saniye sonra parlak yanmaya başlıyor (?).

2) 4,5V beslediğim pic in pin_b7 (RB7) çıkışında 2,4V; 6,2V ile beslediğimde de 2,6V gibi bir değer okuyorum. Led parlak bir şekilde yanmıyor (?). Hatta direnç koymaya bile gerek kalmıyor.

Preteus isis de buton kullandığımda da (tarih-saat ayarlamak için) bas-bırakta tarihi (veya saat vb..) değiştirmiyor. 2-3 basbıraklık zamanda basılı tutarsam değiştirmeye başlıyor.


Bir türlü anlamadım.

Yardımlarınızı bekliyorum.


-- kodlar burada
include 16f628_4
include jlib

disable_a_d_functions
port_b_direction = all_output
pin_a0_direction = input
port_b = 0

forever loop

     if pin_a0 then
       pin_b7 = high
     end if

end loop

gevv

#1
Verdiğiniz kodlar üzerinde bir kaç değişiklik yaptım sanırım istediğiniz gibi oldu ao portundaki butona basınca b7 portundaki led yanıyor değişiklik ise \"then\"  yerine  \"== high then\" eklemek oldu

-- kodlar burada
include 16f628_4
include jlib

disable_a_d_functions
port_b_direction = all_output
pin_a0_direction = input
port_b = 0

forever loop

     if pin_a0 == high then
       pin_b7 = high
     end if

end loop

Benim programlama bilgim yok ama uğraşıyorum her dile el attım en son JAL kalmıştı :) onun içinde \"Jal ile pic programlama (Serkan AYYILDIZ) kitabını  almıştım sizede tavsiye ederim kitapta örnek 5.3  yazılımını inceledim jal oparatörlerini öğrenmeniz gerekli

Oparatör: ==  Açıklaması: Eşit Kullanıldığı değişken tipleri: Bit ve byte  Türü: Karşılaştırma

demket

\"if pin_a0 == high then\" ile  \"if pin_a0 then\" bildiğim kadarıyla aynı anlama geliyor.

İkisini de test ettim. İşin garibi bir şey daha dikkatimi çekti. Butona bastığımda sadece b7 (RB7) değil bütün bacaklara çıkış veriyor.

\"port_b_direction = all_output\" yerine \"pin_b7_direction = output\" yaptım ama durum hala aynı.

Nerede hata yaptığımı bir türlü analamadım.

gevv

Sanırım simülasyonda hata var benim denediğim isis simülasyon dosyası ve kodlar burada

demket

#4
3 değişik kod hazırladım. Hem isis de hemde gerçek hayatta denedim. Bütün kodlar aynı işi görüyor. Hatalardaysa sonuç aynı.

Özetle gözlemlediğim problemler şunlar:

1) Butona basınca bütün bacaklara çıkış veriyor, sadece RB7 değil.

2) çıkış gerilimi düşük (4,5V giriş - 2,4V çıkış; 6,2V giriş - 2,6V çıkış gibi.) 6,2V giriş ile daha parlak yanıyor ama yine de yetersiz.

3) Butona ilk basışta 4,5V giriş vermişim gibi sönük yanıyor. 1-2 saniye basılı tutunca veya 2-3 kez butona basınca normal yanmaya başlıyor. Ona da normal denirse.

Bir türlü anlamadım. Benim programlayıcı mı hatalı bir şeyler yapıyor yoksa anlayamadım.


-- 1nolu

include 16f628_4
include jlib

disable_a_d_functions
pin_b7_direction = output
pin_a0_direction = input
port_b = 0

forever loop



     if pin_a0 == high then
       pin_b7 = high
       delay_1s
    end if

pin_b7 = low
 
end loop


-- 2nolu

include 16f628_4
include jlib

disable_a_d_functions
port_b_direction = all_output
pin_a0_direction = input
port_b = 0

forever loop



     if pin_a0 then
       pin_b7 = high
    end if


 
end loop


-- 3nolu
include 16f628_4
include jlib

disable_a_d_functions
port_b_direction = all_output
pin_a0_direction = input
port_b = 0

forever loop



     if pin_a0 then
       pin_b7 = high
       delay_1s
    end if

pin_b7 = low
 
end loop

bahtiyar

demket gevvin verdigi dosyaya baktınızmı https://320volt.com/wp-content/uploads/2009/06/test.rar

sizin istedigiiniz gibi çalışıyor butona basınca led yanıyor diger çıkışalrdaki ledler yanmıyor sadece istenen led normal prlak yanıyor belki isis programınız bozulummuştur pik devrenizde entegrenizde sorun vardır
veni...vidi...vici..bici...

demket

#6
Evet baktım. İsisde ben de daha öncesinde yapmıştım zaten. İsisde düzgün çalışıyor.

Bu üç kodun herbirini ayrı 16f628A lara yükledim. Yani chiplerden biri arızalı olsa diğeri düzgün çalışır. Hatta ayrı yerlerden aldığım chipleri kullandım.

Devrede ne gibi bir hata böyle bir sonucu doğurabilir ki...

Hızlı Yanıt

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.

Adı:
E-Posta:
Doğrulama:
Lütfen bu kutuyu boş bırakın:
IRFP250 Nedir:
kısayollar: göndermek için alt+s veya önizleme yapmak için alt+p'ye basın