Aynı Anda İki Farklı Gönderim...

Başlatan ByTEK, 04 Aralık 2009, 16:25:02

ByTEK

Arkadaşlar merhaba bir robot projemiz var..Yürümesi Paletli bir sistem üzerinde tank misali... henuz daha tasarım aşamasında olduğundan dolayı fazla belirgin şeyler söyleyemem... Bunu Uzaktan kumanda ile kontrol etmek istiyoruz ama rf 433 mhz modül ile tek data gönderiliyor.. paletli olduğu için aynı anda 2 motorun çalışması gerek.. kumandadan ona göre gönderdiğim zaman durdurmak için 2 kez basıyorum tuşa.. kontrollerimi İSİS te yapıyorum... kontrollerimi yaparken..

verici kısımda sınyal gönderirken

TRISA=%00110
TRISB=0
PORTA=0
PORTB=0

VERICI VAR BYTE   
   VERICI=0
PAUSE 500


BASLA:
   IF PORTA.1=0 THEN
   VERICI=10
   GOSUB GONDER
PAUSE 100
   ENDIF

IF PORTA.2=0 THEN
   VERICI=20
   GOSUB GONDER
PAUSE 100
   ENDIF

GOTO BASLA

GONDER:
SEROUT2 PORTA.0,396,["S","I","I","S",VERICI]
RETURN
END


Alıcı Kısımdaki Kod:


TRISA=255
TRISB=0
PORTA=0
PORTB=0

ALICI VAR BYTE
ALICI=0
PAUSE 500

BASLA:

SERIN2 PORTA.0,396,[WAIT("SIIS"),ALICI]

IF ALICI=10 THEN
HIGH PORTB.0
ENDIF
   
IF ALICI=20 THEN
HIGH PORTB.1
ENDIF

GOTO BASLA
END


istediğim...vericideki 2 tuşta basılı olduğu müddetçe alıcıda bulunan dc motor sürekli çalışacak tuşlardan biri basılı olmadığı sürece basılı olandaki motor çalışmayacak... bu yönde yardım edebilirsiniz...

aynı anda basılı olan tuslara göre veri göndermek ve basılı olan tuslardan hangisi bırakılırsa vericide o motor duracak..

teşekkür ederim...

ete

Aslında istediğini yapmak hiç de zor değil.

Verici kısmında Tuş okumasını tek komut ile yapın. Aynı anda iki tuşu da okunacaktır.
Buna göre verici kısmı şöyle olabilir;
TRISA=%00000110
TRISB=0
PORTA=0
PORTB=0

VERICI VAR BYTE
VERICI=0
PAUSE 500


BASLA:

VERICI=PORTA & %00000110
IF VERICI > 0 THEN GOSUB  GONDER
GOTO BASLA

GONDER:
SEROUT2 PORTA.0,396,["S","I","I","S",VERICI]
RETURN


Alıcı kısmında ise gelen veriyi akıllıca değerlendirerek  basılı tuşlara karşılık gelen PorB pinlerini HIGH yapmak gerekir.
Onuda şöyle yaparsınız.
TRISA=255
TRISB=0
PORTA=0
PORTB=0

ALICI VAR BYTE
ALICI=0
PAUSE 500

BASLA:

SERIN2 PORTA.0,396,[WAIT("SIIS"),ALICI]

IF ALICI=0 THEN BASLA
ALICI=ALICI>>1 
PORTB=(PORTB & %11111100)+ALICI 

GOTO BASLA
END


Bir deneyin bakalım çalışması gerekir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

ByTEK

Abi Cevabın İçin Teşekkür ederim.. 4 adet buton var ve hangileri basılı ise ona göre kod gonderiyorum if deyimi ile and komutunu kullanarak gerekli sinyali gönderip gerekli işlemleri yapıyorum..

Teşekkür ederim...