Bağlantılı Öğeler
Son Yorumlar
- En Kısa Yol Algoritması (10)
- Montaj hattı dengeleme (Konum Ağırlıklı Dengeleme Metodu) (3)
- PHP de Güvenlik Kodu Uygulaması (6)
- Goalunited İçin Saha Yerleşim Hesaplayıcı (12)
- Sıralama Algoritmaları (4)
- Bumerang Web Sitesi ve Blog Ödülleri Başlıyor! (1)
- Rubik Küp Çözümü (1)
- GoalUnited Rehberi (7)
Kimler Sitede
Şu anda 8 ziyaretçi çevrimiçiBağış
| Paralel Porttan Veri Almak ve Oyun Kumandası Yapımı |
| Makale - PC ile Otomasyon | |||
| Yazar ugokhan | |||
| Pazar, 26 AÄŸustos 2007 21:59 | |||
|
 Şimdiye kada ki örneklerde hep paralel porta sinyal yollayarak dış devreleri kontrol ettik. Åžimdi dışarıdan sinyal yollayıp, program içerisinden sonuçlar almayı göstereceÄŸim. Bunun için ekran üzerinde "Kutu İten Adam" oyunu yapıp, hazırlayacağımız devredeki butonlara basarak bu adamı hareket ettireceÄŸiz. Bir nevi kendi oyun kumandamızı yapmış olacağız. Paralel Portu Dinlemek Paralel porta sinyal yollamak istediÄŸiniz port adresinin +1 fazlasını porttan okuma yapmak için kullanırız. EÄŸer paralel port adresiniz &H378 ise &H379 deÄŸeri ile paralel portu dinlemeye alırız (Yani STATUS Portu). Porttan gelen deÄŸerleri okuyan komut INP komutudur. Bu komutun tek parametresi vardır o da port adresi. Tabi ki bu adres deÄŸeri paralel portunuzun STATUS port deÄŸeridir.  'Inp Komutunun Kullanılması  UYARI : Paralel portunuzun adres deÄŸerinin &H378 olup olmadığını kontrol edin. ÇoÄŸu bilgisayarda bu deÄŸer &H378 olmasına raÄŸmen bazı bilgisayarlarda farklılık gösterebilir. Bu deÄŸeri bilgisayarınızın açılışından veya BIOS ayarlarından görebilirsiniz. Status portu ile ilgili bazı bilgiler vereyim. Status portu üzerinde 5 pin bulunmaktadır. Bunların yerleÅŸimleri aÅŸağıdaki ÅŸekilde gösterilmiÅŸtir. Biz Status portunu okuduÄŸumuzda 8 bitlik deÄŸer döner. Yani fazladan 3 pin daha gelir. Bunlar Control portuna ait olan 14,16 ve 17 nolu pinlerdir. Bu pinlerin deÄŸeri hep sabittir. Bu deÄŸer bilgisayarlara göre farklılık gösterebilir ve aynı anda ya 1 yada 0 dır. Biz gelen veri içindeki ilk 5 pin deÄŸerine bakarız. Dolayısıyla Status portundan sadece 5 bitlik veri giriÅŸi yapabiliriz. Â
 Status portunun bir özelliÄŸi de S7 pininin terslenmiÅŸ olmasıdır. Bu pin donanım tarafından terslenmektedir. EÄŸer hiçbir ÅŸey yapmadan Status portunu dinlersek 01111111 deÄŸerini okuruz. Bazı bilgisayarlarda bu deÄŸer 01111000 olarak gözükebilir. Yukarıda da dediÄŸim gibi control portu pinleri bazı bilgisayarlarda deÄŸiÅŸik olabilir. EÄŸer status portu üzerinde daha iyi bir fikir edinmek istiyorsanız daha önce yapmış olduÄŸum "Paralel Port" projesini "Dosya İndir" sayfasından indirebilirsiniz. Status portundaki S7 pininin bu ters davranışını XOR ile deÄŸiÅŸtirebiliriz. XOR operatörü ile iki veri karşılaÅŸtırılır ve maske deÄŸerinde 1 olan deÄŸer ters çevrilir. Örnek : Data : 0 1 1 1 1 0 0 0 Ben örnek projemde XOR operatörünü daha farklı bir amaç için kullandım. Amacım basılan butonun status numarasını elde etmekti. Bunun için okunan buton deÄŸerini 120 ile XOR'ladım. Örnek : S5 butonuna basılmış olsun. Data : 0 1 0 1 1 0 0 0 XOR maskesinin 120 seçilmesinin sebebi control pinlerinin 0 olmasından dolayıdır. EÄŸer kullandığınız bilgisayarda bu pinler 1 olarak gelirse XOR iÅŸlemini 127 (01111111) deÄŸeri ile yapın. Bunun için programımızda aÅŸağıdaki kodları kullanalım. Böylece programımız farklı bilgisayarlarda da doÄŸru sonuçlar üretsin.  'Porttan gelen veri data deÄŸiÅŸkenine atılıyor  Gelelim port nasıl dinlenir? Port üzerinde her an hareket olabileceÄŸi için bu deÄŸiÅŸimleri nasıl yakalarız.? Bu soruyu şöyle cevaplayayım. Sürekli bir döngü ile port deÄŸerlerini okuruz. Bunun için Do-Loop döngüsü kullanabilirsiniz. Ama ben Timer nesnesi kullanacağım. Sebebi de istediÄŸim zaman Enable = True / False yaparak okumayı kontrol edebilirim. Okuma kodlarını Timer içine yazarız ve okunan deÄŸere göre hareket iÅŸlemini gerçekleÅŸtiririz.  Private Sub Timer1_Timer()  Programımız için kullanacağımız kumanda devresi 5 adet tuÅŸ-buton dan oluÅŸan basit bir devredir. TuÅŸ-butonları her elektronikçe de çok ucuza bulabilirsiniz. Devre baÄŸlantıları aÅŸağıdaki gibidir. Aslında buna devre bile denmez. Sadece buton kullandık :)) 4 adet butonu klavyedeki yön tuÅŸları ÅŸeklinde dizdim. DiÄŸer butonu ise programdan çıkmak için kullandım. Â
  Programın tam proje halini buradan indirebilirsiniz. Program içinde, aynı anda birden fazla yön tuşuna basılınca hareket etme olayı iptal edilmiştir. Siz buna izin verip çapraz hareketler de ekleyebilirsiniz. Ayrıca XOR olayını kendi isteğinize göre ayarlayıp kendi değerlerinizi kullanabilirsiniz. Bu işin geri kalan kısmı tamamen programı nasıl süsleyeceğinizle alakalıdır.
|


Yorumlar
RSS beslemesi, bu iletideki yorumlar için.