参考博文:计算的公式推导

根据博文的公式,得出算法,未经实际验证,记录一下,待验证之后,如有不妥会更新。仅供参考

#include <math.h>
typedef struct
{float X_arctan;float Y_arctan;float Z_arctan;float X_angle;float Y_angle;float Z_angle;
} G_sensor_t;
#define PI 3.1415926/********************************************** @brief 获取重力加速度分量数据* @param  min_dpi:数据分辨率最小值(1g)* @param  max_dpi:数据分辨率最大值(1g)* @param  now_val:对应轴传感器值,实际读取寄存器的值* @retval 返回重力加速度的分量值* @note 数据分辨率的计算方式:以2g分辨率为例,陀螺仪adc是12位分辨率。* 正负2g的分辨率,一起是4g的分辨率,也就是把4096分成4分,即,1g的数据AD范围:正:0~1024* 负:-1024~0。因此,数据最大值是1024,最小值是-1024                            ********************************************/
float get_GravitationalAcceleration(int16_t min_dpi, int16_t max_dpi, int16_t now_val)
{float temp;if (now_val > max_dpi){now_val = max_dpi;}if (now_val < min_dpi){now_val = min_dpi;}temp = (float)((max_dpi - min_dpi) >> 1); //计算数据分辨率,((max_dpi - min_dpi) >> 1) => (max_dpi - min_dpi)/2.0temp = 9.8 / temp; //计算1个AD值代表的g值,g = 9.8temp = now_val * temp; //计算当前AD值代表的g值return  temp;
}
/********************************************** @brief 获取重力加速度芯片相对水平位置的夹角* @param  *sensor:相关的参数变量,计算得出的反正弦值和角度数据* @param  x_val:X轴传感器的值* @param  y_val:Y轴传感器的值* @param  z_val:Z轴传感器的值* @retval NULL* @note 实际使用,调用该函数即可********************************************/
void get_angle_value(G_sensor_t *sensor, int16_t x_val, int16_t y_val, int16_t z_val)
{float Ax, Ay, Az, temp;Ax = get_GravitationalAcceleration(-1024, 1024, x_val);Ay = get_GravitationalAcceleration(-1024, 1024, y_val);Az = get_GravitationalAcceleration(-1024, 1024, z_val);temp = sqrt((Ay * Ay) + (Az * Az));sensor->X_arctan = atan(Ax / temp);temp = sqrt((Ax * Ax) + (Az * Az));sensor->Y_arctan = atan(Ay / temp);temp = sqrt((Ax * Ax) + (Ay * Ay));sensor->Z_arctan = atan(Az / temp);temp = 180.0 / PI;sensor->X_angle = sensor->X_arctan * temp;sensor->Y_angle = sensor->Y_arctan * temp;sensor->Z_angle = sensor->Z_arctan * temp;
}

