2020大创笔记(二)

主要记录抄代码的心得体会
(读书人的事儿,怎么能叫抄呢!)

文章目录

  • 2020大创笔记(二)
    • 一、MPU6050数据的读取
    • 二、内部定时器2
    • 三、一阶互补滤波算法
    • 四、位置式/增量式PID算法

一、MPU6050数据的读取

Wire库:https://www.arduino.cc/en/Reference/Wire
利用IIC总线实现通信:
(1)初始化MPU6050

void setMPU()
{
// 设置电源管理方式 power management_1Wire.beginTransmission(0x68);Wire.write(0x6b);Wire.write(0);Wire.endTransmission();// 设置角速度分辨率 GYRO_CONFIGWire.beginTransmission(0x68);Wire.write(0x1b);Wire.write(0);Wire.endTransmission();// 设置线加速度分辨率 ACCEL_CONFIG    Wire.beginTransmission(0x68);Wire.write(0x1c);Wire.write(0);Wire.endTransmission();
}

(2)从MPU6050读数据

float acc[3];
void setup()
{......Wire.begin();getData(acc);......
}void getData(float acc[])
{static float data[20];Wire.beginTransmission(0x68); // 通信部分夹在beginTransmission()和  endTransmission之间Wire.write(0x3b);Wire.requestFrom(0x68,14);while(Wire.available()<14); // 等待14帧传送完Wire.endTransmission();for(int i = 0;i <= 13;i ++){data[i] = Wire.read()<<8|Wire.read();}
}

这个读取数据的方法和GY-30数据光强传感器的读取方法是一样的,要用Wire.requestFrom()向主机要数据,然后用左移之后按位与,将两字节一次性读出来。
(3)GY-30数字光强传感器

int BH1750address = 0x23;// 主设备地址
int i;// 读取缓存区数据的计数器
byte buff[2];// 用来存储向主设备索取的两个字节void BH1750_int(int address)
{Wire.beginTransmission(address);Wire.write(0x10);Wire.endTransmission();
}int BH1750_read(int address)
{int i = 0;Wire.beginTransmission(address);Wire.requestFrom(address,2);// 从元件手册可以看到,每次通讯发送两个字节,组成一个16位二进制数while(Wire.available()){buff[i] = Wire.read(); // 每次读一个字节i++; }Wire.endTransmission();return i;
}

二、内部定时器2

MsTimers2.h库:https://playground.arduino.cc/Main/MsTimer2/

参考Atmel328P的数据手册,可以发现它将定时器2专门列了一章进行讲解。就像51单片机的方式2一样,Arduino定时器2也可以自动重装,相比之下,Arduino定时器是给出定时时长,不用计算定时器初值,非常方便。

如上图示,在使用MsTimer2库函数的时候,需要着重注意其中断服务程序的声明格式:不带参数的,返回值为void类型的中断服务程序。这一点要格外注意。
和51单片机编程一样,在进入中断的时候要保护现场和断点。写这篇博客的时候我还没有安装破解版的VS2017和Visual Micro,免费正版的调试功能还没学会,因此没法查看具体是怎么进行现场保护的,现在只知道在中断函数中加入sei()语句,程序不会跑飞:

void INT2()
{sei();......
}

具体是怎么样实现的,我打算之后学习一下Arduino的汇编语法,配置好功能完善的盗版软件,在进入中断的时候查看SRAM的资源分配。

三、一阶互补滤波算法

写博客的时候还不知道原理…打算日后写一个滤波器的库,把这些方法都放进去。不知道权重系数是怎么确定的,很奇怪。以项目中计算角度为例:

