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

发布了7 篇原创文章 · 获赞 0 · 访问量 162

猜你喜欢

转载自blog.csdn.net/qq_29855577/article/details/104537799
今日推荐