RF alıcı verici devresi
başlıkta belirttiğim 2 mod istenildiğinde butona basılı tutulduğu sürece calısacak istenildiğinde sadece bas açsın bas kapatsın şeklinde çalışacak bir verici devre yapmayı planlıyorum .
kodlar aşağıdadır
ALICI DEVRE KODLARI
'****************************************************************
'* Name : alıcı.BAS *
'* Author : [Mustafa CAN ] *
'* Notice : Copyright (c) 06,06,2006 *
'* : All Rights Reserved *
'* Date : 28.03.2007 *
'* Version : 1.0 *
'* Notes : PICLE ALICI bas dosyası *
'* : *
'****************************************************************
DEFINE OSC 4
PORTA=0
TRISA=%00000001
TRISB=0
BILGI var BYTE
SYMBOL VERIIN=PORTA.0
PORTB=0
porta=0
MAIN:
BILGI=0
serIN2 VERIIN,813,[WAIT ("ETE"),BILGI]
SELECT CASE BILGI
CASE 255
GOTO MAIN
CASE 254
TOGGLE PORTB.0
CASE 253
TOGGLE PORTB.1
CASE 251
TOGGLE PORTB.2
CASE 247
TOGGLE PORTB.3
CASE 239
TOGGLE PORTB.4
CASE 223
TOGGLE PORTB.5
CASE 191
TOGGLE PORTB.6
CASE 127
toggle portb.7
case 28
toggle porta.1
case 26
toggle porta.2
case 22
toggle porta.3
case 14
PORTA.4=1-PORTA.4
END SELECT
PAUSE 200
GOTO MAIN
END
VERİCİ DEVRE KODLARI ( bas açsın bas kapatsın şeklinde)
'****************************************************************
'* Name : verici.BAS *
'* Author : [Mustafa CAN ] *
'* Notice : Copyright (c) 06,06,2006 *
'* : All Rights Reserved *
'* Date : 28.03.2007 *
'* Version : 1.0 *
'* Notes : PICLE VERICI bas dosyası *
'* : *
'****************************************************************
DEFINE OSC 4
TRISA=%00011110
TRISB=%11111111
OPTION_REG.7=0
BILGI VAR BYTE
SYMBOL VERIOUT=PORTA.0
MAIN: BILGI=255
GOSUB PORTA_BAK
IF PORTB<255 THEN
BILGI=PORTB
GOSUB VER
while portb<255:wend
ENDIF
pause 10
GOTO MAIN
VER:
serout2 VERIOUT,813,[REP$AA\5,REP$00\5,REP$FF\5]
serout2 VERIOUT,813,["E","T","E",BILGI]
serout2 VERIOUT,813,["E","T","E",BILGI]
serout2 VERIOUT,813,["E","T","E",BILGI]
serout2 VERIOUT,813,["E","T","E",BILGI]
RETURN
PORTA_BAK:
BILGI=PORTA & %00011110
IF BILGI<30 THEN
GOSUB VER
' PAUSE 100
ENDIF
WHILE PORTA<30 : WEND
RETURN
END
Verici devre kodları basılı tutulduğu sürece çalışan
'****************************************************************
'* Name : verici.BAS *
'* Author : [Mustafa CAN ] *
'* Notice : Copyright (c) 06,06,2006 *
'* : All Rights Reserved *
'* Date : 28.03.2007 *
'* Version : 1.0 *
'* Notes : PICLE VERICI bas dosyası *
'* : *
'****************************************************************
DEFINE OSC 4
TRISA=%00011110
TRISB=%11111111
OPTION_REG.7=0
BILGI VAR BYTE
SYMBOL VERIOUT=PORTA.0
MAIN: BILGI=255
GOSUB PORTA_BAK
IF PORTB<255 THEN
BILGI=PORTB
GOSUB VER
WHILE PORTB<255:WEND
' EDIT : Veri tekrar yollaniyor,
' bu sekilde toggle islemi gerceklesiyor.
GOSUB VER
ENDIF
PAUSE 10
GOTO MAIN
VER:
serout2 VERIOUT,813,[REP$AA\5,REP$00\5,REP$FF\5]
serout2 VERIOUT,813,["E","T","E",BILGI]
serout2 VERIOUT,813,["E","T","E",BILGI]
serout2 VERIOUT,813,["E","T","E",BILGI]
serout2 VERIOUT,813,["E","T","E",BILGI]
RETURN
PORTA_BAK:
BILGI=PORTA & %00011110
IF BILGI<30 THEN
GOSUB VER
' Gecikme buraya tasindi.
WHILE PORTA<30 : WEND
' EDIT : Veri tekrar yollaniyor,
' bu sekilde toggle islemi gerceklesiyor.
GOSUB VER
ENDIF
RETURN
END
bu iki verici kodu birleştirmek istiyorum. mesela pic16f628a ile kullanmak istiyorum bu kodları
aklıma şöyle bir fikir geldi.
8 kanal olarak çalışmak için portb yi çıkış yapıyoruz alıcı devrede
verici devrede yine butonlar portb ye bağlı olacak
porta.0 alıcı vericidede data pini olacak
vericide porta.1 i de giriş olarak tanımlayacağız pull down ile gnd ye çekeceğiz ve 5v ile de arasına bir anahtar koyacağız mini switch şeklinde
amacım şu porta.1=0 iken bas caşıstır bas durdur şeklinde olacak kodlar işleyecek
porta.1=1 ilen basılı olduğu sürece çalışacak butonlar .
anahtarı 5v ye çektiğimizde porta.1=1 oacak
birinci moddaki çalışma kodlarını etiket olaran Birinci
ikininci moddaki çalışma kodlarını etiket olarak İkinci
yapalım.
SWKONTROL adında bir etiketimiz olsun bu etiket içinde porta.1 in sıfır mı bir mi olduğunu kontrol edelim
SWKONTROL:
if porta.1=0 then Birinci
if porta.1=0 then İkinci
RETURN
şeklinde kod yazsak ve bu Birinci ve İkinci çalışma kodlarının içerisinde bu SWKONTROL etiketine gidip gelmesini sağlasak ( mesela VER etiketi içersinde GOSUB SWKONTROL yazsak)
dediğim şekilde iki moddada çalıştırabilir miyim?
Eğer bu şekilde olabilecek ise kodları birleştirip gerekli yerleri silip eklemeler yapacağım .
Bu yöntem belkide bu şekilde randıman vermez diyorsanız bunu başka şekilde nasıl yapabilirim?
Umarım kendimi ifade edebilmişimdir.
MAIN:
WHILE porta.1=0
BILGI=255
GOSUB PORTA_BAK
IF PORTB<255 THEN
BILGI=PORTB
GOSUB VER
while portb<255:wend
ENDIF
pause 10
WEND
WHILE porta.1=1
BILGI=255
GOSUB PORTA_BAK
IF PORTB<255 THEN
BILGI=PORTB
GOSUB VER
WHILE PORTB<255:WEND
' EDIT : Veri tekrar yollaniyor,
' bu sekilde toggle islemi gerceklesiyor.
GOSUB VER
ENDIF
WEND
GOTO MAIN
olabilir mi yani sizce kodu evet güzelce düzenlemişsiniz. yani uygulamada aksilik çıkartabilir mi ?
en kısa zamanda bir kumanda tasarlayıp yeniden denemek istiyorum teşekkür ederim.
'****************************************************************
'* Name : verici.BAS *
'* Author : [Mustafa CAN ] *
'* Notice : Copyright (c) 06,06,2006 *
'* : All Rights Reserved *
'* Date : 28.03.2007 *
'* Version : 1.0 *
'* Notes : PICLE VERICI bas dosyası *
'* : *
'****************************************************************
DEFINE OSC 4
TRISA=%00011110
TRISB=%11111111
OPTION_REG.7=0
BILGI VAR BYTE
SYMBOL VERIOUT=PORTA.0
MAIN:
WHILE porta.1=0
BILGI=255
GOSUB PORTA_BAK
IF PORTB<255 THEN
BILGI=PORTB
GOSUB VER
while portb<255:wend
ENDIF
pause 10
WEND
WHILE porta.1=1
BILGI=255
GOSUB PORTA_BAK1
IF PORTB<255 THEN
BILGI=PORTB
GOSUB VER
WHILE PORTB<255:WEND
' EDIT : Veri tekrar yollaniyor,
' bu sekilde toggle islemi gerceklesiyor.
GOSUB VER
ENDIF
WEND
GOTO MAIN
VER:
serout2 VERIOUT,813,[REP$AA\5,REP$00\5,REP$FF\5]
serout2 VERIOUT,813,["E","T","E",BILGI]
serout2 VERIOUT,813,["E","T","E",BILGI]
serout2 VERIOUT,813,["E","T","E",BILGI]
serout2 VERIOUT,813,["E","T","E",BILGI]
RETURN
PORTA_BAK1:
BILGI=PORTA & %00011110
IF BILGI<30 THEN
GOSUB VER
' Gecikme buraya tasindi.
WHILE PORTA<30 : WEND
' EDIT : Veri tekrar yollaniyor,
' bu sekilde toggle islemi gerceklesiyor.
GOSUB VER
ENDIF
RETURN
PORTA_BAK:
BILGI=PORTA & %00011110
IF BILGI<30 THEN
GOSUB VER
' PAUSE 100
ENDIF
WHILE PORTA<30 : WEND
RETURN
END
şu şekilde derledim çizimini yapacağım şimdi dediğim gibi porta.1 ile +5 arasına bir anahtar koyacağım direnç ile de gnd ye çekeceğim. Ama son bir soru daha sorayım
Şimdi
OPTION_REG.7=0
ile dahili pull-up dirençlerini aktif ettikten sonra porta.1 i gnd ye direnç ile pull-down yapmak istiyorum nasıl bir direnç ile yapmam gerekir ki dahili pull-up yerine dışarıdan direnç ile gnd ye çekilsin bu bacak. Dahili pull-up direncinden daha küçük olacak şekilde kaç ohm yada kaç kohm direnç koymalıyım gnd ile porta.1 arasına?
En fazla PortA.1 i bozmadan çekebileceğin,
maksimum akımı sağlayan,
direnç değeri kadar küçük bir direnç kullanabilirsin.
Pic pinlerinden 20 mA max çekebilirsin,
5V da 20mA çeken direnç değeri .... :)
Aslında butona basıldığında pinin input olacağını garanti edebiliyorsan
hiç direnç koymadanda yapabilirsin.
Genelde 470ohm~1k arası kullanılır.
Kullanabileceğin en büyük pull-down direnç değeride
doğal olarak pull-up direncinin değerine bağlıdır,
dahili pull up direnç değerinide
kullanacağın picin datasheet inden öğrenebilirsin.
mesaj birleştirme:: 15 Haziran 2016, 07:50:43
Aslında hesap pull down direnci üzerinde düşecek gerilim ve
picin ilgili pininin LOW olarak kabul ettiği gerilim seviyesi ne
üzerinden yapılır,
yukarıda anlattığım kısım akım limiti oluyor.
ayrıntı için teşekkürler
ben 16f628a da iki porttada pull up var diye biliyordum yanlışmış sadece portb de varmış datasheete bakarken gördüm .
bu şekilde ozaman direk pull down yaparak +5 e de anahtar bağlayarak istediğim olmuş olacak.
merak ettiğim son yazmış olduğum kodda sorun olur mu acaba?
Arkadaşlar bu kumandayı yapacağım fakat birde şu şekilde bir kumanda yapmak istiyorum bunu nasıl yapabilirm?
"" kumanda üzerinde 2 buton oalcak birisi on birisi off yapacak toogle şeklinde değilde iki butonlu on off anahtarı mantıgı ile çalışacak ve 4 röleyi misal portb.0.1.2.3 leri aç kapat yapacak """
arkadaşlar ekte devreyi ve php kodlarını veriyorum . isiste azda olsa istediğimi yapabildim fakat devreyi çizdim ve denedim porta.1 pull down da iken sorun yok toogle şeklinde çalışmakta.
ama jumper ile +5 v ye çekiyorum butonları algılamıyor kablo ile kısa devre edince algılıyor ancak o şekildede yine butona basılı tuttugum sürece çalışmasını istiyorum olmuyor. Bu isiste azda olsa oluyor. Aklım dondu açıkcası nerede hata yapıyorum bir bakarsanız sevinirim.
iyi bayramlar
ikimod calısma.rar - 39 KB (http://dosya.co/avdv864at58a/ikimod_cal%C4%B1sma.rar.html)