Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 4561|回復: 1
打印 上一主題 下一主題

[請益]RS232-接收問題(附上我的CODE)

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-2-1 11:51:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
' {$STAMP BS2}
' {$PBASIC 2.5}
' -----[ I/O Definitions ]-------------------------------------------------
Ping1 PIN 0
' -----[ Constants ]-------------------------------------------------------
Trigger CON 5 ' trigger pulse = 10 uS
Scale CON $200 ' raw x 2.00 = uS
RawToIn CON 889 ' 1 / 73.746 (with **)
RawToCm CON 2257 ' 1 / 29.034 (with **)
IsHigh CON 1 ' for PULSOUT
IsLow CON 0

' -----[ Variables ]-------------------------------------------------------
rawDist1 VAR Word ' raw measurement
cm1 VAR Word

' -----[ Initialization ]--------------------------------------------------
Reset:
DEBUG CLS,
"Parallax PING))) Sonar", CR, ' setup report screen
"======================", CR,
"Centimeters1... ", CR,
' -----[ Program Code ]----------------------------------------------------
Main:
DO

GOSUB Get_Sonar1           ' get sensor value
cm1 = rawDist1 ** RawToCm          ' convert to centimeters
DEBUG CRSRXY, 15, 2,
"s",DEC cm1,"e", CLREOL

PAUSE 100
LOOP
END

'********[Ultrasonic_Subroutines_1 ]*******************
Get_Sonar1:
Ping1 = IsLow ' make trigger 0-1-0
PULSOUT Ping1, Trigger ' activate sensor
PULSIN Ping1, IsHigh, rawDist1 ' measure echo pulse
rawDist1 = rawDist1 */ Scale ' convert to uS
rawDist1 = rawDist1 / 2 ' remove return trip
RETURN
'******************************************************
以上是我BS2上的CODE
Q1.當我cm1 = rawDist1 ** RawToCm      此段時cm1就是十進制沒錯八?!
      因為我用----> IF cm1>60 THEN HIGH 就能成功

Q2.而我在DEBUG時 要是沒加DEC那他就會亂碼~那個亂碼是ASCII沒錯八?!
     也就是--->DEBUG CRSRXY, 15, 2,"s",DEC cm1,"e", CLREOL
     所以說DEC 只是要讓BS2本身Debug Teriminal 能夠顯示十進制 而不顯示ASCII 對嗎?!

Q3.我在BS2上我在DEBUG 加上"s" DEC cm1 "e" 是要讓我在人機端 能夠分辨出s起始 e結束
       這樣做的化我在加超音波上去,只要用一樣的方把給"a" DEC cm2 "b" 這樣就能一次分別抓到兩顆.

Q4.因次我想請問在人機端我所抓到的值是否是因為我在BS2上有給他 "s" DEC cm1 "e" 因此他在
       人機端所抓到的值也會是十進制(DEC),就是抓s,e 字串中間那段值?!

Q5.所以我最後的問題就是! 我如果要把我在人機端的值 假設抓到150 那我要回傳這個數值給BS2
     到底該如何做呢?! 請瞭解的大大 幫我解惑= =+!!

Q6.我竟然用了抓 "s" "e"中間那段值的方法 成功在人機端顯示,這樣是代表? 我不須要使用SEROUT
     對嗎?

Q7.還是說 使用SEROUT 及 SERIN 這樣一對比較好用呢??

Q8.在本來的BS2開發板上那個RS232的接頭是 哪一個腳位能當SERIN的Pin呢?!

Q9.請大大能指引方向...有網站~資料 之類的嗎= =?!
PS. 問了那麼多的問題,麻煩能解惑的大大~幫我看一下八= =+!!

     十二萬分的謝意!!= =+
2#
 樓主| 發表於 2010-2-2 10:45:11 | 只看該作者
我忽然想到! 我之前都是使用另外接出一條RS232 就是一條接P14 另一條接地 這是使用飆機器人所提供

終端機TEST那個RS232的接法!! 所以我的語法會是 SERIN 14,16468, [Data]

因為在youtbe 上有看到有人就用接 搭載版上那個RS232接頭 直接送命令給車子!!~控制它~

所以我如果要透過搭載版上的RS232來接收超音波 以及同時 送命令給它 請問該如何寫?!

我人機端 是給他一個Buffer[0]=15     讓它能回傳給bs2 來做一個腳位high low的動作

也就是BS2:此端把測到的超音波送給電腦!! EX: if(超音波值>50) 回傳一個代碼例如1
      
這個1就回傳給BS2 告訴他  IF(Data=1) THEN HIGH 13  ---->HIGH 13代表HIGH馬達的模式

馬達端已經OK了!!

現在就是Data那個值要如何收?!!  請瞭解的大大幫我解惑!! 感恩!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-12-4 01:06 , Processed in 0.381436 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表