1_mpu6050陀螺仪角度方向和静态平衡角度测试
/*说明:
1【陀螺仪补偿值的计算】
试时提前用calcGyroOffsets(true)函数计算出,补偿值。
知道mpu6050的补偿值后用setGyroOffsets()直接设置补偿值。
避免每次开机都要计算补偿值(注:检测大概需要3-5秒时间)
2【静态平衡角度获取】
普通做法是将小车两轮悬空,两轮间底盘放置在水平置物架上(如包裹小纸盒),读取此时的角度。可以大概作为静态平衡角度。
但因安装时各电器器件和电池安装不会绝对居中,所以下车的中心不一定在水平上。
最好通过放置小车轮子在桌面,用手前后调整找到保持平衡的静态角度。
*/
// 20220902测试,静态角度为-1.14度。陀螺仪补偿值测定后为setGyroOffsets(8.24, 1.43, -0.34);
#include <MPU6050_tockn.h>
#include <Wire.h>
MPU6050 mpu6050(Wire); //实例化mpu对象
void setup()
{
Serial.begin(9600);
Wire.begin(13, 15);
mpu6050.begin();
// mpu6050.calcGyroOffsets(true);
// mpu6050.setGyroOffsets(-0.02,-0.02, -0.02);
}
void loop()
{
mpu6050.update();//陀螺仪刷新
float AngleX = mpu6050.getAngleX();
Serial.println(AngleX);
// float AngleY = mpu6050.getAngleY();
// Serial.println(AngleY);
//检测Z轴偏转时的加速度数值大小值,作为转向环PWM计算参考。正常直行时在-10-10之间波动。
//顺时针为负值,逆时针为正值
// float GyroZ = mpu6050.getGyroZ();
// Serial.println(GyroZ);
}
2_马达驱动方向和死区大小测试
/*
* ==程序编写2==
* 【马达驱动方向和死区大小测试】
*
* 测试结果 6v电压供给下。
* pwm+为前进,pwm+-为后退
* 左马达IN1 IN2,OUT1 OUT2 , pwm 36起转。
* 右马达IN3 IN4,OUT3 OUT4, PWM 39起转。
*
*/
#define IN1 26
#define IN2 27
#define IN3 32
#define IN4 33
int pwm = 0;
void motor(int left_EN, int right_EN)
{
if (left_EN == 0)
{
analogWrite(IN1, 0);
analogWrite(IN2, 0);
}
if (left_EN < 0)
{
if (left_EN < -255)
left_EN = -255;
analogWrite(IN1, 0);
analogWrite(IN2, 0 - left_EN);
}
if (left_EN > 0)
{
if (left_EN > 255)
left_EN = 255;
analogWrite(IN1, left_EN);
analogWrite(IN2, 0);
}
if (right_EN == 0)
{
analogWrite(IN3, 0);
analogWrite(IN4, 0);
}
if (right_EN < 0)
{
if (right_EN < -255)
right_EN = -255;
analogWrite(IN3, 0);
analogWrite(IN4, 0 - right_EN);
}
if