利用重力加速度传感器,获取芯片相对水平位置的角度相关推荐

  1. ajax 获取用户ip地址,利用jQuery实现Ajax获取当前IP地区位置代码

    特效描述:利用jQuery实现 Ajax 获取当前IP 地区位置代码.利用jQuery实现Ajax获取当前IP和地区位置代码 代码结构 1. 引入JS 2. HTML代码 AJAX检测ip和地区 $( ...

  2. android传感器获取运动方向,Android开发者指南-运动传感器Motion Sensor[原创译文]...

    Android 平台支持很多监测设备运动的传感器.其中有两个传感器一定是基于硬件的(加速度计和陀螺仪),有三个可能基于硬件或软件(重力计.线性加速计和旋转向量传感器). 比如,某些设备的软传感器利用加 ...

  3. 我的Android进阶之旅------Android利用Sensor(传感器)实现水平仪功能的小例

    这里介绍的水平仪,指的是比较传统的气泡水平仪,在一个透明圆盘内充满液体,液体中留有一个气泡,当一端翘起时,该气泡就会浮向翘起的一端.    利用方向传感器返回的第一个参数,实现了一个指南针小应用.   ...

  4. 用Javascript获取页面元素的位置

    制作网页的过程中,你有时候需要知道某个元素在网页上的确切位置. 下面的教程总结了Javascript在网页定位方面的相关知识. 一.网页的大小和浏览器窗口的大小 首先,要明确两个基本概念. 一张网页的 ...

  5. vue 获取元素在浏览器的位置_前端开发JS获取页面元素的位置

    1.网页的大小和浏览器窗口的大小 一张网页的全部面积,就是它的大小.通常情况下,网页的大小由内容和 document元素的clientHeight和clientWidth属性,就代表了网页的大小. f ...

  6. POI:根据单元格的自定义名获取单元格的位置

    在Excel单元格设置自定义名,利用代码就可以获取单元格具体的位置 // Setup code     String cellName = "TestName";     Work ...

  7. 利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第一篇“显示贪吃蛇”

    利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第一篇"显示贪吃蛇" 完整的项目链接: https://github.com/linxinloningg/51_chip_ ...

  8. 利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第二篇“自动运行函数”

    利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第二篇"自动运行函数" 完整的项目链接: https://github.com/linxinloningg/51_chip ...

  9. VUE预览PDF文件并利用pdf.js获取鼠标选中的文字和搜索,在iframe中获取选中文字,监听鼠标事件,右键菜单

    一.VUE预览PDF文件并利用pdf.js获取鼠标选中的文字和搜索 需求实现:vue实现预览pdf文件,获取到鼠标选中的文字数据.调用pdf.js自带的搜索方法实现搜索功能(后期可以调用该接口满足其他 ...

  10. 利用霍尔效应传感器和Arduino研究了一个简单的钟摆

    A simple pendulum studied using Hall effect sensor and Arduino 利用霍尔效应传感器和Arduino研究了一个简单的钟摆:原文(Hall e ...

最新文章

  1. 激励和设定可实现的目标是任何学习成功的关键。
  2. 在Linux系统centos上安装RAR
  3. 非专业转行python的几点建议
  4. android捕获线程异常,android - 终结器引发的未捕获的异常:所有WebView方法必须在同一线程上调用。 (预期的Looper) - 堆栈内存溢出...
  5. 传统form表单提交方式的文件上传与文件存储
  6. 使用github+hexo搭建静态blog
  7. 今天又遇到了一个问题
  8. OpenResty入门
  9. Opencv之Vs编译
  10. memset()的用法
  11. ssr的pac中加入学校图书馆数据库访问pac
  12. 高分二号、高分一号、资源三号卫星数据1A、2A级别有什么区别?
  13. 自制三层架构代码生成器软件
  14. 【笔记】Opencv 绘制朱利亚(Julia)集合图形
  15. 以图搜图源码html,以图搜图功能实现 (源码+解析)
  16. Google浏览器升级为最新打开网页时缓慢 “正在建立安全连接..........”解决方法
  17. 春天不健脾养胃 也要等什么时候
  18. 关于将驱动整合至ESXi镜像过程中的一些小坑
  19. JSP如何统计页面访问次数
  20. Mounty for Mac(NTFS格式读写工具)

热门文章

  1. 【机器学习】可决系数R^2和MSE,MAE,SMSE
  2. php怎么获得今天的日期,PHP怎么获取今天、昨天、明天的日期-php教程
  3. 程序员的自我修养_之三_曾国藩与左宗棠
  4. SimpleDateFormat和DateFormat的基本使用(format和prase)
  5. jQuery水平手风琴图片轮播切换
  6. 【vscode简单入门(三)】vscode巨实用的基础插件推荐(不定期更新)
  7. PHP写的二维码签到,大家支持一下吧!
  8. 调查显示:SD-WAN部署迅猛增长,MPLS不会消失
  9. 4399测试工程师笔试题
  10. fpga 中的slew rate 什么意思