问题是如何连接Arduino传感器MPU6050和处理程序

问题描述 投票:0回答:1

我有一个通过I2C协议与Arduino连接的MPU6050陀螺仪和加速度计。这些传感器使用以下指令(在arduino IDE中)将连续数据流发送到串行端口:

Serial.print(euler[0] * 180/M_PI);
Serial.print(":");
Serial.print(euler[1] * 180/M_PI);
Serial.print(":");
Serial.println(euler[2] * 180/M_PI);

这来自传感器库中的示例草图,它只是将偏航/俯仰/侧倾的值发送到由冒号分隔的串行端口。

现在有一个有趣的部分。我一直对数据的可视化着迷,因此我想为处理过程中的串行数据构建这些图形(这是一个较大的项目的一部分,该项目包括超声波传感器,如某种雷达)。] >

因此,我写了一个简短的草图来处理捕获这些数据,以便对其进行分析和可视化。这是草图:

import processing.serial.*;

Serial myPort;

String data; //Angle values

String[] splitted; //Array containing splitted data

float yaw, pitch , roll;



void setup()
{
  myPort = new Serial (this, Serial.list()[0], 115200);

}

void draw()
{

  while (myPort.available() > 0) //data arrived fromm serial
  {

    data = myPort.readStringUntil('\n');

    //Data Parsing
    splitted = data.split(":");

    yaw = float(splitted[0]);
    pitch = float(splitted[1]);
    roll = float(splitted[2]);

    println(yaw + "  " + pitch + "  " + roll);


  }



}

此代码无效。有2个错误交替出现。其中之一是:

ArrayIndexOutOfBondsException

和另一个:

NullPointerException

指向“分割的”数组。

我认为我遇到了问题。在处理草图的先前版本中,我使用的是:

readString() function

我认为,由于数据一次发送到Arduino草图中的串行端口,因此处理草图有时仅捕获偏航,俯仰,侧倾值中的一两个,从而导致数组索引崩溃或崩溃。当没有值添加到数组时为nullPointerexception。然后,我将'''readString'''更改为'''readStringUntil('\ n')''',因为,也许第一个数据包将丢失,但接下来的另一个数据包将始终保持连接状态而不会破坏它们(我抓住了整条线)。但是也有同样的错误,所以我认为我的小经验无法帮助解决问题。我需要你的帮助。

对不起我的英语,谢谢您的帮助。

我有一个通过I2C协议与Arduino连接的MPU6050陀螺仪和加速度计。这些传感器使用这些指令将连续数据流发送到串行端口(在arduino ...

arduino serial-port processing data-visualization sensor
1个回答
0
投票

您走在正确的轨道上。这里有一些指针:

© www.soinside.com 2019 - 2024. All rights reserved.