|
' {$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. 問了那麼多的問題,麻煩能解惑的大大~幫我看一下八= =+!!
十二萬分的謝意!!= =+ |
|