我尝试测试系统,但我不确定问题是否与xbee,传输代码或接收代码有关。在我发布代码之前,我将解释我们对信号的处理方式。我们有三个模拟信号,将使用arduino和xbee屏蔽通过一个xbee串行发送。我们希望将这些信号发送到接收xbee,其中arduino将输出这些信号,通过导线连接到第三个arduino,以便在Simulink程序中使用。我们使用arduino mega作为发送端,使用arduino uno作为接收端。我被告知我需要进行串行流媒体,但我不确定是怎么做的。我理解xbee和arduinos都会对信号进行数字化处理,但我们希望得到的信号与我们传输的模拟信号非常相似。非常感谢任何数量的帮助!!
这就是我在AT模式下配置xbees(系列1)的方法:
传输Xbee:
通道:10
Pan id: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);
}
}
答案 0 :(得分:0)
听起来你在“AT模式”或“透明串行”模式下使用XBee模块,模块A的串行端口上接收的任何内容都从模块B的串口发出,反之亦然。 / p>
如果是这种情况,通过直接相互连接的两个设备的串行端口进行初始开发可能会有所帮助。在那里计算出你的串行协议,然后尝试使用XBee模块作为串行电缆替代品来运行它。
考虑您要发送的数据的格式,以及如何在另一端处理它。您将如何分离读数并确定它们属于哪种模拟输入?使用当前代码,您可以在单独的行上打印读数,但不清楚哪个是A0
。也许你想把它们发送到一行,每次阅读之间都有逗号?
在接收端,您需要使用atoi()
或strtoul()
等C函数将文本转换回整数。
如果您正在尝试在Arduino上创建模拟输出,则可能使用PWM(脉冲宽度调制)的数字输出。这个Instructable在描述这个概念方面做得不错。