【Espruino】NO.12 加速度计演示
2015-06-19 10:49
417 查看
http://blog.csdn.net/qwert1213131/article/details/31035403
本文属于个人理解,能力有限,纰漏在所难免。还望指正!
【小鱼有点电】
【Espruino中文社区】
加速度计的应用范围越来越广泛。四轴飞行器、游戏手柄、跌倒检測、振动、倾角检測都会有他的身影,跟其它MEMS配合应用范围更广。Espruino已经提供了数字加速度计ADXL345的基本函数库。仅仅须要简单几句代码就能获取各轴加速度值。
数据手冊在此:点击打开链接
ADXL345支持SPI和I2C接口,本次实验使用I2C接口,也就是说须要2跟线,SDA(B6)和SCL(B7),须要注意的是这两条线要上拉4.7K电阻。
首先要依据引脚配置I2C。这里使用的是I2C1,SDA(B6)和SCL(B7):
I2C1.setup({scl:B6, sda:B7});
接着调用ADXL345的库
var accel = require("ADXL345").connect(i2c,cspin,range)
当中,cspin没实用到,range例如以下:
0 | +/-2 g |
1 | +/-4 g |
2 | +/-8 g |
3 | +/-16 g |
accel.measure(true or false)
若要读取到数据,则调用以下的函数,就能得到x、y、z各轴的加速度,单位为g:
accel.read()
实验中通过读取x轴的数据来让3个led分别亮起,示比例如以下,还有视频:
I2C1.setup({scl:B6, sda:B7}); var accel = require("ADXL345").connect(I2C1,0,3); accel.measure(true); clearInterval(); function led(){ if(accel.read().x<-0.25) digitalWrite([LED3,LED2,LED1],0b100); else if(accel.read().x>0.25) digitalWrite([LED3,LED2,LED1],0b001); else digitalWrite([LED3,LED2,LED1],0b010); } setInterval(led,200);
相关文章推荐
- [解决方法]MySql提示:The server quit without updating PID file(…)失败
- easyui datagrid 避免二次加载
- Visual Studio TFS Branching and Merging Guidance
- Android学习心得(8) --- MAC下dex2jar和jd-gui使用
- 欧拉计划(14)Longest Collatz sequence
- hdu3530 Subsequence 单调队列
- leetcode Ch4-Binary Tree & BFS & Divide/Conquer
- [SoapUI] SoapUI download address
- UITextView 单行垂直居中显示
- easyUI如何选择使用指定的locale
- StringBuilder类和StringBuffer类,线程安全问题和选择
- IOS中UIScrollView和UIPageControl的联合运用
- SQL Server 系统表介绍:sys.dm_exec_requests
- IQueryable和IEnumerable的区别
- request 获取参数
- 为Angular-UEditor增加工具栏属性
- NGUI 的ScrollView如何让item居中
- 【Android开发经验】Android举UI设计经验
- 【iOS】UIStackView官方文档翻译
- SQL Server查询计划sys.dm_exec_text_query_plan