問題
如果想要給Arduino UNO R3同時接上WiFi模塊和藍牙模塊時,但是Arduino的串口只有一個,怎樣才能讓Arduino同時使用多個串口呢?
解決方案
其實Arduino官方提供了一個軟串口的庫SoftwareSerial,不需要額外的去庫管理面板中導入,只需一句include語句就可以使用它
#include <SoftwareSerial.h>
這個庫可以將Arduino的引腳,通過程序模擬成串口來使用;
在聲明語句中使用
SoftwareSerial mySerial(2,3);
便創建了一個自定義的軟串口mySerial,並把數字引腳2定義成RX,數字引腳3定義成TX
實驗驗證
我們現在通過實驗驗證軟串口是否有效;讓藍牙模塊的TXD和RXD接在Arduino的D2、和D3上,通過手機藍牙串口調試助手發送數據給HC-05模塊,如果軟串口有效則成功控制舵機;
代碼
#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);
}
}
測試結果
手機藍牙連接上HC-05模塊後,發送字符串,成功控制舵機
最後
使用軟串口,有兩點好處;好處一:arduino就可以同時使用藍牙模塊和WiFi模塊,再也不用爲串口不夠用而發愁了!好處二:使用軟串口連接,就不用擔心燒錄程序時的串口乾擾問題了,如果經常使用串口連接藍牙或者WiFi模塊的人絕對深有體會,再也不用燒錄一次程序就要拔一次杜邦線了。