一、有啥用

这里用的是LIS3DH三轴加速计,输出为X、Y、Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示。

这里虽然是针对LIS3DH的,其实稍作修改即可适用其他型号的运动传感器,如:MPU6050,甚至是其他格式的串口数据。

二、具体分析

首先通过串口传来的数据格式为:6位X轴加速计整数+空格+6位Y轴+空格+6位Z轴+换行

printf("%6d %6d %6d\r\n", data.AXIS_X/, data.AXIS_Y/, data.AXIS_Z/);

那么matlab如何读取串口并对其数据进行可视化展示的呢?

serial.m

%http://blog.csdn.net/qwertyuj/article/details/12108155%

clc;

global t;

global x;

global ii;%数组下标

global m_x;%3轴加速度

global m_y;

global m_z;

global d_a;%差分

t = [0];

ii = 0;

x = -100;

m_x = [0];

m_y = [0];

m_z = [0];

d_a = [0];

23 subplot(1,2,1);%将x,y,z轴加速度图像绘制在整个1X2界面中的第1格

24 p = plot(t,m_x,t,m_y,t,m_z,'EraseMode','background','MarkerSize',5);%初始化图像,图像中有3条线(t,m_x),(t,m_y),(t,m_z)

25 axis([x-200 x+200 -1600 1600]);%设置显示窗口,前两个是x轴的最小、最大极限;后两个是y轴最小、最大极限

26 grid on;%绘制网格(如果不加这句就不绘制网格) subplot(1,2,2);

q = plot(t,d_a,'EraseMode','background','MarkerSize',5);%同理,这里只有一条线

axis([x-200 x+200 -1600 1600]);

grid on;

%%

try

s=serial('com5');

catch

error('cant serial');

end

39 set(s,'BaudRate', 38400,'DataBits',8,'StopBits',1,'Parity','none','FlowControl','none');%设置串口属性等 s.BytesAvailableFcnMode = 'terminator';

41 s.BytesAvailableFcn = {@callback,p,q};%设置串口回调函数,串口有数据传输过来就会转到回调函数,p、q为参数

fopen(s);%打开串口

pause;%按任一按键结束

fclose(s);

delete(s);

clear s

close all;

clear all;

该文件是主文件,首先声明各种全局变量(matlab全局变量其他函数使用时需要用global声明),然后对这些全局变量初始化,接着实例化两个绘图窗口(第一个窗口3条线——分别是x、y、z三轴的加速度随时间变化曲线;第二个窗口一条线——是差分随时间变化曲线)。34行之后为设置串口、打开串口,接下来动态绘图所有操作均在回调函数中进行了。

来看看回调函数

callback.m

%%

function callback(s,BytesAvailable,p,q)

4 global t; %引用全局变量(4-12行)

5 global x;

6 global ii;%数组下标

7

8 global m_x;%3轴加速度

9 global m_y;

10 global m_z;

11

12 global d_a;%差分

14 out = fscanf(s);%读取串口数据,转换为num数据存储在data中

15 data = str2num(out);

17 t = [t ii];%数组插入最新数据在最后面

18 m_x = [m_x data(1,1)];

19 m_y = [m_y data(1,2)];

20 m_z = [m_z data(1,3)];

22 d_a = [d_a abs(m_x(1,ii+2)-m_x(1,ii+1))+abs(m_y(1,ii+2)-m_y(1,ii+1))+abs(m_z(1,ii+2)-m_z(1,ii+1))];

25 set(p(1), 'XData',t,'YData',m_x(1,:));%用新数据更新图

26 set(p(2), 'XData',t,'YData',m_y(1,:));

27 set(p(3), 'XData',t,'YData',m_z(1,:));

28

29 set(q(1), 'XData',t,'YData',d_a(1,:));

31 drawnow %重新绘制图,并移动两个图的窗口,使之呈现运动效果

32 x = x + 1;

33 subplot(1,2,1)

