PİC IR ALICI VERİCİ SORUN VAR

platoonn

Üye
Katılım
30 Eki 2007
Mesajlar
5
Puanları
1
Yaş
40
arkadaşlar Ir alıcı verici yapmak istiyorum ancak şu 38 khz kafamı karıştırıyor.
Serin serout komutlarıyla yapmak mümkünmü bunu yoksa bu 38 khz i kendimizmi üretmek zorundayız.
devrenin cok hassas olması gerekmiyor çalışsın yeter.

bide derleme yaparken Error[113] C:\PBP\PBPPIC14.LIB 1630 : symbol not previusly defined (PORTA) diyor programı kendim yazmadığım için anlamıyorum sorun nerde .Belen biri varsa bi el atsın

vericinin nin komutu


Include "Modedefs.Bas"
Include "Irserout.Inc" ' Load in the New Subroutine

' ** Set Xtal Value in mHz **

Define OSC 4 ' Set Xtal Frequency

' ** New Defines for IRSEROUT **

Define IRSEROUT_PORT PortB ' Set IRSEROUT Port
Define IRSEROUT_BIT 7 ' Set IRSEROUT Pin
Define IRSEROUT_BAUD 2400 ' Set IRSEROUT Baud Rate
Define IRSEROUT_PACING 1 ' Set the delay between bytes sent (in ms)
Define IRSEROUT_HEADER 0 ' Turn on/off the three byte header "#OK"

' ** Declare Variables **

Counter Var Byte ' Count from 0 to 255
IR_ID Con 1 ' Transmitter number

' ** Start of Program **

Start: Pause 500 ' Wait For the Pic to Initialize

Main: For Counter=0 to 255
IR_BYTE="#":Gosub IRSerout ' Send a three byte header
IR_BYTE="O":Gosub IRSerout ' to syncronise the receiver
IR_BYTE="K":Gosub IRSerout ' with the actual byte sent
IR_BYTE=IR_ID:Gosub IRSerout ' Send out the transmitter number
IR_BYTE=Counter ' Send out the data byte
Gosub IRserout
Next
Goto Main ' Infinite Loop


bide bunun alt programı var ama programın tam olarak mantığını anlamadım iyi bilen birisi bi göz geçirse.
 
arkadaşlar çok direndim yazmamak için ama çıkamadım işin içinden. CCS c ile ır alıcı yapacağım , SONY ye göre de, rastgele bişiler yaptım, her tuşu hersinyali algılıyor devre. polis çakarında bile etkileniyor. :) kumandadan gelen şifreli bilgiyi pic de nasıl çözdüreceğim, her tuşu ayrı ayrı çıkışa nasıl vereceğim. ır mantığını bilen bizimle paylaşır mı, teşekkürler...
 
Arkadaşlar ben IR üzerine çalışmaktayım şuanda, mantığı çözdüm ama şuanda uyumak üzereyim detayları sonra paylaşırım, şiimdilik güzel bir site öneriyorum ve kısa zamanda elimden geldiğince sorulara cevap vermek için dönüyorum, SB-Projects: IR Remote Control (ingilizce). Birde Türkçe kaynak için Yıldırım AK hocanın hazırladığı herhalde adı akıl defterim2 olan bir döküman var onu arayabilirsiniz, yine bulamazsanız ben yardımcı olurum.
 
kazım hocam senin aslında bilgin vardır diye düşünüyorum

uzaktan kumandaların tuşlarının kodları var , o kodu yolluyorlar, ee alıcı gözlerde taşıyıcı sinyal ile bilgiyi ayırıyor. ben peki bu bilgiyi pic e nasıl tanıtacağım. Atıyorum 1 tuşunun kodu 0x01, buna atıyacağım çıkış Rbo olsun... gelen sinyale de "bilgi" dedim diyelim. bilgi == 0x01 ise output_high(b0); dediğimde sonuç alabilecek miyim?
 
