波特率,也就是數據通信的速度,它是目前比較流行的傳輸速率。以這個速度通信的話,每發送一個字節(Byte)到控制端需要的時間大概是1毫秒。需要注意的是,為了精確控制四軸的平衡,我們需要盡量在短時間內多讀取各種傳感器的值。以目前的350Hz的采樣率來說,每2.85毫秒就需要讀取一次陀螺儀和重力感應器。這種情況下,1Byte/ms的傳輸速度顯然是不能容忍的。解決的辦法就是修改波特率,Arduino支持的波特率包括:300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 和 115200。如果修改的話,相應的控制端也需要修改成一樣的。
大家可能會說,為什么不全都用高速的呢?實際上能使用多少的波特率,跟處理器的主頻有關;而且主頻最好是波特率的整數倍,否則的話可能會增加錯誤率。如果用USB和電腦通信,可以達到最高的115200;如果用藍牙和手機通信,只能達到9600的波特率(因為藍牙模塊修改波特率還需要額外購買一個控制板)
很讓人高興的一點是,Arduino支持在運行過程中動態修改波特率。所以可以首先使用9600連接,當發現連接對象是電腦時,調整為115200:
if(controlType == 100 && !connectToPc) { Serial.end(); connectToPc = true; Serial.begin(115200); }