我是新的处理和串行通信,我的问题似乎非常基本。我试图将数据从处理发送到Arduino,但似乎有些东西在翻译中丢失了。
在Arduino上,我做了一个超级简单的素描:
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 0) Serial.println(Serial.read());
}
其目的是从串行数据中读取一个字节,然后将其写回,这样我就可以看到发生了什么。使用附带的串行监视器进行测试,结果与我预期的一样:输入“0”返回“48”。到现在为止,一直都还不错。
当我运行这个处理草图时,事情开始出错:
import processing.serial.*;
Serial myPort;
void setup()
{
//frameRate(10);
myPort = new Serial(this, Serial.list()[4], 9600);
}
void draw()
{
myPort.write("0");
}
我希望这段代码能以每秒10个条目的速度返回源源不断的“48”,因为我知道这是默认的帧速率。真正发生的事情是这样的:
48
48
488
48
48
48
48
48
48
48
48
48
48
488
48
48
48
似乎每10个字节(给或取几个字节)就有一个很好的混乱变化。我得到的不是“48”,而是“488”、“4848”或“488”。更有趣的是,如果我取消注释帧率(10);在我的处理脚本中,我希望绝对不会发生任何事情,因为我将fps从10设置为10。相反,我开始看到这样的东西:
4
44
4848844
444448444844
4
44444444
844
444
844444
8
88
8
4488
84
48
4448444844
444
所以基本上这些数字不再有意义了。
我花了很长时间才将问题缩小到串行通信,在相关主题上搜索了几个小时,却没有给我任何可能发生的事情的提示。任何进一步阅读或尝试的建议都将不胜感激。
我正在使用今天下载的最新版本的处理,我的系统是一个运行Mountain Lion的MBP,安装了所有更新。
尝试替换:
myPort.write("0");
与:
myPort.write("0")-'0';
因为
ascii 0-
正如你已经发现的,如果你有多个程序试图从串口读取数据,它可能会导致这样的问题。
您还可以试用软件串行Arduino库,它允许您将任何管脚用作串行管脚。
经过一些进一步的测试,似乎在从处理中发送字节的同时打开串行监视器会因为未知的原因而将两者都弄糟。我假设在串行总线优先级上存在某种争斗,数据最终会被破坏。
解决方案:不要试图使用多个程序同时读取串行数据。
我成功地将一个整数从处理发送到Arduino,但现在我想发送一个由三个整数组成的数组,但我无法让它工作。我想使用Arduino创建一个蜂鸣器反馈,哪个处理将控制激活哪个蜂鸣器。例如,从处理发送的数据应该是[1,0,1],这意味着传感器1和3应该开始工作。蜂鸣器应该能够同时激活,以防[1,1,1]通过。 这是我到目前为止的代码:我试图理解什么数据被发送回Arduino,以了解如何使用它,我不断得到一
我试图做一些非常简单的东西,按钮计数器,有一个按钮在我的HTML-php当我点击它我发送数据'按'到我的arduino和它使led闪烁,到目前为止,还不错,但然后我想发送信号,当我在arduino中按下按钮,我想让我的php读取字符串"点击次数: N"的串行端口,N是从arduio的推送计数。 这里的问题是,在arduino串行我可以看到他字符串,一切正常,但在PHP我做
我试图让Arduino在串口读取字符“s”时触发一个中继。该字符“s”由python根据从屏幕读取的图像发送。 我的问题是arduino似乎无法从串行端口读取数据,因为它从不执行if条件。我的猜测是这两者之间存在某种死锁(这就是为什么我将ardu.close()放在函数foo中) 这是我的arduino代码: 这是我的python代码:
我一直在尝试为我的Arduino串行数据创建一个示波器。在Arduino串行绘图仪中,我可以获得合适频率的良好波形,但当我尝试将数据发送到处理时,它无法接收来自Arduino的所有数据。有办法解决这个问题吗? 阿杜伊诺 加工 谢谢
我正在尝试将数据写入我的Arduino Uno,并从中接收日期。 我在Windows 8.1上使用NetBeans,为了做到这一点,库“RXTXcomm.jar”。 我的代码是这样的,我的Arduino在COM3上,它在第25行和第80行抛出一个错误: 错误 java.lang.UnsatisfiedLinkError:java.library中没有rxtxSerial。加载gnu.io时抛出的路
我一直在试图找到一种方法,从我的PC(Windows 7)向Arduino Uno R3发送串行命令。我一直在做这个简单的程序,你应该通过USB电缆发送一个简单的“1”,以便打开车载LED。我的Arduino代码应该可以工作(我知道的,但我会确保上传它)。我一直在尝试使用Python和pySerial发送此命令,但我似乎无法让pySerial正常工作。我也尝试过使用CMD,但当我输入命令(ECHO