【Arduino 动手做】Arduino MPU6050传感器控制伺服电机
2025-06-241518
AI 快速预览详细
在这个Arduino项目中,我们使用MPU6050加速度传感器来控制伺服电机,支持UP、DOWN、LEFT和RIGHT四种手势模式。项目所需组件包括Arduino Uno、MPU6050传感器、四个SG90伺服电机、面包板和跳线。通过将MPU6050的SCL引脚连接到Arduino A5引脚,SDA引脚连接到A4引脚,可以实现精确的手势识别。安装Adafruit MPU6050库后,复制代码并上传到Arduino,通过串行监视器检查值。这个项目非常适合STEM教育和零基础新手,能够帮助孩子在动手实践中学习编程和电子技术。
|
在这个 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. 转到串行监视器并检查值。 ![]() ![]() ![]() ![]() |








项目链接:https://www.mrelectrouino.com/2021/10/Arduino%20MPU6050%20sensor%20contol%20servo%20motor.html
项目作者:ElectroUino
项目视频 :https://www.youtube.com/watch?v=_4SqfPy5-J8&t=174s
[code]#include
#include
#include
#include
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);
}
}[/code]