Butona 5 kere basılınca bir tane çıkış çalıştırma yardım

Katılım
2 Tem 2013
Mesajlar
11
Puanları
1
Arkadaşlar tıpkı plc de counter kullandıgımız zaman counterın degerini karşılaştırıp çıkış verdirdiğimiz gibi pic de de yapabilir miyiz?

Mesela 2 kere basıldıysa git şu işi yap, 7 kere basıldıysa şuraya git gibisinden. Yapılırsa nasıl yapılır yardımlarınızı bekliyorum arkadaşlar.
 
böyle bır devreyı yazılım olmadan lojik olarakta yapabılırsın tavan 7 ise mültipleks entegre 4051 ıle 16 kademe ıstersen cd4514 ıle yapabılırsın girişine ılerı gerı sayıcı yanılmıyorsam cd4510 ıle ılerı gerı ıstenılen kademeyı seçebılırsın
 
tekin126 usta ne dedin hiç anlamadım ben daha dün başladım pic denen şeye kafa yormaya, plc mantığıyla çalıştırıp oyle işlemler yaptırabilir miyim onu deniyorum :))

Eğer bir örnek verebilirsen çok sevinirim. Mesela;

PORTA'nın sıfırıncı bitine 2 kere +5V uygulandıgında PORTB'nin sıfırıncı biti HIGH olsun diye. Bunun basicde yazılmış hali çok işime yarar mantıgını kavramam için
 
Hangi dilde istiyorsunuz?
Tekin bey lojik entegrelerle yap niye boşa harcıyosun pici demiş.

Yazmışdım ki sonradan basicte kısmını basitçe olarak okuduğumu farkettim.

Birçok şekilde yazılabilir,
basic kullanmadım ama mantık şöyle,

giriş pininin durumunu kontrol et
1 ise (+5V) sayac değişkenini 1 arttır,
sayac değişkenini kontrol et
5 olmuşsa çıkış ledini yak

ccs c için

int sayac=0;

while(1)
{

if( bit_test(pin_A0) ) //a0 pini 5 v olursa
{
sayac=sayac+1; // sayac değişkenini 1 arttır
if(sayac==5) // sayac değişkeni 5 olursa
{
output_high(pin_B0); // b0 çıkışını 5 V yap
}
}

}
 
Son düzenleme:
Basic için ;

basla :

if PORTA.1=1
sayac=sayac+1; // sayac değişkenini 1 arttır
while PORTA.1=1 wend
endif

if sayac=5
PORTB.0=1
pause 1000
PORTB.0=0
sayac=0
endif

goto basla
 
Son düzenleme:
karaapak; emrelyus; çok teşekkürler arkadaşlar... Yani mantık şöyle oluyor sanırım;
İlk önce bir değişken atıyoruz, daha sonra herhangi bir pinin durumuna göre sayacımızı istediğimiz sayı kadar arttırıp istediğimiz sayı kadar azaltabiliyoruz.
Daha sonrasında ise karşılaştırma yaparak işimizi yapıyoruz.
 
Temel mantık evet böyle,
düşünsek başka mantıklarda çıkabilir.
Birde yazdığım program verimli çalışmaz,
çünkü butona basılınca, buton arkı denen olay olur,
yani basılma esnasında, 10mikrosaniyeler içerisinde buton sürekli 1-0 olur,
bunun için buton kontrolü esnasında kısa beklemeler ve butonun bırakılması kontrolü uygulanır,
program anlaşılır olsun diye bunları yazmadım,
bunlar yazılmadığında,
program sürekli butonu kontrol edip, sayacı arttırdığından,
butona 1 defa basınca daha fazla arttırma yapabilir,
ayrıca 5 den sonra sayacı sıfırlamadık,
daha sonra butona basılırsa ne yapılacağı söylenmediği için program öyle kaldı,
led artık sönmüyor benim yazdığım programda.
 
[MENTION=207448]karaapak[/MENTION]; Amacım zaten temelde mantığı öğrenmekti bir iş için bir program yazmıyorum yeni başladım nasıl olur nasıl yapılır onu çözmek amacındayım..
Şuan elimde pic yok sadece isiste deniyorum yaptığım devreleri orda bir sorun olmuyor. Ama dediğin gibi uygulamada sorunlar çıkabilir programın mantıklı çalışması için geciklemeler uygulanabilir onlarıda uygulamaya geçtiğimde daha iyi anlarım kanaatindeyim :)

Butona basıldığı zaman ne olacağı, sayacın kaçta sıfırlanacağı gibi şeyleri if komutlarıyla ben bir şeyler yapmaya çalıştım tam olarak yapmak istediğim şeyi yapayım dosyaları burada paylaşacağım, kolay gelsin :)
 

Forum istatistikleri

Konular
129,842
Mesajlar
930,701
Kullanıcılar
452,685
Son üye
rahmandogan

Yeni konular

Geri
Üst