Arduino 实例(三十三)两个Arduino板卡实现两台电脑的软串口通信
1 实现的功能
两者串口连接 | 两者串口连接 | ||
电脑A | Arduino UNO | Arduino nano | 电脑B |
软串口连接并通信 |
如下电脑B的com5口,输入信息,回车
电脑A的com3口,得到信息
2 Arduino UNO 和 Arduino nano板卡的连接
Arduino UNO | Arduino nano |
Pin脚3 | Pin脚5 |
Pin脚2 | Pin脚6 |
接地互联 |
3 实物连接
4 Arduino UNO板卡的程序
#include<SoftwareSerial.h>
SoftwareSerial softSerial(3,2);
void setup() {
//初始化serial,该串口用于与计算机连接通信:
Serial.begin(9600);
//初始化serial1,该串口用于与设备B连接通信;
softSerial.begin(9600);
softSerial.listen();
}
//两个字符串分别用于存储A,B两端传来的数据
String device_A_String="";
String device_B_String="";
void loop() {
// 读取从计算机传入的数据,并通过softSerial发送个设备B:
if(Serial.available()>0)
{
if(Serial.peek()!='\n')
{
device_A_String+=(char)Serial.read();
}
else
{
Serial.read();
Serial.print("you said:");
Serial.println(device_A_String);
softSerial.println(device_A_String);
device_A_String="";
}
}
//读取从设备B传入的数据,并在串口监视器中显示
if(softSerial.available()>0)
{
if(softSerial.peek()!='\n')
{
device_B_String+=(char)softSerial.read();
}
else
{
softSerial.read();
Serial.print("device B said:");
Serial.println(device_B_String);
device_B_String="";
}
}
}
5 Arduino nano板卡的程序
#include<SoftwareSerial.h>
//新建一个softSerial对象,rx:6,tx:5
SoftwareSerial softSerial1(6,5);
void setup() {
// 初始化串口通信:
Serial.begin(9600);
//初始化软串口通信;
softSerial1.begin(9600);
//监听软串口通信
softSerial1.listen();
}
// 两个字符串分别用于存储A、B两端传来的数据:
String device_B_String="";
String device_A_String="";
void loop() {
// 读取从计算机传入的数据,并通过serial1发送个设备B:
if(Serial.available()>0)
{
if(Serial.peek()!='\n') //在没接收到回车换行的条件下
{
device_B_String+=(char)Serial.read(); //这段代码是在把字符串联成字符串
}
else
{ //这段代码实现从缓冲区读取数据,并将数据发送到计算机显示和软串口发送;
Serial.read();
Serial.print("you said:");
Serial.println(device_B_String);
softSerial1.println(device_B_String);
device_B_String="";
}
}
//读取从设备A传入的数据,并在串口监视器中显示
if(softSerial1.available()>0)
{
if(softSerial1.peek()!='\n')
{
device_A_String+=(char)softSerial1.read();
}
else
{
softSerial1.read();
Serial.print("device A said:");
Serial.println(device_A_String);
device_A_String="";
}
}
}