Ardunio與計算機通訊最經常使用的方式就是串口通訊。在Arduino控制器上,串口都是位於Rx和Tx兩個引腳,Arduino的USB口經過一個轉換芯片與這兩個串口引腳鏈接。該轉換芯片會經過USB接口在計算機上虛擬出一個用於Arduino通訊的串口。當你使用串口功能的時候,就意味着你不能引用串口引腳做爲輸入或者輸出。
要想使串口與計算機通訊,首先須要先啓用串口功能,初始化Arduino的串口通訊功能,也就是:git
其中參數speed指串口通訊波特率,用於設定串口通訊速率的參數。串口通訊雙方必須使用相同的波特率才能夠正確通訊。
波特率是一個衡量通訊速度的參數,表示每秒傳送的bit的個數。如9600波特表示每秒發送9600bit的數據,經常使用如下波特率:300,600,1200,2400,4800,9600,14400,19200,28800,38400,57600,115200。波特率高表示串口通訊速率越快。
你可使用Arduino IDE內置的串口監視器與Arduino板子通訊。點擊工具欄上的串口監視器按鈕(注意設置相同波特率),咱們接下來的實驗就是用到它。
Arduino Mega上有三個額外的串口:Serial1,Serial2,Serial3。如有使用這三對引腳與您的我的電腦通訊,你須要一個額外的USB轉串口適配器;若要用它們來與外部的TTL串口設備進行通訊,將Tx引腳鏈接到設備Rx引腳,將Rx引腳鏈接到設備的Tx引腳,將GND鏈接到設備的GND。緩存
接下來介紹一下串口經常使用函數。函數
那麼,問題來了,串口到底有什麼用?根據我本身的經驗:工具
#define BTSerial Serial1 #define MyDebugSerial Serial //該條語句用於使能DEBUG輸出信息,屏蔽掉就不會輸出debug調試信息 #define DEBUG #ifdef DEBUG #define DBGLN(message) MyDebugSerial.println(message) #else #define DBGLN(message) #endif
當不須要調試信息時就註釋掉 #define DEBUG。oop
/** * @Desc 讀取數據並原樣返回數據 * @author 單片機菜鳥 * @Date 2016/12/10 */ void setup() { // 初始化串口 Serial.begin(9600); //等待串口準備好 while(!Serial); } void loop() { //若是緩衝區中有數據,則讀取並輸出 if(Serial.available()>0){ char ch = Serial.read(); Serial.print(ch); } }
打開Arduino IDE自帶的串口監視器進行調試(要設置相同波特率),當進行串口通訊時,Arduino控制器上就會看到標有RX TX的2個LED燈閃爍提示,如沒有意外,應該顯示以下(我本身隨便寫的):ui
/** * @Desc 串口控制開關燈 * @author 單片機菜鳥 * @Date 2016/12/10 * 注意:LED的一端接到5V,另一端接到輸出引腳,低電平亮 */ #define LED_START 2 #define LED_END 9 void setup() { // 初始化串口 Serial.begin(9600); //等待串口準備好 while(!Serial); led_Init(); } void loop() { //若是緩衝區中有數據,則讀取並輸出 if(Serial.available() > 0){ char ch = Serial.read(); Serial.print(ch); //開燈 if(ch == 'a'){ led_On(); }else if(ch == 'b'){ led_Off(); } } } /** * @Desc 初始化LED */ void led_Init(){ // 將2-9號引腳設置爲輸出狀態 for(int i=LED_START;i<=LED_END;i++){ pinMode(i,OUTPUT); digitalWrite(i,HIGH);//滅掉LED } } /** * @Desc 打開LED */ void led_On(){ //從引腳2到9引腳,點亮LED for(int i=LED_START;i<=LED_END;i++){ digitalWrite(i,LOW);//LED亮 } } /** * @Desc 關閉LED */ void led_Off(){ //從引腳2到9引腳,關閉LED for(int i=LED_START;i<=LED_END;i++){ digitalWrite(i,HIGH);//LED滅 } }
個人實驗結果就是燈根據個人指令亮滅.debug
整體來講,這節課不難,在理解串口基礎上運用串口提供的一些函數就能進行基本的串口通訊開發。調試