博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Espruino】NO.12 加速度传感器演示
阅读量:6006 次
发布时间:2019-06-20

本文共 937 字,大约阅读时间需要 3 分钟。

本文属于个人理解,能力有限,纰漏在所难免。还望指正!

【小鱼有点电】

 

加速度计的应用范围越来越广泛,四轴飞行器、游戏手柄、跌倒检測、振动、倾角检測都会有他的身影。跟其它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

默认情况下,加速度计处于待机模式,若要获取数据,须要打开測量模式。设置为true:

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);

 

转载地址:http://oesmx.baihongyu.com/

你可能感兴趣的文章
css3中变形与动画(一)
查看>>
[XMove-自主设计的体感解决方案] 系统综述
查看>>
【LINUX学习】磁盘分割之建立primary和logical 分区
查看>>
【YUM】第三方yum源rpmforge
查看>>
IOS(CGGeometry)几何类方法总结
查看>>
才知道系列之GroupOn
查看>>
⑲云上场景:超级减肥王,基于OSS的高效存储实践
查看>>
linux kswapd浅析
查看>>
变更 Linux、Ubuntu 时区、时间
查看>>
mac的git的21个客户端
查看>>
Spring Cloud自定义引导属性源
查看>>
[共通]手机端网页开发问题及解决方法整理
查看>>
我的友情链接
查看>>
${basePath}
查看>>
linux命令之uniq简单用法
查看>>
使用Eclipse调试Java程序的10个技巧
查看>>
Hive分桶表
查看>>
oracle10g 启动时报错:ORA-32004 ORA-19905
查看>>
思科分发列表过滤路由(RIP)动态路由协议篇
查看>>
可登录的用户数量是1.6万个,软件的性能得到充分的考验
查看>>