在Arduino上测试RS485模块之通讯中接收数据的控制
模块介绍:本实验的目的是在RS485模块通信的基础上实现接收端的控制,即接收端是否接收发送端的数据。实验器材:
Arduino UNO 2块
RS485模块 2块双公头杜邦线 2根电路连接:将上图中左边的RS485模块上H2的485-A连接到右边RS485模块上H2的485-A上;将上图中左边的RS485模块上H2的485-B连接到右边RS485模块上H2的485-B上;将两个RS485模块三的P1都用短路帽连接到3.3V上;将作为接收端的RS485模块(上图中左边的模块)上的P2都用短路帽连接到TX_CTRL上;将作为发送端的RS485模块(上图中右边的模块)上的P2都用短路帽连接到D9_CTRL上;用短路帽将两块RS485模块的D2与TX短接,D3与RX短接。实验代码:接收代码:#include <SoftwareSerial.h>SoftwareSerial mySerial(3,2);
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(9,OUTPUT);
}
void loop() {
while(mySerial.available() > 0){
char c = mySerial.read();
Serial.write(c);
}
}
发送代码:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3,2);
bool a=0;
int b=0;
void setup() {
mySerial.begin (9600);
Serial.begin(9600);
pinMode(9,OUTPUT);
}
void loop() {
if(a==0)
{
digitalWrite(9,HIGH);
Serial.println ("pin9 is HIGH");
mySerial.println("pin9 is HIGH");
}
else
{
digitalWrite(9,LOW);
Serial.println ("pin9 is LOW");
mySerial.println("pin9 is LOW");
}
b++;
a=b%2;
delay(1000);
}
上面的代码是含义是接收端始终处于监听的状态,而发送端通过Arduino的D9控制RS485是否发送使能,D9为高电平RS485发送数据失能,在接收端看不到数据,D9为低电平RS485发送使能,可以在接收端看到数据。
实验结果与分析:
由于RS485是差分信号,所以当D9为高电平时无法满足差分的最小阈值,故数据无法发送,相反的,当D9为低电平时数据就可以发送了。本次试验是在《在Arduino上测试RS485模块之通讯测试》的基础上完成的,过程比较简单,希望大家喜欢。
请教楼主:你用485控制过变频器没有???? 楼主,我按照《在Arduino上测试RS485模块之通讯测试》的连接和code连接两个mega。试了很久就是没有反应。Serial.available永远是0。不知你有没有建议? 这个485扩展板在哪里购买
页:
[1]