最近偶然得到一块维特智能的JY61的陀螺仪模块, 其功能是,直接输出MPU6050经卡尔曼滤波等算法得出的角度,角加速度数据 省下很多功夫,但我对其算法更感兴趣
自己焊接的底板,手艺还有待提升 本示例演示的是串口方式读取数据,还有IIC连接,以后有机会再分享 实验效果
BOM
Arduino Uno * 1
JY-61 * 1(含
邮票底板)跳线若干接线
方式
Arduino UNO --- JY-61
5V <---> VCC
GND <---> GND
0(RX)< - - > TX
程序
需要用到JY901的库,找到JY901.ZIP
把库文件夹存放在Arduino安装目录的libraries库文件夹
程序&库打包下载:https ://u16460183.ctfile.com/fs/16460183-296053314
文件夹说明:
JY901 - JY901陀螺仪库
LS_JY901 - 主程序
#include <Wire.h>
#include <JY901.h>
/ *
测试Uno R3 。
JY901 UnoR3
TX <---> 0(Rx)
* /
void setup()
{
Serial.begin(115200);
}
void loop()
{
//打印接收的数据。数据是在serialEvent中收到的;
Serial.print( “时间:20”); Serial.print(JY901.stcTime.ucYear); Serial.print( “ - ”); Serial.print(JY901.stcTime.ucMonth); Serial.print( “ - ”) ; Serial.print(JY901.stcTime.ucDay);
Serial.print(“”); Serial.print(JY901.stcTime.ucHour); Serial.print(“:”); Serial.print(JY901.stcTime.ucMinute); Serial.print(“:”); Serial。的println((浮点)JY901.stcTime.ucSecond +(浮点)JY901.stcTime.usMiliSecond / 1000);
Serial.print(“Acc:”); Serial.print((float)JY901.stcAcc.a [0] / 32768 * 16); Serial.print(“”); Serial.print((float)JY901.stcAcc。 a [1] / 32768 * 16); Serial.print(“”); Serial.println((float)JY901.stcAcc.a [2] / 32768 * 16);
Serial.print(“Gyro:”); Serial.print((float)JY901.stcGyro.w [0] / 32768 * 2000); Serial.print(“”); Serial.print((float)JY901.stcGyro。 w [1] / 32768 * 2000); Serial.print(“”); Serial.println((float)JY901.stcGyro.w [2] / 32768 * 2000);
Serial.print(“Angle:”); Serial.print((float)JY901.stcAngle.Angle [0] / 32768 * 180); Serial.print(“”); Serial.print((float)JY901.stcAngle。 Angle [1] / 32768 * 180); Serial.print(“”); Serial.println((float)JY901.stcAngle.Angle [2] / 32768 * 180);
Serial.print(“Mag:”); Serial.print(JY901.stcMag.h [0]); Serial.print(“”); Serial.print(JY901.stcMag.h [1]); Serial.print( “”); Serial.println(JY901.stcMag.h [2]);
Serial.print(“Pressure:”); Serial.print(JY901.stcPress.lPressure); Serial.print(“”); Serial。
Serial.print(“DStatus:”); Serial.print(JY901.stcDStatus.sDStatus [0]); Serial.print(“”); Serial.print(JY901.stcDStatus.sDStatus [1]); Serial.print( “”); Serial.print(JY901.stcDStatus.sDStatus [2]); Serial.print(“”); Serial.println(JY901.stcDStatus.sDStatus [3]);
Serial.print(“Longitude:”); Serial.print(JY901.stcLonLat.lLon / 10000000); Serial.print(“Deg”); Serial.print((double)(JY901.stcLonLat.lLon%10000000)/ 1e5 ); Serial.print(“m Lattitude:”);
Serial.print(JY901.stcLonLat.lLat / 10000000); Serial.print(“Deg”); Serial.print((double)(JY901.stcLonLat.lLat%10000000)/ 1e5); Serial.println(“m”) ;
Serial.print(“GPSHeight:”); Serial.print((float)JY901.stcGPSV.sGPSHeight / 10); Serial.print(“m GPSYaw:”); Serial.print((float)JY901.stcGPSV.sGPSYaw / 10); Serial.print(“Deg GPSV:”); Serial.print((float)JY901.stcGPSV.lGPSVelocity / 1000); Serial.println(“km / h”);
Serial.println( “”);
延迟(500);
}
/ *
当一个新数据来自于发生的serialEvent
硬件序列RX。此例程在每个
时间循环()运行之间运行,因此使用内部循环延迟可以延迟
响应。可以使用多个字节的数据。
* /
void serialEvent()
{
while(Serial.available())
{
JY901.CopeSerialData(Serial.read());
|