Arduino操作MPU6050模块

news2024/11/22 10:23:27

MPU6050是集成三轴陀螺仪,三轴加速度计,温度传感器于一体的模块。本文档基于Adafruit_MPU6050实现MPU6050模块基本操作。

Adafruit_MPU6050库:

https://github.com/adafruit/Adafruit_MPU6050

Adafruit_MPU6050依赖以下库,需要在Arduino编译器里分别添加:

Adafruit_BusIO: https://github.com/adafruit/Adafruit_BusIO
Adafruit_Sensor: https://github.com/adafruit/Adafruit_Sensor
Adafruit_GFX_Library: https://github.com/adafruit/Adafruit-GFX-Library
Adafruit_SSD1306: https://github.com/adafruit/Adafruit_SSD1306

1 接线:
在这里插入图片描述

如图:
VCC -> 5V
GND -> GND
SCL -> A5
SDA -> A4
INT -> 2

2 编写读取程序:

Adafruit_MPU6050完整说明文档 https://adafruit.github.io/Adafruit_MPU6050/html/class_adafruit___m_p_u6050.html

#include <Adafruit_MPU6050.h>
#include <Adafruit_sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);

  // initialize mpu
  if (!mpu.begin()) {
    Serial.println("Failed to start MPU6050");
  } else {
    Serial.println("Start MPU6050");
  }

  // display MPU6050 settings
  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
  Serial.print("Accelerometer range set to: ");
  switch (mpu.getAccelerometerRange()) {
  case MPU6050_RANGE_2_G:
    Serial.println("+-2G");
    break;
  case MPU6050_RANGE_4_G:
    Serial.println("+-4G");
    break;
  case MPU6050_RANGE_8_G:
    Serial.println("+-8G");
    break;
  case MPU6050_RANGE_16_G:
    Serial.println("+-16G");
    break;
  }
  mpu.setGyroRange(MPU6050_RANGE_500_DEG);
  Serial.print("Gyro range set to: ");
  switch (mpu.getGyroRange()) {
  case MPU6050_RANGE_250_DEG:
    Serial.println("+- 250 deg/s");
    break;
  case MPU6050_RANGE_500_DEG:
    Serial.println("+- 500 deg/s");
    break;
  case MPU6050_RANGE_1000_DEG:
    Serial.println("+- 1000 deg/s");
    break;
  case MPU6050_RANGE_2000_DEG:
    Serial.println("+- 2000 deg/s");
    break;
  }

  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
  Serial.print("Filter bandwidth set to: ");
  switch (mpu.getFilterBandwidth()) {
  case MPU6050_BAND_260_HZ:
    Serial.println("260 Hz");
    break;
  case MPU6050_BAND_184_HZ:
    Serial.println("184 Hz");
    break;
  case MPU6050_BAND_94_HZ:
    Serial.println("94 Hz");
    break;
  case MPU6050_BAND_44_HZ:
    Serial.println("44 Hz");
    break;
  case MPU6050_BAND_21_HZ:
    Serial.println("21 Hz");
    break;
  case MPU6050_BAND_10_HZ:
    Serial.println("10 Hz");
    break;
  case MPU6050_BAND_5_HZ:
    Serial.println("5 Hz");
    break;
  }
}


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

  // print out the values
  // acceleration values
  Serial.print("Acceleration X: ");
  Serial.print(a.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(a.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(a.acceleration.z);
  Serial.println(" m/s^2");

  //rotation values
  Serial.print("Rotation X: ");
  Serial.print(g.gyro.x);
  Serial.print(", Y: ");
  Serial.print(g.gyro.y);
  Serial.print(", Z: ");
  Serial.print(g.gyro.z);
  Serial.println(" rad/s");

  // temperature values
  Serial.print("Temperature: ");
  Serial.print(temp.temperature);
  Serial.println(" degC");
}

void loop() {
  // put your main code here, to run repeatedly:
  displayReadings();
  delay(500);
}

1

#include <Adafruit_MPU6050.h>
#include <Adafruit_sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;

调用以上库, 创建Adafruit_MPU6050对象mpu

2

  if (!mpu.begin()) {
    Serial.println("Failed to start MPU6050");
  } else {
    Serial.println("Start MPU6050");
  }

mpu.begin():启动MPU6050,返回值为boolean,true代表启动成功

3

mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

setAccelerometerRange():设定加速度计量程,参数有MPU6050_RANGE_2_G,MPU6050_RANGE_4_G,MPU6050_RANGE_8_G,MPU6050_RANGE_16_G

4

mpu.setGyroRange(MPU6050_RANGE_500_DEG);

setGyroRange():设置陀螺仪量程,参数有MPU6050_RANGE_250_DEG,MPU6050_RANGE_500_DEG,MPU6050_RANGE_1000_DEG,MPU6050_RANGE_2000_DEG

5

mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

setFilterBandwidth():设置滤波器带宽,参数有MPU6050_BAND_260_HZ,MPU6050_BAND_184_HZ,MPU6050_BAND_94_HZ,MPU6050_BAND_44_HZ,MPU6050_BAND_21_HZ,MPU6050_BAND_10_HZ,MPU6050_BAND_5_HZ

6

sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);

