問題
如果想要給Arduino UNO R3同時接上WiFi子產品和藍牙子產品時,但是Arduino的序列槽隻有一個,怎樣才能讓Arduino同時使用多個序列槽呢?
解決方案
其實Arduino官方提供了一個軟序列槽的庫SoftwareSerial,不需要額外的去庫管理面闆中導入,隻需一句include語句就可以使用它
#include
這個庫可以将Arduino的引腳,通過程式模拟成序列槽來使用;在聲明語句中使用
SoftwareSerial mySerial(2,3);
便建立了一個自定義的軟序列槽mySerial,并把數字引腳2定義成RX,數字引腳3定義成TX
實驗驗證
我們現在通過實驗驗證軟序列槽是否有效;讓藍牙子產品的TXD和RXD接在Arduino的D2、和D3上,通過手機藍牙序列槽調試助手發送資料給HC-05子產品,如果軟序列槽有效則成功控制舵機;
代碼
#include
#include
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子產品的人絕對深有體會,再也不用燒錄一次程式就要拔一次杜邦線了。