使用Arduino MPU6050打造平衡车

一、Arduino MPU6050舵机

Arduino是一款基于开放式硬件和软件的物联网开发平台,拥有强大的社区支持,可以在系统上运行无数种不同的模块和传感器。

其中,MPU6050是一种集成了三轴陀螺仪、三轴加速度计和温度传感器的数字传感器,可用于控制各种机械和机器人,如平衡车。而舵机则是一种广泛用于控制运动方向的机械设备,两者的配合能够实现平衡车的控制和移动。

以下是将MPU6050和舵机结合的一些基本示例代码。

#include 
#include 
#include 

Servo myservo;  
MPU6050 mpu;  

int16_t ax, ay, az, gx, gy, gz;  // 存储MPU6050传回的值

void setup() 
{
  myservo.attach(9);  // 建立舵机信号与Arduino D9的连接
  Serial.begin(115200);  // 初始化串口
  while (!Serial);  // 等待串口连接成功后再执行后续代码
  Serial.println("Initializing I2C devices...");
  mpu.initialize();  // 初始化MPU6050
  Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
}

void loop() 
{
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);  // 获取MPU6050的运动值

  // 将在X轴上的运动值映射到舵机的角度范围
  int servo_angle = map(ax, -17000, 17000, 0, 180);  
  myservo.write(servo_angle);  //将当前的舵机位置设为映射到的角度值
  
  Serial.print(servo_angle);
  Serial.write('\t');
  Serial.print(ax);
  Serial.write('\t');
  Serial.print(ay);
  Serial.write('\t');
  Serial.print(az);
  Serial.write('\t');
  Serial.print(gx);
  Serial.write('\t');
  Serial.print(gy);
  Serial.write('\t');
  Serial.println(gz);
  
  delay(10);
}

二、Arduino MPU6050读取数据

MPU6050可以通过I2C带宽与Arduino通讯,并将其读取的数据转换为设备的姿态信息。以下是由MPU6050获取姿态数据的基本示例代码:

#include 
#include 

MPU6050 mpu;  

int16_t ax, ay, az, gx, gy, gz;  // 存储MPU6050传回的值

void setup() 
{
  Serial.begin(115200);  // 初始化串口

  while (!Serial);  // 等待串口连接成功后再执行后续代码
  Serial.println("Initializing I2C devices...");
  mpu.initialize();  // 初始化MPU6050
  Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
}

void loop() 
{
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);  // 获取MPU6050的运动值

  Serial.print(ax);  // 记录X轴上的加速度计数值
  Serial.write('\t');
  Serial.print(ay);  // 记录Y轴上的加速度计数值
  Serial.write('\t');
  Serial.print(az);  // 记录Z轴上的加速度计数值
  Serial.write('\t');
  Serial.print(gx);  // 记录X轴上的陀螺仪计数值
  Serial.write('\t');
  Serial.print(gy);  // 记录Y轴上的陀螺仪计数值
  Serial.write('\t');
  Serial.println(gz);  // 记录Z轴上的陀螺仪计数值
  
  delay(10);
}

三、Arduino MPU6050平衡车

使用MPU6050和舵机,可以制作一个基于Arduino的平衡车。以下是这个项目的基本示例代码:

#include 
#include 
#include 

Servo servoL;  // 左边的舵机对象
Servo servoR;  // 右边的舵机对象
MPU6050 mpu;  

int16_t ax, ay, az, gx, gy, gz;  // 存储MPU6050传回的值

void setup() 
{
  servoL.attach(9);  //将左舵机信号与Arduino D9的连接建立
  servoR.attach(10);  //将右舵机信号与Arduino D10的连接建立
  Serial.begin(115200);  // 初始化串口
  while (!Serial);  // 等待串口连接成功后再执行后续代码
  Serial.println("Initializing I2C devices...");
  mpu.initialize();  // 初始化MPU6050
  Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
}

void loop() 
{
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);  // 获取MPU6050的运动值

  int servo_adjustment; 

  if (ay  9800)  //当前的加速度计测量值向后
  {
    servo_adjustment = map(ay, 9800, 17000, 45, 60);
    servoL.write(90 - servo_adjustment);
    servoR.write(90 + servo_adjustment);
  }
  else  // 静止状态,向前或向后
  {
    servoL.write(90);
    servoR.write(90);
  }
  
  Serial.print(ax);  // 记录X轴上的加速度计数值
  Serial.write('\t');
  Serial.print(ay);  // 记录Y轴上的加速度计数值
  Serial.write('\t');
  Serial.println(servo_adjustment);  // 记录左右舵机的调整程度
  
  delay(10);
}

四、总结

通过该文章的解读,我们了解到了如何使用Arduino MPU6050来控制舵机和平衡车,这为我们制作更加复杂的设备提供了基础。

原创文章,作者:YBKE,如若转载,请注明出处:https://www.506064.com/n/149004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
YBKEYBKE
上一篇 2024-11-04 17:49
下一篇 2024-11-04 17:49

相关推荐

  • 详解Arduino WS2812

    一、WS2812简介 WS2812是一种数字RGB LED灯珠,它是一颗RGB三色LED和驱动芯片集成在一个封装中。WS2812的工作电压是5V,每个LED的电流为20mA,每一个…

    编程 2025-02-17
  • 从多个方面详细阐述Arduino 中断

    一、中断的基础知识 1. 中断定义:中断是一种计算机系统通信方式,允许计算机处理多个任务并响应外部事件(如硬件终端、软件信号和外部设备的请求等)。 2. 中断的分类: 体外中断和软…

    编程 2025-01-20
  • 用java控制arduino(用JAVA控制监控探头)

    本文目录一览: 1、如何用 JavaScript 控制 Arduino 2、如何用arduino控制步进电机反向转动 3、用java编一个手机程序,通过蓝牙向arduino发出字符…

    编程 2025-01-07
  • 深入理解Arduino中的millis()函数

    一、millis()函数的原理 在使用Arduino进行开发时,我们经常会使用到millis()函数。这个函数的作用是返回程序运行时间(以毫秒为单位)。这个函数的实现原理是基于计算…

    编程 2024-12-15
  • Arduino开发环境详解

    一、Arduino开发环境搭建 在使用Arduino之前,需要安装Arduino开发环境。Arduino官网提供了开发环境的下载链接,用户可以根据所使用的操作系统下载相应的版本。 …

    编程 2024-12-12
  • Arduino下载安装教程

    一、Arduino编程软件下载 在进行Arduino编程之前,需要先下载Arduino编程软件。以下是下载Arduino编程软件的步骤: 1. 进入Arduino官网下载页面,选择…

    编程 2024-12-11
  • Arduino DS18B20温度传感器

    一、介绍 DS18B20温度传感器是一种数字温度传感器,控制协议简单,数据稳定可靠,而且价格低廉,非常适合用于单片机控制系统中。 DS18B20采用单总线结构,只需要三根引脚即可完…

    编程 2024-12-02
  • Arduino和树莓派——完美配合的微型计算机

    一、Arduino和树莓派Pico 1、Arduino是一款开源的微型控制板,它使用了Atmel AVR微控制器,可以编程控制交互式物品。Arduino也包括了Arduino ID…

    编程 2024-11-19
  • Arduino上传项目出错:如何解决

    一、arduino上传项目出错timeout 当你使用Arduino上传项目时,如果遇到上传时间超时的错误,这通常意味着您的上传速度较慢或者您的代码需要优化。 首先,尝试使用较低的…

    编程 2024-11-02

发表回复

登录后才能评论