mpu.getEvent()方法获得加速度,角度,温度。我们可以输出x,y,z方向上的加速度和角度

Adfruit_MPU6050库里还包括设置中断,停止测量某一数值等功能,详细见官方说明文档

https://adafruit.github.io/Adafruit_MPU6050/html/class_adafruit___m_p_u6050.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/28653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java中的char、Character和CharSequence的区别

char 与 Character char是一种基本的数据类型&#xff0c;Character是char类型的包装类&#xff0c;即通过Character创建出来的是一种对象。 Character是char的包装类&#xff0c;就像Integer和int&#xff0c;以及Long和long一样。 包装类和基本类型可以自动转换&#xff…

安泰测试-同惠TH2827精密LCR数字电桥产品性能特点

同惠(Tonghui)TH2827A/TH2827B/TH2827C型 LCR数字电桥 产品简介&#xff1a; TH2827A/TH2827B/TH2827C是具有多种功能和更高测试频率的新型LCR数字电桥&#xff0c;体积小&#xff0c;紧凑便携&#xff0c;便于上架使用。本系列仪器基本精度为0.05%&#xff0c;测试频率最高1M…

GitLab仓库管理系统安装详细步骤

前言 本案例安装 gitlab、jenkins、并部署springboot应用程序&#xff0c;所以准备了3台服务器。 服务器1&#xff1a;安装gitlab服务器2&#xff1a;安装jdk、maven、git、jenkins 因为jenkins需要jdk、maven、git服务器3&#xff1a;安装jdk。 jenkins自动部署的springboot…