34 axis([x-200 x+200 -1600 1600]);

35 subplot(1,2,2)

36 axis([x-200 x+200 -1600 1600]);

37 ii=ii+1; end

每次串口有数据均会触发回调函数。在回调函数中,首选获取串口流,并将串口数据流转换为data数组。接着用读取的新的data数据插入到老的数组(17~22行)。第25~29行则是用新的3+1个曲线的数据更新图。第31行之后的负责移动视窗,使之呈现出数据在滚动的效果。

三、最终效果

四、楼主讲话

好长时间没写文章了!就拿这个水水的小工具作为开篇~

第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...

SLAM+语音机器人DIY系列:(三)感知与大脑——2.带自校准九轴数据融合IMU惯性传感器

摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

NeHe OpenGL教程 第三十六课:从渲染到纹理

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索

第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...

第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...

为什么我要放弃javaScript数据结构与算法(第六章)—— 集合

前面已经学习了数组(列表).栈.队列和链表等顺序数据结构.这一章,我们要学习集合,这是一种不允许值重复的顺序数据结构. 本章可以学习到,如何添加和移除值,如何搜索值是否存在,也可以学习如何进行并集.交 ...

剑指Offer(三十六):两个链表的第一个公共结点

剑指Offer(三十六):两个链表的第一个公共结点 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

Java进阶(三十六)深入理解Java的接口和抽象类

Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...

Gradle 1.12用户指南翻译——第三十六章. Sonar Runner 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

随机推荐

influxdb和boltDB简介——底层本质类似LMDB,MVCC+B+树

influxdb influxdb是最新的一个时间序列数据库,最新一两年才产生,但已经拥有极高的人气.influxdb 是用Go写的,0.9版本的influxdb对于之前会有很大的改变,后端存储有Le ...

RPC之——HTTP协议栈

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/52531185 今天,给大家带来一篇稍有深度的文章——

JavaScript--基本包装类型+Math对象

1. 基本包装类型 1)为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类Boolean, Number, String       每当读取一个基本类型值的时候,后台就会创建一个对应 ...

把《C语言接口与实现》读薄之第一章:引言

1.1文学程序 文学程序(literate program):接口及其实现的代码与对其进行解释的正文交织在一起.文学程序由英文正文和带标签的程序代码块组成.例如, 〈compute x * y〉≡ s ...

【SQL Server备份恢复】维护计划实现备份:每周数据库完整备份、每天差异备份、每小时日志备份

在数据库管理中,数据库备份是非常重要的. 通过维护计划向导,可以很方便的完成数据库备份. 下面的例子说明了如何实现数据库的备份,具体的备份策略是:每周日一次完整备份.每天差异备份(除周日外).每小时日 ...

mongoDB - 日常操作三

MongoDB 进程控制 进程控制 db.currentOp() # 查看活动进程 db.$cmd.sys.inprog.findOne() # 查看活动进程 与上面一样 opid # 操作进程号 o ...

8 tensorflow修改tensor张量矩阵的某一列

1.tensorflow的数据流图限制了它的tensor是只读属性,因此对于一个Tensor(张量)形式的矩阵,想修改特定位置的元素,比较困难. 2.我要做的是将所有的操作定义为符号形式的操作.也就是 ...

OpenCV学习系列(一) Mac下OpenCV + xcode人脸检测实现

# OpenCV学习系列(一) Mac下OpenCV + xcode人脸检测实现 [-= 博客目录 =-] 1-学习目标 1.1-本章介绍 1.2-实践内容 1.3-相关说明 2-学习过程 2.1-环 ...

开发者应该掌握的Java代码优化技能

就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了. 代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对 ...

webpack4.x最详细入门讲解

前言 本文主要从webpack4.x入手,会对平时常用的Webpack配置一一讲解,各个功能点都有对应的详细例子,所以本文也比较长,但如果你能动手跟着本文中的例子完整写一次,相信你会觉得Webpack ...

