Arduino使用多個串口的方法

問題

如果想要給Arduino UNO R3同時接上WiFi模塊和藍牙模塊時,但是Arduino的串口只有一個,怎樣才能讓Arduino同時使用多個串口呢?
Arduino唯一的串口.png

解決方案

其實Arduino官方提供了一個軟串口的庫SoftwareSerial,不需要額外的去庫管理面板中導入,只需一句include語句就可以使用它

#include <SoftwareSerial.h>

這個庫可以將Arduino的引腳,通過程序模擬成串口來使用;
在聲明語句中使用

SoftwareSerial mySerial(2,3);

便創建了一個自定義的軟串口mySerial,並把數字引腳2定義成RX,數字引腳3定義成TX

實驗驗證

我們現在通過實驗驗證軟串口是否有效;讓藍牙模塊的TXD和RXD接在Arduino的D2、和D3上,通過手機藍牙串口調試助手發送數據給HC-05模塊,如果軟串口有效則成功控制舵機;
軟串口測試.png

代碼
#include<Servo.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3); //定義D2、D3分別爲TX、RX
Servo myservo;
int pos = 0;

void setup()  
{  
 mySerial.begin(9600);  //以9600波特率打開軟串口
 myservo.attach(9); //舵機控制引腳9
 myservo.write(0);
 delay(10000);
}  

void loop()  
{   
   while(mySerial.available())  
   {  char c;
      c=mySerial.read();
      mySerial.println (c);
      switch(c){
        case '2':open_the_door();
        break;
        }
   }
   
}

void open_the_door(){
    for (pos = 0; pos <= 180; pos += 1) { 
    myservo.write(pos);            
    delay(5);                       
  }
}

測試結果

軟串口通信喚醒舵機.gif

手機藍牙連接上HC-05模塊後,發送字符串,成功控制舵機

最後

使用軟串口,有兩點好處;好處一:arduino就可以同時使用藍牙模塊和WiFi模塊,再也不用爲串口不夠用而發愁了!好處二:使用軟串口連接,就不用擔心燒錄程序時的串口乾擾問題了,如果經常使用串口連接藍牙或者WiFi模塊的人絕對深有體會,再也不用燒錄一次程序就要拔一次杜邦線了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章