#define STEPS 200 // 一圈步数
#include <Stepper.h> // 步进电机库
#include <Adafruit_MPU6050.h>//mpu库
#include <Adafruit_Sensor.h>// Adafruit传感器库
#include <Wire.h> // I2C协议库
Adafruit_MPU6050 mpu; // mpu对象
Stepper stepper1(STEPS, 2, 3); //步进电机对象:方向,步数对应引脚
Stepper stepper2(STEPS, 4, 5); //D,S
Stepper stepper3(STEPS, 6, 7); //D,S
void setup() {
Serial.begin(9600);//设置串口
// 设置速度
stepper1.setSpeed(400);
stepper2.setSpeed(400);
stepper3.setSpeed(400);
// 步进1
pinMode(8, OUTPUT);
digitalWrite(8,LOW); //M1
pinMode(9, OUTPUT);
digitalWrite(9,LOW);//M2
pinMode(10, OUTPUT);
digitalWrite(10,LOW);//M3
// 步进2
pinMode(13, OUTPUT);
digitalWrite(13,LOW);
pinMode(12, OUTPUT);
digitalWrite(12,LOW);
pinMode(11, OUTPUT);
digitalWrite(11,LOW);
// 步进3
pinMode(15, OUTPUT);
digitalWrite(15,LOW);
pinMode(16, OUTPUT);
digitalWrite(16,LOW);
pinMode(17, OUTPUT);
digitalWrite(17,LOW);
// MPU初始化
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
Serial.println("MPU6050 Found!");
// 设置加速度范围
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
// 设置角速度范围
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
// 设置滤波器带宽
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
}
void loop() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp); // 得到mpu的三个数据对象
float angle_X = g.gyro.x; // X轴角速度
float angle_Y = g.gyro.y;// y轴角速度
float angle_Z = g.gyro.z;// z轴角速度
stepper1.step(angle_Z); // 按照给定步数旋转
stepper2.step(angle_Y);// 按照给定步数旋转
stepper3.step(angle_X);// 按照给定步数旋转
}