arduino与openmv通信问题
-
通过openmv的串口write功能 向arduino发送float值(字符串格式)
似乎是速度太快,收取的数据有问题。
Arduino代码段如下:
String detectString()
{
while (softSerial.read() == '[');
return (softSerial.readStringUntil(']'));}
void getList()
{
String s = detectString();
//Serial.print("s=");
//Serial.println(s);
for (int i = 0; i < s.length(); i++)
{
if (s[i] != '[')
{
nums += s[i];
}
}
data = nums;
nums = "";
Serial.print("data=");
Serial.println(data);
float PID_data = data.toFloat();
Serial.print("PID_DATA=");
Serial.println(PID_data);OPENMV代码段如下:
data_out='[%f]'%pid_output
print(data_out)
uart.write(data_out)
-
OpenMV的代码呢?
-
@kidswong999 最下面 直接一个float型数以字符串类型uart.write输出给arduino
其实我就只是想达到一个目的:openmv发给arduino一个float型数……有没有什么好办法
-
看上去像是传输的时候有问题,但是我不能确定。
把波特率调低,比如9600。
OpenMV 的代码,可以最后带一个换行。
data_out='%f/r/n'%pid_output然后Arduino 直接readline ,然后字符串转数字就行。
-
@kidswong999 感觉是openmv传太快。我给openmv和arduino波特率都是9600。好的我试试readline 谢谢
-
那你可能要考虑一下接线的问题。
是否共地。
线是否太长,连线不应该超过20cm。
是否插针接触不好。
-
@kidswong999 你是说如果波特率一致的话 不应该出现来不及接收的问题? 我是使用杜邦线