Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

yazılımda bir sorunum var :(

Başlatan jashua, 18 Kasım 2006, 14:13:43

jashua

arkadaşlar bir sorunum var yardımcı olursanız sevinirim

öncelikle projede bir rf alıcı birde rf verici var. olay şu; verici sürekli sinyal veriyor ve alıcının yakınına girerse alıcı bir ledi yakıyorve söndürüyor ( eger vericinin yanından uzaklaşmazsa işlem yapılmıyor), alıcının alanından cıkınca diğer ledi yakıyor ve sonduruyor ( alana girene kadarda başka işlem yapmıyor).

alıcı kodları şöyle :

 '-----------------------------------------------------------------
@ DEVICE pic16F628                      'işlemci 16F628                                
@ DEVICE pic16F628, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628, MCLR_ON             'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
'-------------------------------------------------------------------
CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'------------------------------------------------------------------------------
 include "modedefs.bas" 
GIRIS VAR PORTa.3
ac var portb.2
kapa var portb.3
kontrol var portb.1
AL VAR BYTE
al =0
a var byte
b var byte
e var byte

'------------------------------------------------------------------------------
 TRISa=%01000
 portb=%00000000
 porta=%00000
   	 
'------------------------------------------------------------------------------- 
basla: 
al =0
Serin2 GIRIS,396,100,menua,[wait("A"),al]
Serin2 GIRIS,396,100,menua,[wait("A"),al]
menu:
read 0,a
pause 300
if al=255 and a=0 then 
high ac
pause 200
low ac
e=0
while e<2
e=e+1
high kontrol
pause 100
low kontrol
pause 100
wend
a=1
write 0,a
pause 300
b=0
write 1,b 
endif
goto basla
 
menua:
read 1,b
if b=0 then
high kapa
pause 100
low kapa
e=0
while e<4
e=e+1
high kontrol
pause 100
low kontrol
pause 100
wend
b=1
write 1,b
pause 150
a=0
write 0,a
endif
goto basla

end



verici icinse :
@ DEVICE pic16F628                     'işlemci 16F628                                
@ DEVICE pic16F628, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628, MCLR_ON             'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
'-------------------------------------------------------------------
CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'------------------------------------------------------------------------------

include "modedefs.bas" 
TRISB=%01111111
'-------------------------------------------------------------------------------
CIKIS VAR PORTb.7
VER VAR BYTE
e var byte
 portb=%00000000
 porta=%00000
  
'-------------------------------------------------------------------------------
start :
ver = 255
SEROUT2 CIKIS,396,[REP$AA\5,REP$00\5,REP$FF\5]
SerOut2 CIKIS,396,["A",VER]
SerOut2 CIKIS,396,["A",VER]
SerOut2 CIKIS,396,["A",VER]
SerOut2 CIKIS,396,["A",VER]
SerOut2 CIKIS,396,["A",VER]
SerOut2 CIKIS,396,["A",VER]
SerOut2 CIKIS,396,["A",VER]
SerOut2 CIKIS,396,["A",VER]
low cikis
sleep 5
goto start

end


burada verici 5 saniyede bir veri gönderiyor. böyle bir şey yapmak zorunda kaldım cünkü pil cok cabuk bitiyordu.

sorun burada başladı dogal olarak alet 5 saniyede bir veri alınca bir ledi arkasından sinyal gidince diger ledi yakıyor.

bunu engellemek icin  bir kısır döngü düşündüm ama olmadı.bana bu konuda yardımcı olurmusunuz. şöyle bir olay oluşturmak istiyorum. mesela

ilk veriyi aldıktan sonra 7 sn icinde yeni veri gelirse 7 saniye daha bekleyecek bu 7 saniye icinde bir veri dah gelirse 7 saniye daha bekle. taki bu sure icinde veri gelmeyene kadar....

umarım olayı anlatabilmişimdir :) yardımcı olursanız sevinirim

ibrsel

RF vericiden gelen bilginin hangi mesafeden geldiğini yazılım ile bu şekilde anlayamazsın diye düşünüyorum..Çünkü sadece gelen bilgiyi okutuyorsun..10 m mesafedende, 20 m mesafeden de vericin aynı bilgiyi gönderecektir..Gelen bilginin yaklaşık hangi mesafeden geldiğini anlayabilmek için gelen sinyalin gücünü ölçmen gerekir..

jashua

mesafe derdim yok. mesafeyi yaklaşık 5 metrede sabitledim anteni kısaltarak. rf in alanı 5 metreyarı capında bir daire. sorunun anten yada gücle alakalı değil. anlatmak istediğim anlaşılmadı sanırım

jashua

yazılımı çözdüm ilgilenenlere teşekkür ederim