zoukankan      html  css  js  c++  java
  • 【Espruino】NO.12 加速度计演示

    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

    默认情况下,加速度计处于待机模式,若要获取数据。须要打开測量模式,设置为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);
  • 相关阅读:
    贝叶斯模型
    java的移位和异或运算
    windows下xgboost安装到python
    bagging and boosting
    SVM处理多分类问题
    GO语言语法入门
    [转自SA]浅谈nginx的工作原理和使用
    多线程编程-- part 9 信号量:Semaphore
    多线程编程-- part 8 CyclicBarrier
    多线程编程-- part 7 CountDownLatch
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4587959.html
Copyright © 2011-2022 走看看