回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【Arduino 动手做】Arduino MPU6050传感器控制伺服电机 简单

头像 驴友花雕 2025.06.24 4 0

在这个 aduino 项目中,我们将使用 MPU6050 Accelerometer 传感器来控制伺服电机。有四种手势模式,如 UP、DOWN、LEFT 和 RIGHT。我们可以使用这个项目来构建手势控制汽车和许多其他项目。

组件要求:    
1. Arduino Uno
2. MPU6050
3. 伺服电机 SG90 X 4
4. 面包板
5. 跳线
电路图:

引脚连接:
6. 让我们使用 Arduino Uno 和面包板进行连接。
• 将 Arduino 5v 引脚连接到面包板正极。
• 将 Arduino GND 连接到面包板 GND 侧。
7. 现在,我们必须与 Arduino Uno 和 MPU6050 加速度传感器建立连接。
• 将 mpu6050 VCC 引脚连接到 Arduino 3.3v 引脚。
• 将 mpu6050 GND 引脚连接到面包板 GND 侧。
• 将 mpu6050 SCL 引脚连接到 Arduino a5 引脚。
• 将 mpu6050 SDA 引脚连接到 Arduino a4 引脚。
8. 现在,我们必须与 Arduino Uno 和伺服电机建立连接。

9. 现在电路完成了
10. 让我们跳到编码部分
11. 打开 Arduino IDE
12. 首先,我们必须安装库,因此,转到工具 --> Manage Libraries,然后搜索这三个库并安装它们。
13. Adafruit MPU6050
14. Adafruit 统一传感器
15. Adafruit SSD1306
16. 
安装库后,现在从下面复制代码并将其粘贴到 sketch 上。
17. 通过 USB 数据线将 Arduino Uno 连接到 PC。
18. 转到工具 -->板 --> Arduino AVR板 -- 选择您的Arduino板。
19. 跳转工具 --> port --> 选择您的端口
20. 现在一切都完成了,所以上传代码
21. 转到串行监视器并检查值。

 

 

01.jpg
02.jpg
03.jpg
04.jpg

项目代码

 

 

代码
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <Servo.h>

Adafruit_MPU6050 mpu;
int x = 0
;
int y = 0
;
int z = 0
;

Servo
 servo1; 
Servo
 servo2;
Servo
 servo3;
Servo
 servo4;

int value  = 0
;

void setup(void
) {
  Serial.begin(115200
);

  // Try to initialize!
  if (!mpu.begin
()) {
    Serial.println("Failed to find MPU6050 chip"
);
    while (1
) {
      delay(10
);
    }
  }
  Serial.println("MPU6050 Found!"
);

  // set accelerometer range to +-8G
  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

  // set gyro range to +- 500 deg/s
  mpu.setGyroRange(MPU6050_RANGE_500_DEG);

  // set filter bandwidth to 21 Hz
  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

  delay(100
);
  servo1.
attach(7
);
  servo2.
attach(6
); 
  servo3.
attach(5
); 
  servo4.
attach(4
); 

  servo1.
write(0
);
  servo2.
write(0
);
  servo3.
write(0
);
  servo4.
write(0
);
}

void loop
() {
  /* Get new sensor events with the readings */
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);

  x = a.acceleration.x;
  y = a.acceleration.y;
  z = a.acceleration.z;

//Serial.print(x);Serial.print(" ");Serial.println(y);
if (x < 10 && x > 0 && y < 4 && y > -4
){
  Serial.println("up"
);
   value = 
map(x,  0, 10, 0, 180
);
   servo1.
write
(value);
   Serial.print
(value);
  }
else if (x > -10 && x < 0 && y < 4 && y > -4
){
  Serial.println("down"
);
  value = 
map(x,  -10, 0, 180, 0
);
  servo2.
write
(value);
  Serial.print
(value);
  }

if (y < 10 && y > 0 && x < 4 && x > -4
){
  Serial.println("Right"
);
  value = 
map(y,  0, 10, 0, 180
);
  servo3.
write
(value);
  Serial.print
(value);
  }
else if (y > -10 && y < 0  && x < 4 && x > -4
){
  Serial.println("left"
);
  value = 
map(y,  -10, 0, 180, 0
);
  servo4.
write
(value);
  Serial.print
(value);
  }
}

【Arduino 动手做】Arduino MPU6050传感器控制伺服电机
项目链接:https://www.mrelectrouino.com/2021/10/Arduino%20MPU6050%20sensor%20contol%20servo%20motor.html
项目作者:ElectroUino

项目视频 :https://www.youtube.com/watch?v=_4SqfPy5-J8&t=174s
 

05.jpg
00172---.gif

评论

user-avatar
icon 他的勋章
    展开更多