三轴加速度计测量值生成算法matlab,[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本...相关推荐

  1. 三轴加速度传感器和六轴惯性传感器_[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本...

    一.有啥用 这里用的是LIS3DH三轴加速计,输出为X.Y.Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示. 这里虽然是针对LIS3DH的,其实稍作修改即 ...

  2. 根据三轴加速度计算赛艇划桨数的算法

    一. 简介 现代体育竞技早已不止是单纯的体力比拼,科技能力也成为决定运动员竞技水平和比赛成绩的重要因素.对于赛艇运动来说,能够测量运动员划桨的桨频以及划桨次数是最基础的数据,本文旨在阐述一种利用三轴加 ...

  3. ADI Blackfin DSP处理器-BF533的开发详解59:DSP控制ADXL345三轴加速度传感器的应用2(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  4. ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  5. ADI Blackfin DSP处理器-BF533的开发详解60:DSP控制ADXL345三轴加速度传感器-电子水平仪(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  6. ADI Blackfin DSP处理器-BF533的开发详解61:DSP控制ADXL345三轴加速度传感器-LCD(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  7. ADI Blackfin DSP处理器-BF533的开发详解62:DSP控制ADXL345三轴加速度传感器-贪食蛇游戏(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  8. MiniFly微型四轴学习开发日志(三)——关于姿态解算的相关算法

    目录 大致内容介绍 欧拉角与四元数 互补滤波算法的姿态解算 一些疑问 大致内容介绍 之前两篇日志当中提到了关于角度-角速度串级PID与定高Z轴PID配合对四轴进行姿态矫正的大概算法.但是对于测量而来的 ...

  9. 博世传感器调试笔记(三)加速度及地磁传感器BMC156

    一.    器件简介: 1.    BMC 156是一款整合三轴地磁传感器与三轴(12bit)加速度传感器于一体的传感器,以BMC 150 电子罗盘模块为基础, 并与Bosch Sensortec 2 ...

最新文章

  1. java必知必会_Java构造器必知必会
  2. Python学习汇总,做数据采集的一些小技巧,收获满满
  3. 年货怎么到家早?华为云+AI 告诉你!
  4. Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
  5. 用SQL表达内连接和外链接
  6. Java之JSON详解
  7. java自学网视频教程,系列教学
  8. android soundpool 封装,Android SoundPool的简单使用
  9. 为【桌面右键菜单 - 新建文档】添加快捷键
  10. 如何在windows上下载安装zeplin
  11. deepin更新依赖错误_Ubuntu安装deepin-wine解决依赖问题
  12. Ubuntu18.04设置截屏快捷方式
  13. 高级查询(mysql)
  14. 微信小程序傻瓜制作_零基础,傻瓜式制作微信小程序,3分钟完成不是问题!...
  15. github使用教程linux,GitHub Linux下使用方法
  16. 西门子博途软件安装及使用
  17. Vue.js 响应式原理
  18. GEE学习笔记:在GEE中下载Sentinel-2影像
  19. 第16课 Altium Designer20(AD20)+VESC6.4实战教程:总体布局和定义板子边框 (第一版)(北冥有鱼)
  20. VUE + idb-js 应用 indexDB

热门文章

  1. C语言学习:编程、源文件、源代码是什么?一文带你搞定它!
  2. Java周记(第三周)
  3. 远程连接服务器显示:发生身份验证错误 要求的函数不受支持
  4. CSS入门教程——字体
  5. c语言代码 txt下载,俄罗斯方块C语言源代码txt.DOC
  6. 先来先服务算法、运行时间最短者优先算法和最高响应比优先调度算法_CPU的调度器scheduler...
  7. 如何生成简单的BAT脚本
  8. Protues卸载后如何重新安装
  9. 把一个数随机分成n份,随机数字和等于总数 PHP代码
  10. Visual Studio2012打包软件InstallShield Limited Edition安装教程