多目标优化生态调度结果的预测方法研究——基于新蝙蝠算法(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

【CNN】ZFNet——让卷积神经网络不再是一个黑盒模型。

前言 ZFNet在2013年 ILSVRC 图像分类竞赛获得冠军&#xff0c;错误率11.19% &#xff0c;比2012年的AlexNet降低了5%&#xff0c;ZFNet是由 Matthew D.Zeiler 和 Rob Fergus 在 AlexNet 基础上提出的大型卷积网络。ZFNet解释了为什么卷积神经网络可以在图像分类上表现的如此出…

[MySQL]事务ACID详解

专栏简介 :MySql数据库从入门到进阶. 题目来源:leetcode,牛客,剑指offer. 创作目标:记录学习MySql学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 1. 事务的概念 2. 事务的特性 3.事务控制语法…

【经验篇】Java使用ZMQ断线重连问题

简介 ZeroMQ是一个高性能的异步消息传递库&#xff0c;旨在用于分布式或者并发应用程序。它提供了一个消息队列&#xff0c;但与面向消息的中间件不同&#xff0c;ZeroMQ 系统可以在没有专用消息代理的情况下运行。 ZeroMQ 支持各种传输&#xff08;TCP、进程内、进程间、多播…

初步认识端口服务查询--netstat

转载连接&#xff1a;netstat详解 目录1、语法与参数概括2、输出释义2.1 以netstat -atnlp为例&#xff0c;解释输出结果中各列的含义2.2、以netstat -rn为例&#xff0c;解释输出结果中各列的含义3、实用命令4、项目中通过netstat查询某端口是否被占用netstat命令是一个监控TC…

Spring5源码3-BeanDefinition

1. BeanDefinition BeanDefinition在spring中贯穿始终&#xff0c;spring要根据BeanDefinition对象来实例化bean&#xff0c;只有把解析的标签&#xff0c;扫描的注解类封装成BeanDefinition对象&#xff0c;spring才能实例化bean beanDefinition主要实现类: ChildBeanDefini…

ADB安装及使用详解

一、ADB简介 1、什么是adb ADB 全称为 Android Debug Bridge&#xff0c;起到调试桥的作用&#xff0c;是一个客户端-服务器端程序。其中客户端是用来操作的电脑&#xff0c;服务端是 Android 设备。 ADB 也是 Android SDK 中的一个工具&#xff0c;可以直接操作管理 Androi…

K8s高可用集群搭建

K8s高可用集群搭建1 方案简介2 集群搭建2.1 安装要求2.2 准备环境2.3 master节点部署keepalived2.4 master节点部署haproxy2.5 所有节点安装docker/kubeadm/kubelet2.6 部署k8smaster012.7 安装集群网络2.8 k8smaster02加入节点2.9 k8snode01加入集群3 测试集群1 方案简介 用到…

Session-based Recommendation with Graph Neural Networks论文阅读笔记

1. Abstract &#xff08;1&#xff09;基于会话的推荐问题旨在基于匿名会话来预测用户的行为。 The problem of session-based recommendation aims to predict user actions based on anonymous sessions. &#xff08;2&#xff09; 以前的方法存在的不足&#xff1a;不足以…

day3-day4【代码随想录】长度最小的子数组

文章目录前言一、长度最小的子数组1、暴力求解&#xff1a;2、滑动窗口求解&#xff1a;二、最小覆盖子串&#xff08;乐扣76&#xff09;难难难难难三、水果成篮&#xff08;乐扣904&#xff09;四、最长重复子数组&#xff08;乐扣718&#xff09;前言 实现滑动窗口&#xf…

Android抓包工具——Fiddler

前言 &#x1f525;在平时和其他大佬交流时&#xff0c;总会出现这么些话&#xff0c;“抓个包看看就知道哪出问题了”&#xff0c;“抓流量啊&#xff0c;payload都在里面”&#xff0c;“这数据流怎么这么奇怪”。 &#x1f449;这里出现的名词&#xff0c;其实都是差不多的…

矩阵分析:特征值分解

矩阵分析&#xff1a;特征值分解前置知识空间变换伸缩旋转对称矩阵对称矩阵对角化正交矩阵向量的基基变换不同基下的向量变换逆矩阵不同基下的空间变换内积的几何意义特征值、特征向量特征值分解代码前置知识 空间变换 伸缩 一个矩阵其实就是一个线性变换&#xff0c;因为一个…

SpringCloud微服务(六)——Gateway路由网关

Gateway路由网关 Spring Cloud Spring Cloud Gateway统一访问接口的路由管理方式 作用 整合各个微服务功能&#xff0c;形成一套系统微服务网关实现日志统一纪录实现用户的操作跟踪统一用户权限认证路由转发、跨域设置、负载均衡、服务限流反向代理 微服务网关的概述 不同…

H2DCFDA | ROS 荧光探针检测法

H2DCFDA 工作液的配制1、储存液的配制&#xff1a;用 DMSO 配制 10 mM 的 H2DCFDA (2,000)&#xff0c;如用 1.03 mL DMSO 溶解 5 mg H2DCFDA。注&#xff1a;H2DCFDA 储存液建议分装后-20℃ 避光冻存&#xff0c;一个月。-80 半年。2、工作液的配制&#xff1a;用预热好的无血…

绘制文字(QFont字体)

QPainter绘制文字的话使用的函数为 QPainter::drawText() QPainter::drawText()有多种重载方式。 根据坐标直接绘画文字&#xff1a; void Widget::paintEvent(QPaintEvent *event)//绘图事件 {QPainter painter(this);painter.translate(100,100);//移动坐标painter.drawText(…

E. Sending a Sequence Over the Network(DP)

Problem - 1741E - Codeforces 序列a在网络上的发送情况如下。 序列a被分割成若干段&#xff08;序列的每个元素正好属于一个段&#xff0c;每个段是序列的一组连续元素&#xff09;。 对于每个段&#xff0c;它的长度被写在它的旁边&#xff0c;要么在它的左边&#xff0c;要…

递归展示树状图/树状表格

递归展示树状图一、数据库表设计二、后端java递归代码三、前端展示树状表格四、效果展示一、数据库表设计 这里我们采用自关联的设计&#xff0c;通过id和pid的对应来确认数据的上下级关系 建表语句&#xff0c;我这里把一级菜单的pid设置成了0 /*Navicat Premium Data Transfe…