我试过测试系统,但我不确定问题是xbee的、传输代码还是接收代码。在我发布我的代码之前,我将解释我们对信号所做的事情。我们有三个模拟信号,将通过一个使用arduino和xbee屏蔽串行发送的xbee。我们希望将这些信号发送到接收xbee,在那里arduino将输出这些信号,通过电线连接到第三个arduino,用于Simulink程序。我们使用一个阿杜诺超级大号作为发射侧,一个阿迪诺尤诺作为接收方。我被告知我需要做连续流,但我不知道是怎么做到的。我理解xbee和arduinos都是数字化信号,但我们希望得到一个非常类似于我们正在传输的模拟信号。任何形式的帮助都是非常感谢的!
这就是我如何在AT模式下配置我的xbee(系列1):
传输Xbee: 频道:10 Pan编号: 1234 我的: 10 DL: 11 接收Xbee: 频道:10 Pan ID: 1234 我的: 11 DL: 10
发送Arduino代码:
void setup() {
Serial.begin(9600);
}
void loop() {
// read the input on analog pins
int sensorValue1 = analogRead(A0);
int sensorValue2 = analogRead(A1);
int sensorValue3 = analogRead(A2);
// print out the value you read:
Serial.println(sensorValue1);
Serial.println(sensorValue2);
Serial.println(sensorValue3);
delay(1);
} 接收Arduino代码:
int received1=8;
int received2=9;
int received3=10;
void setup(){
pinMode(received1, OUTPUT);
pinMode(received2, OUTPUT);
pinMode(received3, OUTPUT);
Serial.begin(9600);
}
void loop(){
if(Serial.available() )
{
byte output1 = Serial.read();
byte output2 = Serial.read();
byte output3 = Serial.read();
digitalWrite(received1, HIGH);
digitalWrite(received2, HIGH);
digitalWrite(received3, HIGH);
}
}发布于 2014-03-21 18:31:06
听起来您在使用"AT模式“或”透明串行“模式下的XBee模块,其中模块A的串口上接收到的任何信息都从模块B的串口发送出去,反之亦然。
如果是这样的话,它可能有助于您的最初开发与您的两个设备的串行端口直接连接到对方。在那里制定您的串行协议,然后尝试运行它与XBee模块到位作为串行电缆的替代。
考虑您要发送的数据的格式,以及如何在另一端处理它。你将如何分离读数并识别它们属于哪个模拟输入?使用当前的代码,可以将读数打印在不同的行上,但不清楚哪个是A0。也许你想在每次阅读之间用逗号把它们发送到一行上?
在接收端,需要使用C函数(如atoi()或strtoul() )将文本转换回整数。
如果您试图在Arduino上创建模拟输出,则可以使用使用PWM (脉宽调制)的数字输出。这个不可构造很好地描述了这个概念。
https://stackoverflow.com/questions/22523700
复制相似问题