| 
 | 
3#
 
 
 樓主 |
發表於 2010-2-4 10:58:59
|
只看該作者
 
 
 
miaoichi 大大 
 
我使用的是 PING)))™ Ultrasonic Distance Sensor (#28015) 就是我圖像這顆 
 
有三隻腳 一支接地,一支接電壓,一支訊號線(接pin腳的) 
 
我不懂單向接是什?? 可能是我緒述的不夠清楚!! 我把他詳細一點打出來. 
----------------------------------------------------------------------------------------------------------- 
我是透過 PING)))™ 然後把他接到bs2版上,之後透過PING)))™  所給的範例就能抓到此顆超音波的值 
 
為了要能抓到bs2在它本身視窗上所顯示的值, 
 
因此我在bs2的code裡加上了"s"跟"e" ,這樣我就能透過MFC寫一個for抓"s"字串及"e"字串中間值的方法. 
 
DEBUG CRSRXY, 15, 2, 
"s",DEC cm1,"e", CLREOL 
--[到目前為止是成功的把超音波的值給到人機端了]------------------------------------------------------------- 
 
之後我就做了一個rs232轉rs232的接頭(簡單說就是把原本的rs232接線 另外做一條一模一樣的 rs232的接頭我使用杜邦端子接頭這樣我就能隨意拔起任何腳位) 
 
 此步驟就只是為了把rs232的pin3拉出來看他到底是否有使用到 
 
不過我發現在燒錄的時後rs232的pin2(Rx) 及 pin3(Tx) 一定要接 
(原本我認為只有燒 所以應該只需要pin3(Tx)來傳送data 不需要pin2(Rx) ) 
不過之後我想一想,從電腦端rs232傳出去(Tx)的接頭 在bs2端 當然也需要接收(Rx) 
(不知道我上面這樣的想法對嗎?! 目前我是認為這樣) 
 
那現再重點來了!!  首先我先把超音波的CODE給燒錄進去  
 
接下來RS232的pin3(Tx)拔起來,此時超音波依然可以有效的透過BS2上的SOUT他會把BS2上所測到的值透過RS232的RX接收在傳到PC上!!  
 
因此結論就是!! RS232 TX接腳並沒有用到!! 
*********************************************************************** 
而我現在的目的 就是要在人機端  下命令給BS2!! 
就像是我在PC端給的一個命令                 
        if(output1>10) /output1是超音波即時回傳的值 
        { 
                    OutputCMD(); //傳送資料出去(  OutputCMD();前面已經先寫好傳送的code了, 
                                           //ch=ByteSend在透WriteFile(hComm,&ch,1,&lrc,NULL); )                 
            ByteSend[0]=119;//某個對應的碼 
        } 
************************************************************** 
昨天晚上有測出一個方法,我先解說一下我下面在幹麻 
也就是我上面給了一個119的碼傳送給bs2 
119代表:電腦回傳值 
下面的123 121 119 代表基準值, 
下面範例跑出來就會是 
119>123 (電腦回傳值小於基準值,判斷正確就不運作,不正確就運作)--->運做 
119>121 (電腦回傳值小於基準值,判斷正確就不運作,不正確就運作)---->運做 
119<119 (電腦回傳值等於基準值, 但敘述裡面是小於不運做,敘述裡面是大於就運做,)--->不運做 
因此三個都會做15,5就會運做high腳位,1則不運做 
 
以上的規則是try出來的!! 我覺的是bs2的bug!! 
 
SERIN 18, 1940, [sData] 神奇的是這一行,我跟本沒有p18它還能讓我控制, 
最扯的是...我鮑率哪來的1940 就亂打... 竟然可以如我try出來的一樣運做... 
我一整個不知道該如何下手(如果大大覺得這一段很亂就不要看了= =,因為我覺的是bug) 
 
 '電腦回傳值大於基準值,判斷正確就運作,不正確不運作 
  '電腦回傳值小於基準值,判斷正確就不運作,不正確就運作 
  '電腦回傳值等於基準值, 不正確就運做 
' {$STAMP BS2} 
' {$PBASIC 2.5} 
' test version 
sData   VAR     Byte 
 
 
  DO 
 
Main: 
  SERIN 18, 1640, [sData] 
 
  IF sData > 123 THEN HIGH 15 '123代表基準值 
  IF sData > 121 THEN HIGH 5  '121代表基準值 
  IF sData < 119 THEN HIGH 1  '119代表基準值 
 
  PAUSE 100 
 
  LOOP 
 
  END 
 
  '此範例為走投無路版 
******************************************************************** 
我現在是希望能一邊接收超音波 又能即時的傳值回去給bs2來達到high腳位的方法 
(high腳位是為了控制馬達,自己另外的馬達(PIC已經寫好)) 
  
還是大大有別的方法!?   
 
我是有想過我把超音波測到的 值都回傳給人機耑 而馬達端也寫一個RS232,都在人機端處理直接下達命令給馬達. 
  
這樣就不需要回傳值給BS2了!! 可是我是覺的不可能不行阿= =+!! 
 
PS.本來想附圖可是我好像不能貼,還是我不會= =+?! 
 
字有點多,辛苦大大了= =+!! 我把他打的很詳細= =+!! 
 
因為我真的很需要= =+!! |   
 
 
 
 |