Yüklediğim dosyayı Kudret hocamız küçük ve öğretici çalışmalar başlığı altında paylaşmıştı sağolsun.İnceleyin takıldığınız yeri sorarsınız.
Öncelikle herkese Slm;
Ben ufak bir proje yapıyorum ve bu projemdeki temel malzemeler;
2X16f84a
Lcd2x16
4x3 Keypad
433 Mhz RF
Burdaki amaç Verici devresindeki Keypadi Okuyup Rf ile Alıcıya gönderip Çözümlemesi yapılıp Lcd Görmek.
Normalde 8 Kanal 12 kanal Led kontrol yapabiliyorum Sorun yok. Ama Beni Zorlayan kısım Keypad i tarama yöntemiyle tarayıp Örn:1,12,125,40,52 gibi sayıları Alıcıya göndermek istiyorum Bunun hakkında sizlerden yardım almak istiyorum .Nette araştırdım ama detaylı bir sonuç alamadım.Bu konuda Nasıl bir kod yada nasıl bir Yöntem kullanmalıyım yardımcı olursanız çok sevinirim.Açıklay güzel bir örnekle anlatırsanız çok sevinirim.
HayaT Bir OyunSa,BenDe JeTon Coq...
Yüklediğim dosyayı Kudret hocamız küçük ve öğretici çalışmalar başlığı altında paylaşmıştı sağolsun.İnceleyin takıldığınız yeri sorarsınız.
yanlız ben pic basic biliyorum Pbp dosyasını paylaşırmısınız,
HayaT Bir OyunSa,BenDe JeTon Coq...
ben pbp bilmiyorum ama mantığı şöyle
önce 4 satır,3 sutunluk buton oluştur yada hazır keypad kullan
sutunları sürekli tarat mesela sutunlardaki 3 tane ucun hepsini a portuna bağla a portuna sırası ile şunları gönder 0b00000001, 0b00000010, 0b00000100
bunları sonsuz döngü içine koy
bir döngü daha oluştur for ile
i sayısını 0,1,2 diye saydır sonsuz döngü içinde olduğu için sürekli başa döner
döngünün başına şu şartları ekle
eğer i=0 ve x1 butonu basılı ise şu işlemleri yap
eğer i=0 ve x2 butonu basılı ise şu işlemleri yap
eğer i=0 ve x3 butonu basılı ise şu işlemleri yap
eğer i=0 ve x4 butonu basılı ise şu işlemleri yap
eğer i=1 ve x1 butonu basılı ise şu işlemleri yap
eğer i=1 ve x2 butonu basılı ise şu işlemleri yap
eğer i=1 ve x3 butonu basılı ise şu işlemleri yap
eğer i=1 ve x4 butonu basılı ise şu işlemleri yap
eğer i=2 ve x1 butonu basılı ise şu işlemleri yap
eğer i=2 ve x2 butonu basılı ise şu işlemleri yap
eğer i=2 ve x3 butonu basılı ise şu işlemleri yap
eğer i=2 ve x4 butonu basılı ise şu işlemleri yap
tabi x1,x2,x3 ve x4 dediğim şeyler senin satırları bağladığın pinler
Meftun YArdım ediyosun çok güzel eline sağlık ama ben sana derdimi anlatamadım galiba şöyle anlatıyım;
Şimdi vericiden taramayı yaptım atadığım değişkene sırayla buton sıraınca 1 2 3... değerlerini atadım yani keypadden 1. butona basıldığında alıcıya 1 diye gönderiyorum bunda sorun yok.
Sorun Şöyle daha doğrusu ben şöyle yapmak istiyorum. Bir tane enter gönderme tuşum olacak ve ben Örn;1sayısını göndericem enter a basıp göndericem Örn;127 yazıcam keypadla işte sorun burda 127 nasıl yazarım yada 245 gibi burdaki olayı anlamadım,Yani değşkene 125 yazıcam keypadla ve Örn kare tuşum enter olsun kareye bastığımda göndericem . sizlerden bu konuda yardım almak istiyorum...
HayaT Bir OyunSa,BenDe JeTon Coq...
mantık şu
birtane array(dizi) değişken oluşturacaksın
keypad den okuduğuın bilgileri bu diziye atacaksın
sonuz döngü içinde yap demiştimya artık sonsuz döngü olmayacak while ile şart kuracaksın şart ise enter butonunun basılması.
benim böyle bir konum vardı
klavye yapmıştım ister harf ister sayı giriyordu displayli pano diye başlık atmıştım bir bak bulamazsan arşivden arayım.Ancak ccs c dili ile yazmıştım enter butonuda yoktu belirlediğim sayıda karakter girdikten sonra kendisi otomatik displaylere gönderiyordu.
Hımm mantık su yani Örn; Oku var byte[2] yani 3 elemanlı sayı atıyabilirim ve # bastığımda bunu gönderebilirim saolasın aklıma gelmeliydim bi sorun olursa gene yardım isterim...he bide alıcınında değişkenini aynı yapıcam değilmi oku var byte[2]
HayaT Bir OyunSa,BenDe JeTon Coq...
Sorun Şu;
keypedle girdiğim 3 veya 4 haneli girdiğim rakkamı Rf aracılığı ile alıcının lcd sinde görmek istiyorum ama sunu yapamadım keypa taraması yaptım lcd de tek haneli rakamları görüyorum ama iş 2 3 4 haneye gelince olmuyor örn;Keypaddan 155 sayısını girdim ve lcd göndermek istiyorum burda 155 nasıl giricem ve nereye kayıt edicem ve nasıl kayıt edicem burda takılıyorum yani kısacası 2 3 4 haneli rakkamları keypadle girip Rf ile alıcıya ulaştırıp lcd de görmek istiyorum Yardımcı olursanız çık sevinirim...
HayaT Bir OyunSa,BenDe JeTon Coq...
şöyle olmaz mı ?
üç değişken tanımla birinci rakamı gir 100 ile çarp
sonra ikinci rakamı gir 10 ile çarp
en son üçüncü rakamı gir ve üçünü topla
örn:
2 3 5
2*100 + 3*10 + 5 = 235
2 adet değişkenin olacak.
Birisi TUS diğeri ise SAYI.
TUS key pad dan girilen tek tuşun değeri olacak.
SAYI ise girilenlerin oluşturduğu sayı.
Sistem şöyle. Adım adım yazıyorum anlayasın diye;
Amacımız 155 sayısını elde etmek olacak.
Birinci Adım:
TUS=1 bu ilk girilen tus değeri oluyor. Hemen ardından Sayı değişkenimizi set ediyoruz.
SAYI=SAYI*10+TUS burada Sayının ilk değeri sıfır olduğu için SAYI=1 olacaktır.
İkinci Adım:
TUS=5 bu girilen ikinci tus değeri oluyor. Hemen ardından
SAYI=SAYI*10+TUS = 1 *10+5=15 gördüğün gibi girilen 2 tus Sayı değişkeninde görülebiliyor.
Üçüncü adım:
Tus=5 bu girilen 3. cü değer oluyor. Hemen ardından
SAYI=15*10+5 = 150+5=155 gördüğün gibi sayı değişkenimiz 3 tuşuda ihtiva ediyor üstelik doğru şekilde.
Devam edersen 4. tus değerinide aynı metodla alabilirsin. Ama unutma SAYI değişkeni WORD tipinden olmalı ve buda en fazla 65535 değerini tutabilir.
Geriye yalnızca SAYI değişkenini RF ile yollamak kalıyor değilmi?
Ete
Evet mantıklı bunu denicem saolasın Erol abi
----------
Son olarak Şunu sormak istiyorum Erol abi dediğin kod la çok mantıksal bir devre kurdum çok güzel çalışıyor word atadım değişkenleri 65535 e kadar sayı girebiliyorum.
Soru şu sayıların arasına virgül nasıl koyabilirim ve yanlış yazdığım bir sayıyı nasıl silebilirim keypadden bunu merak ettim değişkene sunu atadığımda "," bunu ASCI olarak algılıyor heralde sayı gönderiyor.
HayaT Bir OyunSa,BenDe JeTon Coq...
Sayıların arasına koyacağın virgül ondalık sayı virgülümü yoksa binler hanesi ayıracımıdır.
Yani 155,12 gibi bir gösterim içinmi soruyorsun yoksa 123.628 şeklindeki bir gösterim içinmi soruyorsun.
155,12 için ise onu özel bir kod olarak tanımlamak gerekir.
Mesela sayı 155 ve sen "," girmiş isen,
önce girilen bilginin sayımı yoksa virgülmü olduğuna bakılması gerekir.
Eğer virgül ise direk yazılır sayı ise önceden açıkladığım hesaplama yapılır.
Silme işine gelince,
Ona da bir tuş tanımlayacaksın Mesela # tuşu yada * tuşu olabilir. Bunların kodu 11 ve 12 dir.
Bunlardan birisi basılırsa bu sefer yaptığun işlemin tersini yapacaksın.
ELindeki sayı 155 ve silme tuşuna basılmış ise SAYI=SAYI/10 yapmak işini çözecektir.
Ete
115,12 ve 15,1 gibi sayılar kulanıcam genellikle
HayaT Bir OyunSa,BenDe JeTon Coq...
şayet gireceğin sayılar word sınırı içinde ise (yani ondalık kısmı ile birlikte) işin biraz daha kolay olabilir. Yine örnekle açıklayalım.
Diyelimki tuş takımından 165,23 gibibir sayı gireceksin.
1. Tus=1 , SAYI=1 , Ondalık=0
2. Tus=6, Sayı=16, Ondalık=0
3. Tus=5, Sayı=165, Ondalık=0
4. Tus="," Sayı=165, Ondalık=0
5. Tus=2, Sayı=165,2, Ondalık=2
6. Tus=3, Sayı=165,23 , Ondalık=23
şeklinde yapılabilir. Ekrana yazarken "," ifadesinin tam ASC karşılığı 44 dür.
O halde tus="," ise ekrana bir adet 44 şöyle yazdırman gerekecek.
TUS="," ise isaret=44 demelisin ve isaret değişkeni sıfırda beklemeli.
LCDOUT $fe,$C0,"SAYI=",dec SAYI,isaret,dec ondalık
Hepsi bu kadar.
Ete
dediğinizi yaptım ama 44 cıkıyor "," cıkmıyor
HayaT Bir OyunSa,BenDe JeTon Coq...
Çıkmıyor değil sen çıkaramıyorsun
Ete
Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)