问题
如果想要给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模块的人绝对深有体会,再也不用烧录一次程序就要拔一次杜邦线了。