[Arduino]_切換多組Serial藍芽傳輸的方法+修改MeetAndroid組態檔

延續一下很久以前的遙控車那一篇,因為上上週買的Mega Sheild V2.1 上周收到了

 

上面有3組XBee型態的插槽,分別對應COM0、COM1、COM2

COM3則是針腳擴充型態,如圖:

今天的重點在COM1,圖片的COM1插了一片XBee形式的藍芽

 

以前都只有寫過COM0(也就是跟MEGA主板的燒錄用TX RX同一個COM)的溝通程式

但這會有個問題,如果你在燒錄程式時,你把藍芽模組或者XBee模組連結在COM0時,這時候會跟COM0上的藍芽衝突

 

導致燒錄程式會卡在那裏燒不進去,需要拔除Arduino,拆下在COM0的裝置才能順利燒錄

 

這樣真的很麻煩…

所以既然MEGA ADK上有4組COM PORT,就來試看看如何使用,而且為了測試

還結合了之前遙控車那一篇的amarino跟MeetAndroid來做藍芽傳輸的測試


但就上一篇遙控車的sketch,還是需要更改一些東西,自己摸了一下整理出來

 

Serial參數的用法我就不在這裡累贅了,可以自己到官方網站做查詢http://arduino.cc/en/Reference/serial

 

此篇主要是講MeetAndroid如需讓Arduino要使用其他COM Port做藍芽傳輸時需要更改的地方

 

原先amarino官方給的程式包括Arduino上的sketch跟MeetAndroid的編譯組態檔都是寫給在COM0所使用的

 

所以單純把sketch上的上的Serial.begin(9600);改成Serial1.begin(9600);還是會有問題的(但這裡還是要改,不改也是白搭…)

 

 

因為他是參考MeetAndroid.h這一個C語言的涵式庫,

如果你有按照我上一篇遙控車的方式安裝好MeetAndroid的示範code,這個檔案會在arduino-1.0\libraries\MeetAndroid底下

 

不過有C撰寫經驗的人就會知道MeetAndroid.h只是標頭檔,真的要改的是MeetAndroid.cpp

用記事本把MeetAndroid.cpp打開進行編輯

 

這邊你需要運用一些小小的程式理解能力,來修改哪一個部分是指向Serial的程式

你可以按下Ctrl+F,搜尋“Serial”

然後把他代換成你要用的COM PORT

 

例如我要換成COM1,就要把Serial換成Serial1

 

因為直接全部取代的話,有可能會取代到註解的部分,當然這是無傷大雅…不過個人覺得一行一行代換掉會比較保險

下面舉個例子

裡面有一塊副程式代碼如下:

void MeetAndroid::send(double n){
Serial.print(startFlag);
Serial.print(n);
Serial.print(ack);
}

要修改成COM1時就是:

void MeetAndroid::send(double n){
Serial1.print(startFlag);
Serial1.print(n);
Serial1.print(ack);
}

 

依此類推

 

如果有人還是搞不清楚到底怎麼改…我這邊也提供已經修改好的.CPP檔可供下載,可以回去跟原版的參照一下動了甚麼

基本上目前只有動Serial這一部分,變成Arduino透過COM1的藍芽來跟Android手機做溝通

 

所以想用COM1以外的還是要懂上面我在說甚麼,就可以自己動手改相對應的部分~

 

多組COM PORT的好處是你可以透過不同的COM做資料傳輸,當然這一篇是因為要沿用MeetAndroid這個函式庫傳輸所以動比較多東西

 

要不然通常都利用官方的lib做撰寫不需要動到什麼cpp檔,只需要在Serial.being前面的Serial改成Serial1就可以簡單快速存取

詳細的Serial語法上面有官方連結~自己去看

 

MeetAndroid.cpp(COM1版)下載連結:https://docs.google.com/open?id=0B3fyBbL11HpIcDN6amlic21TUzZ6UmJxQl9YdE5Vdw

 

 

 

thx for:

http://arduino.cc/en/Reference/serial

http://www.dfrobot.com/wiki/index.php?title=Mega_IO_Expansion_Shield_V2(SKU:DFR0165)

Leave a comment

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料