在网上找了一个基于mpu6050的陀螺仪鼠标的程序,测试了一下效果还不错。程序有点不懂的地方,希望大神帮忙。
这个鼠标采用的是usb接口。单片机给电脑发送4个字节的数据,
void Joystick_Send(u8 buf0,u8 buf1,u8 buf2,u8 buf3){
u8 Mouse_Buffer[4] = {0, 0, 0, 0};
/* prepare buffer to send */
Mouse_Buffer[0]=buf0;
Mouse_Buffer[1]=buf1;
Mouse_Buffer[2]=buf2;
Mouse_Buffer[3]=buf3;
/*copy mouse position info in ENDP1 Tx Packet Memory Area*/
UserToPMABufferCopy(Mouse_Buffer, GetEPTxAddr(ENDP1), 4);
/* enable endpoint for transmission */
SetEPTxValid(ENDP1);
}
主函数中调用Joystick_Send(keysta,x0,y0,0); keysta为按键指令,x0和y0是发送到电脑端的坐标值。程序中
x0=getGyroX()>>7;
y0=-getGyroY()>>7;
getGyroX()是这样定义的
short getGyroX(void)
{
short GyroX = 0;
char GyroXH = 0 , GyroXL = 0;
GyroXH = Single_Read_IIC( SLAVEADRESS , GYRO_XOUT_H );
GyroXL = Single_Read_IIC( SLAVEADRESS , GYRO_XOUT_L );
GyroX = (GyroXH<<8)|GyroXL;
return GyroX;
}
问题来了getGyroX()读出来的不是角速度吗?程序中没有做别的处理直接把getGyroX()付给了x0,。这个怎么理解啊?
|