问题是什么?为什么我们需要这样做?
我最近购买了一块MPU6050分线板。我用我的Arduino Uno和我的Raspberry Pi 3尝试过它。
它为Raspberry提供了这个奇怪的输出(没有任何运动/稳定状态)!
InvenSense MPU-6050
Rpi start 2018
Output range : 68, error = 0
control ratio : 0, error = 0
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1944, 368, 15608
temperature: 30.576 degrees Celsius
gyro x,y,z : -34, -204, -247,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1952, 364, 15304
temperature: 30.435 degrees Celsius
gyro x,y,z : -38, -216, -274,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1864, 388, 15356
temperature: 30.482 degrees Celsius
gyro x,y,z : -34, -233, -278,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1888, 324, 15260
temperature: 30.576 degrees Celsius
gyro x,y,z : -14, -220, -261,
同样,我尝试过使用Arduino,它运行正常。
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1, 4, 1
temperature: 30.4 degrees Celsius
gyro x,y,z : -3, -15, -7,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1, 4, 1
temperature: 30.4 degrees Celsius
gyro x,y,z : -3, -15, -7,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1, 4, 1
temperature: 30.5 degrees Celsius
gyro x,y,z : -3, -15, -7,
现在,我从Arduino那里得到了正确的解读。这是问题!
我不知道如何将适当的数据从Arduino发送到pi(USB串行通信)。
答案 0 :(得分:0)
你的Raspberry似乎比你的arduino更好。
在您的Arduino输出上,加速度计的值几乎为0,这是没有意义的,因为即使您的电路板根本不移动,您也会因地球重力拉力而产生加速度。 / p>
对于陀螺仪来说,初始位置将处于加电状态,然后如果移动它,值将会改变,稍后即使它是静态的,也会保持这些位置。
从您提供的输出中,Raspberry似乎提供了正确的数据,而Arduino似乎有问题。
看来这个问题来自你的Arduino。鉴于arduino的处理能力要低得多,我建议你研究一下你的arduino设置。
一个原因可能是I2C总线上没有上拉电阻。
答案 1 :(得分:0)
一旦您知道端口已准备好读取或写入,就可以使用read()
或write()
方法。或者,也可以调用readLine()
和readAll()
便利方法。
如果不是一次读取所有数据,则剩余数据将在稍后可用,因为新的输入数据被附加到QSerialPort的内部读缓冲器。您可以使用setReadBufferSize()
限制读取缓冲区的大小。
创建一个信号和插槽。 //做你的东西
//这是您问题的答案。从这样的qt读取数据(如下所示)。
if(serial -> canReadLine())
{
QString str = serial -> readAll();
int var = str.toInt(); // convert into int
// Read data and print or use progressBar to print data
}