void CalculateAngle()
{static float gyo_last = 0;float Gyo = (accgyo[2] + gyo_last) / 2;                        //角速度一阶滤波gyo_last = accgyo[2];static double gyo_angle = 0;float acc_angle = 57.296 * atan(accgyo[1] / accgyo[0]);     //根据加速度计算的倾角,弧度转换成角度//gyo_angle = Angle + Gyo * 0.005;                          //角速度积分计算的倾角// 一阶互补滤波 Angle = sufficent * acc_angle + (1 - suffcient) * (Angle + Gyo * dt)// suffcient 为权重系数,dt为积分时间,在这里是每5ms中断一次 //Angle = 0.005*acc_angle + 0.995*gyo_angle;  Angle = 0.005*acc_angle + 0.995*Angle + Gyo * 0.005;
}

四、位置式/增量式PID算法

PID还夹生,主要是用的不多,看别人的吧~
https://blog.csdn.net/as480133937/article/details/89508034

2020大创笔记(二)相关推荐

  1. 2020大创笔记(一)

    2020大创笔记(一) 这篇博客主要记录对购买的原件的组装和调试过程中遇到的问题和解决方法 这是最后一年做大创了,这次虽然是报了四个人,但是主要工作都由我一个人负责,主要是觉得一个项目太多人的,任务的 ...

  2. SpringCloud 2020笔记二

    SpringCloud 2020笔记二 Spring Cloud 2020 笔记一 五.GateWay Spring生态系统之上建立的 API 网关服务 基于Spring FrameWork 5.Pr ...

  3. Yann Lecun纽约大学《深度学习》2020课程笔记中文版,干货满满!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]Yann Lecun在纽约大学开设的2020春季<深度学习>课 ...

  4. Altium Designer 2020 学习笔记(一)-----原理图及原理图库部分(配动态图操作演示)

    本篇文章主要与大家简要分享一下,我在AD学习过程中的一些学习笔记,本篇文章主要关于原理图及原理图库部分. 本系列文章链接: -------------------------------------- ...

  5. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  6. oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

    当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net  网友分享于:2013-08-23  浏览:9次 <> ...

  7. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  8. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  9. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  10. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

最新文章

  1. 新一代人工智能专利分析
  2. 初涉SQL Server性能问题(1/4):服务器概况
  3. 成本计算引擎动态规则解析技术详解
  4. 一步步编写操作系统 23 重写主引导记录mbr
  5. SpriteBuilder中的粒子系统属性
  6. python自学-新手如何自学python课程?
  7. 注册测绘师学习笔记(二)
  8. SharePoint 2013 安装中间出错了怎么办? 每一次安装都是一段曲折的路【1603(0x643) 】...
  9. JSchException: Algorithm negotiation fail
  10. 掌握TikTok商业化玩法,3大支点撬动亿万级流量市场
  11. 银行业务总揽之-银行对公业务
  12. Pyton学习—循环语句
  13. 记录踩过的坑-WPS文字
  14. 阿里巴巴蚂蚁金服面经(已拿Offer)附答案!突如其来的的惊喜
  15. SpringBoot2.0(九):实现微信授权登录并且获取用户信息
  16. 25岁就死了,75才埋,程序员们的中年危机:有点懵
  17. 神经网络 深度神经网络,深度神经网络训练
  18. zData Light
  19. Python(正则表达式)
  20. 在DOS中格式化C盘,及在DOS下硬盘安装windows2003系统

热门文章

  1. 【IDE】IAR for ARM官网下载链接(超级全,什么版本都有——找不到来打我)
  2. ARM版本的IAR的下载和安装
  3. SpringBoot整合screw生成数据库文档
  4. 公司各个部门所有英文缩写
  5. 计算机软件被放进回收站,电脑不能把文件放入回收站只能永久删除怎么办?
  6. 代码在线运行工具(PHP、Python、Java等)
  7. 一个多重阴影的DIV框框
  8. WARNING: The script f2py.exe is installed in ‘C:\Users\linji\AppData\Roaming\Python\Python36\Scripts
  9. php两张图片合成,php多张图片合成一张的方法及案例
  10. 我将进化成一条狗(10)——长寿秘诀