Hayır sonuç alamayacaksınız, neden; neden aslında bilginin kodlanarak gelmesi, aslında detaylı anlatım verdiğim sb projects veya söylediğim ve Kazım hocanın linkini paylaştığı Yıldırım AK hocanın akıl defterim adlı dökümanında mevcut, kısaca bahsedecek olursak, öncelikle soru şu olmalı: Ben 0 ve 1 lerden oluşan birdizi bilgi göndermek istiyorum bu bilgiyi nasıl gönderirim? Bu sorunun temeli 1 ve 0 nasıl gönderirim, (gönderirim kısmını anlamadan gelen verinin ne olduğunu çözemeyiz) elimizde gözün görmediği ışık yayan IR led var, ben eğer bu ledi 38 kHz ile çalıştırırsam yeterli mesafeye ışık ulaştırırım (başka frekanslarda kullanılır), tamam ışık gönderdim ama gönderirsem 1 göndermezsem 0 dersem olmaz böyle yaparsam sürekli bir iletişim olması sürekli ya 1 yada 0 gönderilmesi gerekir bu saçma, ne yaparım örneğin ben 1ms nin ilk 0.5 ms sinde 38 kHz gönderip, kalan 0.5 ms sinde göndermezsem bu 1 bilgisi olsun, ve 1 ms nin ilk 0.5 ms sinde 38 kHz gönderir, kalan 0.5 ms sinde 38 kHz göndermezsem bu 0 bilgisi olsun derim, bu sayede zamanlama kullanarak 0 ve 1 bilgisi göndermiş olurum, eğer bu şekilde ardarda 8 tane 0 ve 1 lerden oluşan bir dizi gönderirsem 1 byte XXh gibi bir sayı gönderebilirim, ve birde alıcı verici arasında senkronizasyonu sağlamak için, verici şöyle şeyler yapabilir, 1 ms 38 kHz gönderir, 1 ms 38 kHz göndermez bunu 3 defa peşpeşe tekrarlar bunada bak alıcı sana bilgi gönderiryorum haberin olsun uyanık ol, bilgiyi almaya hazır ol, ve benzer şekilde bunun gibi farklı bir rutini kullanarak alıcı kardeş seninle işim bitti daha veri yollamayacağım gibi bir stop biti tanımlayabilir, işte bu şekilde yukarıda bahsettiğimiz linklerde belli başlı protokollerin nasıl zamanlamaya sahip oldukları anlatılmıştır bunları tekrar anlatmaya gerek yok sanırım. Birde IR alıcı göz mantığına değinelim, bize vericinin belli sürelerle 38 kHz gönderdiğini söyledik, peki alıcı göz 38 kHz yi görürse ne olur, ne olur çıkış bacağı 0 olur, eğer ortamda 38 kHz yoksa çıkış bacağı 1 olur (bazı alıcı gözlerde durum tam tersi olabilir denemeli veya datasheetine bakmalısınız) buradanda yukarıdakilerle beraber şu sonuç çıkar örneğin açıkladığım şekilde verici size 1 bilgisi yollasın (0.5 ms 38 kHz + 0.5 ms 38 kHz yok) bu alıcı gözün çıkışında size şunu verir 0.5 ms çıkış 0 (low), 0.5 ms çıkış 1 (hıgh) ve devamında gelen bitler var ise bu vb. şekilde uzar gider, sizde programınızda vericinize uygun olan 1-0 gönderme protokolün zamanlamasını, varsa start ve stop bitlerinin zamanlamalarını, ardarda kaç bit gönderir standardını hesaba katarak zamanlamaya bağlı gelen bitleri tanımlar (algılar), data formatına uygunmu bakar ve buna göre gerekli işlemi yaparsınız. İlgili soru ve yorumlarınızı bekliyorum, umarım çalışmalarınıza katkısı olur.
 

Forum istatistikleri

Konular
130,143
Mesajlar
933,538
Kullanıcılar
453,225
Son üye
licensechamps

Yeni konular

Geri
Üst