32 Pin Algılama

Başlatan M_B, 12 Kasım 2015, 10:15:42

M_B

Merhabalar;
32 adet butonun durumunu ( Basılı veya  değil bir kac tuş birden basılıda olabilir )  algılamam için nasıl bir entegre kullanmalıyım.
40 Pinli bir 18 serisi Pic isimi gormuyor. cunku 10 pini ni başka işlem için kullanacağım.

Not olarak: Program algoritmasıni nasıl kurmalıyım.
Ornek:
1 den 32 ye kadar olan tuşlardan  4-10-16-24-18 numaralı tuşlar basılı diyelim
bu basılı olan tuşları ekrana yansıtacam. Burda switch case yapısı kurar isem 2 üzeri 32 farklı secenek mevcut.
Hepsini tek tek yazmam mı lazım kolay yolu yokmudur. Farklı algoritma ?
Ornek :
      switch(x)
            {
            case 0 :  Text="0";  ; break;  
            case 1 :  Text="1"; ; break;
            .
            .
			.
			
            case n :  Text="n";  ; break;
            } // svitch sonu
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Murat Mert

S.A.
Sn. M_B mcp23s17 yada 23017 entegrelerinde inta ve intb çıkışları var bunlar ile int kesmesi yaparak pic'e okutabilirsiniz.
mert07

Kabil ATICI

ilk olarak bayt olarak bak, pull down veya pull up durumuna göre, her baytı basılmamış durumuna göre incele, eğer durum basılmamış durumuna göre farklı ise, bit bit incele...
Böylece basılmamış durumunu  4 adımda inceleyebilirsin. Buton basılmışsa o zaman iş uzamış olur...

Burada if 'li yapı daha uygun olur. her seferinde başa sarmadan işlem yaptırabilirsin.. Sadece seni uğraştırır.
ambar7

Goo

Merhabalar,

Tuşlarınızın durumunu 32 bitlik bir veri tipinde 1-0 şeklinde saklayabilirseniz; şöyle bir döngü işe yarar diye düşünüyorum:

Text="";
for(i=0;i<32;i++)
{
	if((number_status>>i)&0x0001)
		Text=Text+(string)(i+1);  // 
}

Gökhan BEKEN

Tarama yöntemi ile daha az pin kullanabilirsiniz. Yani 100 buton lazım olsa 100 tane pin'li PIC mi bulmaya çalışacaksınız?
Özel mesaj okumuyorum, lütfen göndermeyin.

M_B

Alıntı yapılan: Gökhan BEKEN - 12 Kasım 2015, 10:49:11
Tarama yöntemi ile daha az pin kullanabilirsiniz. Yani 100 buton lazım olsa 100 tane pin'li PIC mi bulmaya çalışacaksınız?
@gokhan Hocam;
Tarama yöntemi derken  Keypad şeklinde mi  ?
Biraz açabilirmisiniz.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Gökhan BEKEN

Evet aynen hocam, keypad gibi matrix buton şeklinde yapabilirsiniz.


Hatta biraz abartıp böyle bir şey de yapabilirsiniz:
Özel mesaj okumuyorum, lütfen göndermeyin.

mehmet

#7
Alıntı yapılan: Murat Mert - 12 Kasım 2015, 10:37:26
S.A.
Sn. M_B mcp23s17 yada 23017 entegrelerinde inta ve intb çıkışları var bunlar ile int kesmesi yaparak pic'e okutabilirsiniz.
2x8 port ile 64 butona kadar kullanmak mümkün olacaktır.

Hatta PS/2 klavye ile bile bir şeyler yapılabilir...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

ahmet_zxc


OG

6+6 pin ile matrix tarama 6*6 = 36 buton yapar.
Butonlarla kesme türü işlerin yoksa rahatlıkla kullanabilirsin.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

M_B

Hocalarım Yalnız bir şeyi soylemeyi unuttum :(
Butonlar uzakta olacak 50-60metre gibi.
Benim düşüncem şöyleydi. Butonlara iki kablo gidecek kablonun bir ucunda +12V diğer ucu ise İşlemciye girecek
gerilim bölücü ile  ( Pic giriş pinine H seviyenin altında kalmayacak şekilde direnc hesabı yaparak )
Bu düşündüğüm yöntemde Taramalı sistem kullanamam.

Bu seçeneğe göre ne yapabilabilinir.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

OG

50-60 metre öteden portları değil analog, digital bile okusan devre gürültüler sebebiyle saçmalar.

Butonların olduğu yere ayrı bir devre kur, butonları o devre ile sens et, RS485 ile ana devreye şutla gitisin.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

muhittin_kaplan

Uzaktaki butonlarin yanina 6x6 matrix i okuyabilen bir islemci koyar ve bu okudugu bilgiyi rs485 ile yollar. Sen bu seri bilgiyi baska bir islemci ile alirsin 2 hatla halledersin.

M_B

Alıntı yapılan: OG - 12 Kasım 2015, 16:19:13
50-60 metre öteden portları değil analog, digital bile okusan devre gürültüler sebebiyle saçmalar.

Butonların olduğu yere ayrı bir devre kur, butonları o devre ile sens et, RS485 ile ana devreye şutla gitisin.
Hocam önce bende sizin gibi düşündüm ama sonra öğrendim ki tuşlarda bir birlerinden ayrı 5-10 metre arayla.
Uygulama şöyleymiş.
Merkezi bir  Banko  var.
ve 32 adet te merkezi yerden uzak bankolar var. Bankolarda kendi aralarında 5-10metre aralıklı
Burda amac hangi bankonun düğmeye bastığını merkezi yerdeki kişinin görmesi.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Murat Mert

#14
Alıntı yapılan: OG - 12 Kasım 2015, 16:19:13
50-60 metre öteden portları değil analog, digital bile okusan devre gürültüler sebebiyle saçmalar.

Butonların olduğu yere ayrı bir devre kur, butonları o devre ile sens et, RS485 ile ana devreye şutla gitisin.

aynen end. uygulama olacaksa 485 yada canbus tarama ile halledersin. Bu arada 6*6 taramayı denemem lazım :)

mesaj birleştirme:: 12 Kasım 2015, 16:33:06

ben yazarken yazmşsınız. O zaman 32 ad slave  yada yakındaki 2-3 bankoyu birleştir.
mert07