【发布时间】:2013-11-19 18:50:12
【问题描述】:
我正在使用来自 sparkfun 的 MMA7361 加速度计,它连接到我的 arduino uno,然后又连接到我的电脑。
我只是从每个轴 (x,y,z) 读取值,然后使用一系列 Serial.print 和 Serial.write 将它们直接通过串行端口发送到我的电脑。从那里我设置了一个程序来读取和显示信息 myPort.readString();
现在它在 80% 的时间里都能正常工作,而且它给出了正确的结果,但有时我会通过串口发送一些随机值,它会弄乱接收程序,使我无法正确使用信号。
我很确定不是传感器本身发送了干扰信号,因为我尝试保存 10 个不同的读数,然后发送平均值以尽量减少影响,但没有运气。接收 pc 仍然得到 0-200 左右的奇怪值峰值(从我看到的输出)。
我尝试拔出从传感器连接到模拟输入端口的电缆,但奇怪的是它给出了一些随机值而不是预期的 0,我不确定,但对我来说似乎有一些事情要做关于我的问题。
我读过一些下拉电阻,但它只适用于按钮,对吧?
我刚拿到我的 arduino,我正在尝试学习如何使用传感器以及你可以用它们做什么以及会出现什么问题,所以如果有人能帮助我解决这个问题,我将不胜感激 :)
这是一个随机值弄乱输出的例子:
252:236:218
251:202:215
2 <-- this is where it begins
59:231:245
28
4:144:142 <-- messing up the order of the values
251:19
2:187
246:235
:244
240:190:
238
250:202:2
32
248:243:224
245:227:240
251:228:244
253:223:241
如果你愿意,我也有发送和接收的代码:
Serial.print(analogRead(xpin));
Serial.write(":");
Serial.print(analogRead(ypin));
Serial.write(":");
Serial.println(analogRead(zpin));
我真的希望发送只是一行代码,但我无法将所有数字和字符串连接到 arduino 上的单行字符串。 收货:
if ( myPort.available() > 0) {
result = myPort.readString();
println(result);
}
【问题讨论】:
-
尝试在打印语句之间添加一个小的延迟。可能是几毫秒。延迟(5)例如。您在 PC 上使用什么语言来读取串口?
-
它确实对 1ms 的延迟有所帮助,但它仍然让那些数字弄乱了列表。我尝试了 5 或 10,但越多越糟糕。
-
我正在使用处理来接收信息。
标签: random arduino return-value accelerometer sensors