[教學] NXT Bluetooth – 回傳值範例

        在上次的文章 [教學] NXT Bluetooth – 傳/收值範例 裡,我們學到了如何讓 Master 傳值給 Slave 收取。但是,光是單方面的發出指令是不夠的,還必須要讓兩台NXT可以互相「溝通」,也就是要讓 Salve 要可以回傳值給 Master請看以下兩組程式,當Master的觸碰感應器按下時,SlaveA馬達會轉三秒,轉完後回傳值給MasterMaster接收到Slave回傳的訊息後便發出提示音

 

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

//master  請將觸碰感應器接在1號輸入端

#define BT_CONN 1

#define OUTBOX 5

#define INBOX 3

sub BTCheck (int conn)

{

if (!BluetoothStatus(conn)==NO_ERR) 

{

TextOut(5,LCD_LINE2,"Error");//顯示連線錯誤訊息

Wait(1000);

Stop(true);

}//if

}// BTCheck

task main()

{

BTCheck (BT_CONN); //檢查與slave之連線

SetSensorTouch(S1);

         bool n;

        while(true)

        {

               until(Sensor(S1) == 1);

               SendRemoteBool(BT_CONN, OUTBOX, 1);

               while(n == 0)

             

                        ReceiveRemoteBool(INBOX, true, n);

              }

              PlayTone(440,300);

              Wait(300);

               n = 0;

        }

}


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

//slave

#define INBOX 5

#define OUTBOX 3

sub BTCheck(int conn)

{

if (!BluetoothStatus(conn)==NO_ERR)

{

TextOut(5,LCD_LINE2,"Error"); //顯示連線錯誤訊息

Wait(1000);

Stop(true);

}//if

}//BTCheck

task main()

{

BTCheck(0); // 從slave來看,master都是連接在line 0

bool bval;

while(true)

{

while(bval == 0)

{

        ReceiveRemoteBool(INBOX, true, bval);    

         }

         OnFwd(OUT_A,100);

         Wait(3000);

         Off(OUT_A);

         SendResponseBool(OUTBOX,1);

         bval = 0;

}//while

}//main

 

Slave 的程式裡,我們用到了 SendResponseBool() 指令,這個指令可以讓 Slave 直接回傳訊息給 Master,所以我們不需要選要傳的 line,只需要設定要傳的信箱(第一個參數)與要傳的值(第二個參數)就好,真正達到了 Master-Slave 互通有無

有任何建議或疑問歡迎提出討論!另外以上內容摘自 CAVE 即將上市的書 – 機器人新視界 NXT與NXC 第二版 "機器人對話"


同時非常感謝 Bridan 先生對本章所提出的建議,謝謝您。

One thought on “[教學] NXT Bluetooth – 回傳值範例

  1. Bridan says:

    阿吉

    謝謝您給我機會看第一手初稿,只是儘我所能補充意見而已。

    [版主回覆04/26/2010 13:58:19]Bridan客氣了, 有您幫忙看稿, 實為小弟與眾多讀者之福.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *