简介
IIS2ICLX是一款具有嵌入式机器学习核心的超高性能两轴数字线性加速度计,测量范围为±0.5/±1/±2/±3g,具有高精度(超低噪声,高稳定性和可重复性)、高分辨率和低功耗的特点,十分适合用于倾角测量应用(测斜仪)。IIS2ICLX强大的嵌入式功能集(可编程FSM,机器学习核心,传感器中枢,3Kbyte的FIFO,事件解码和中断),可用于实现智能和复杂的传感器节点,这些节点能在非常低的功耗下提供高精度和高性能。-40°C至+105°C的工作温度范围非常适合集成到机器人或工业级的项目中。
特性
- 耐高温(工作温度:-40°C~+105°C)
- 高精度(超低噪声,高稳定性和可重复性)
- 嵌入式功能集(可编程FSM,机器学习核心,传感器中枢,3Kbyte的FIFO,事件解码和中断)
应用场景
- 精密测斜仪、水准仪
- 机器人与工业自动化
- 设备的安装和监控
技术规格

- 工作电压:3.3V
- 平均功耗:0.479mA
- 接口方式:IIC/SPI
- 可选的满刻度:±0.5 /±1 /±2 /±3 g
- 谐振频率:900Hz
- 数字输出数据频率:12.5-833Hz
- 超低噪声性能:15 µg
- 工作温度范围:-40°C至+105°C
- 非线性:<0.1%FS
- 灵敏度:±2%mg/LSB
- 启动时间:15ms
引脚说明

序号 | 丝印 | 功能描述 |
---|---|---|
1 | VCC | 3.3v~5.5v电源输入 |
2 | 3V3 | 3.3v电源输入/输出 |
3 | GND | 电源负极 |
4 | SCL | I2C时钟线 |
5 | SDA | I2C数据线 |
6 | SCK | I2C时钟控制线 |
7 | SDI | SPI数据线(输入) |
8 | SDO | SPI数据线(输出) |
9 | CS | SPI 片选线 |
10 | INT1 | 中断引脚1 |
11 | INT2 | 中断引脚2 |
注意: 所有数据输出电压均为3.3V
不同通信方式连线提示:
- I2C

- SPI

中断引脚连接
主板 | 默认连接引脚 |
---|---|
UNO/MEGA2560 | 2 |
Leonardo | 3 |
Micro:\bit | P0 |
ESP32/ESP8266/ARDUINO_SAM_ZERO(M0) | D6 |
Raspberry Pi | GPIO25 |
M0 使用教程
准备
- 硬件
- 1 x Firebeetle Board-M0
- 1 x IIS2ICLX两轴数字测斜仪传感器
- 若干 杜邦线
- 软件
- Arduino IDE, 点击下载Arduino IDE
- 库文件和示例程序
关于如何安装库文件,点击链接
关于如何使用Firebeetle Board-M0,点击链接
-
样例代码
-
主要API接口函数列表
/**
* @brief 芯片初始化
*/
void begin(){};
/**
* @brief 获取传感器ID
@return 返回八位ID数据
*/
uint8_t getID();
/**
* @brief 设置传感器转换加速度数据的频率
* @param rate,数据输出频率
/<以下参数属于 IIS2ICLX两轴加速度传感器>/
IIS2ICLX_RATE_0HZ /<shutdown>/
IIS2ICLX_RATE_12HZ5 /<12.5hz>/
IIS2ICLX_RATE_26HZ /<26hz>/
IIS2ICLX_RATE_52HZ /<52hz>/
IIS2ICLX_RATE_104HZ /<104hz>/
IIS2ICLX_RATE_208HZ /<208hz>/
IIS2ICLX_RATE_416HZ /<416hz>/
IIS2ICLX_RATE_833HZ /<833hz>/
/<其它传感器>/
*/
void setDataRate(uint16_t rate);
/**
* @brief 设置加速度测量的量程
* @param range 量程
/<以下参数属于 IIS2ICLX两轴加速度传感器>/
IIS2ICLX_500_MG /<±500mg>/
IIS2ICLX_1_G /<±1g>/
IIS2ICLX_2_G /<±2g>/
IIS2ICLX_3_G /<±3g>/
/<其它传感器>/
*/
void setRange(uint16_t range);
/**
* @brief Read the acceleration in the x direction
* @return Acceleration data from x(mg),测量的量程通过setRange()函数设置
*/
int16_t readAccX();
/**
* @brief Read the acceleration in the y direction
* @return Acceleration data from y(mg),测量的量程通过setRange()函数设置
*/
int16_t readAccY();
/**
* @brief 选择在中断1引脚产生的中断事件
* @param event 中断事件,当此事件产生会在中断1引脚产生电平跳变
/<以下参数属于 IIS2ICLX两轴加速度传感器>/
IIS2ICLX_WAKEUP /<wake up 事件>/
IIS2ICLX_SINGLE_TAP /<单击事件>/
IIS2ICLX_DOUBLE_TAP /<双击事件>/
IIS2ICLX_MOTION /<静止/运动检测>/
/<其它传感器>/
*/
void setInt1Event(uint16_t event);
/**
* @brief 选择在中断2引脚产生的中断事件
* @param event 中断事件,当此事件产生会在中断2引脚产生电平跳变
/<以下参数属于 IIS2ICLX两轴加速度传感器>/
IIS2ICLX_WAKEUP /<wake up 事件>/
IIS2ICLX_SINGLE_TAP /<单击事件>/
IIS2ICLX_DOUBLE_TAP /<双击事件>/
IIS2ICLX_MOTION /<静止/运动检测>/
/<其它传感器>/
*/
void setInt2Event(uint16_t event);
/**
* @brief 使能中断,只有使能了中断才能正常产生中断信号,并对对应寄存器里面的中断标志位置位
* @param enable ture(使能中断)\false(禁用中断)
*/
void enableInterrupt(bool enable);
/**
* @brief 设置唤醒的传感器的阈值,只有当采集到的数据大于此值,模块才离开睡眠状态
* @param th threshold ,unit:mg,数值是在量程之内
*/
void setWakeUpthreshold(float th);
/**
* @brief Set the tap threshold in the X direction
* @param th Threshold(mg),当超过此阈值会发生敲击事件
*/
void setTapThresholdOnX(float th);
/**
* @brief Set the tap threshold in the X and Y direction
* @param th Threshold(mg),当超过此阈值会发生敲击事件
*/
void setTapThreshold(float th);
/**
* @brief Set the tap threshold in the Y direction
* @param th Threshold(mg),当超过此阈值会发生敲击事件
*/
void setTapThresholdOnY(float th);
/**
* @brief 设置quiet time,用于双击事件识别中,在首次敲击被识别到后的quiet time时间内,
* @n 任何加速度的抖动都不会被识别为另一次敲击,在quiet time后duration time时间内发
* @n 生的敲击才会被认定为双击事件中的第二次敲击。这个时间的设置意义在于防抖。
* @param quiet quiet time 范围 0 ~ 3
* @n time = quiet * (4/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|-----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|-----------------------------------------------------------------------------------------------------|
| time |quiet*(4s/12.5)=quiet*320ms|quiet*(4s/26)=quiet*153ms | quiet*(4s/52)= quiet*75ms |
|---------------------------------------------------------------------------------------------------- |
*/
void setTapQuiet(uint8_t quiet);
/**
* @brief 设置双击事件中两次敲击间的时间间隔。
* @param dur duration time 范围 0 ~ 15
* @n time = dur * (8/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|----------------------------------------------------------------------------------------------------|
| time |dur*(32s/12.5)=dur*2560ms|dur*(32s/26)=dur*1230ms | dur*(32s/52)= dur*615ms |
|--------------------------------------------------------------------------------------------------- |
*/
void setTapDur(uint8_t dur);
/**
* @brief 设置shock time,从加速度大于阈值的时候开始计时,在shock time时间后,
* @n 如果对应方向的加速度回归到小于阈值的水平,则被判定为敲击事件,若在shock
* @n time时间后对应方向的加速度还是大于阈值,则不会被识别为敲击事件而是运动
* @param shock shock time 范围 0 ~3
* @n time = shock * (8/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|-----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|-----------------------------------------------------------------------------------------------------|
| time |shock*(8s/12.5)=shock*640ms|shock*(8s/26)=shock*307ms | shock*(8s/52)= shock*153ms|
|---------------------------------------------------------------------------------------------------- |
*/
void setTapShock(uint8_t shock);
/**
* @brief Set the tap detection mode,仅检测单击或者仅检测双击
* @param mode 点击检测模式
IIS_SINGLE_TAP /<检测单击>/
IIS_DOUBLE_TAP /<检测双击>/
*/
void setTapMode(uint8_t mode);
/**
* @brief 检测是否有点击事件产生
* @return true(有点击事件)/false(没有点击事件)
*/
bool tapDetected();
/**
* @brief 获取敲击的类型,双击或者单击
* @return IIS_SINGLE_TAP 单击事件
IIS_DOUBLE_TAP 双击事件
*/
uint8_t getTapType();
/**
* @brief 设置唤醒的持续时间,在此时间后,若两个方向的加速度数据小于唤醒阈值,那么模块会进入睡眠状态
* @param dur duration time 范围 0 ~ 15
* @n time = dur * (512/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|-----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|-----------------------------------------------------------------------------------------------------|
| time |dur*(512s/12.5)=dur*40s | dur*(512s/26)=dur*20s | dur*(512s/52)= dur*10s |
|---------------------------------------------------------------------------------------------------- |
*/
void setWakeUpDur(uint8_t dur);
/**
* @brief 检测模块现在的状态是静止还是运动
* @return true(产生运动)/false(传感器未运动)
*/
bool actDetected();
/**
* @brief 滤波路径选择
* @param path 滤波路径
IIS2ICLX_HPF /<滤波选择为high-pass digital filter,高通滤波>/
IIS2ICLX_SLOPE /<滤波选择为slope filter,斜率滤波>/
*/
void setFilterPath(uint16_t path);
/**
* @brief 锁存中断
* @param enable 是否锁存中断,中断锁存后,当中断引脚正常电平是低电平,中断产生后会一直保持高电平
* @n 直到数据寄存器被读取,电平状态才恢复为低电平
true /<中断引脚电平被锁存,等到数据寄存器被读取才会恢复正常电平>/
false /<中断不被锁存,当中断产生时,中断引脚会产生一个电平脉冲>/
*/
void latchInterrupt(bool enable);
/**
* @brief 睡眠唤醒检测
* @return true(模块从睡眠状态唤醒)/false(模块仍处于睡眠状态)
*/
bool wakeUpDetected();
/**
* @brief 唤醒的运动方向检测
* @return eDirX /<X方向的运动唤醒芯片>/
eDirY /<Y方向的运动唤醒芯片>/
eDirError,/<检测错误>/
*/
eWakeUpDir_t getWakeUpDir();
/**
* @brief 点击方向的源头检测
* @return eDirXPositive /<从 X 正方向发生的点击事件>/
eDirXNegative /<从 X 负方向发生的点击事件>/
eDirYPositive /<从 Y 正方向发生的点击事件>/
eDirYNegative /<从 Y 负方向发生的点击事件>/
*/
eTapDir_t getTapDirection();
样例代码1-运动监测功能(activityDetect.ino)
- 选择activityDetect.ino
- 烧录程序
/**!
* @file activityDetect.ino
* @brief 运动静止检测,可以检测模块是否在运动,检测的阈值可以通过setWakeUpthreshold()
* @n 函数设置,设置的值越小,检测越灵敏
* @n 在使用SPI时片选引脚可以通过 IIS2ICLX_CS_CS 的值修改
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2021-04-16
* @get from https://www.dfrobot.com
* @https://github.com/DFRobot/DFRobot_IIS
*/
#include <DFRobot_IIS2ICLX.h>
//当你使用I2C通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_I2C构造对象
/*!
* @brief Constructor
* @param addr I2C address(0x6B)
* @param pWire I2c controller
*/
//DFRobot_IIS2ICLX_I2C iis2iclx (0x6B,&Wire);
DFRobot_IIS2ICLX_I2C iis2iclx ;
//当你使用SPI通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_SPI构造对象
#if defined(ESP32) || defined(ESP8266)
#define IIS2ICLX_CS D3
#elif defined(__AVR__) || defined(ARDUINO_SAM_ZERO)
#define IIS2ICLX_CS 3
#elif (defined NRF5)
#define IIS2ICLX_CS 2
#endif
/*!
* @brief Constructor
* @param cs : Chip selection pinChip selection pin
* @param spi :SPI controller
*/
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS,&SPI);
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS);
void setup(void)
{
Serial.begin(9600);
iis2iclx.begin();
//芯片软复位
iis2iclx.reset();
/*
加速度采集速率设置
参数可取: IIS2ICLX_RATE_0HZ //0hz
IIS2ICLX_RATE_12HZ5 //12.5hz
IIS2ICLX_RATE_26HZ //26hz
IIS2ICLX_RATE_52HZ //52hz
IIS2ICLX_RATE_104HZ //104hz
IIS2ICLX_RATE_208HZ //208hz
IIS2ICLX_RATE_416HZ //416hz
IIS2ICLX_RATE_833HZ //833hz
*/
iis2iclx.setDataRate(IIS2ICLX_RATE_833HZ);
/*
加速度采集量程
参数可取: IIS2ICLX_500_MG /<±500mg>/
IIS2ICLX_1_G /<±1g>/
IIS2ICLX_2_G /<±2g>/
IIS2ICLX_3_G /<±3g>/
*/
iis2iclx.setRange(IIS2ICLX_2_G);
/*
滤波方式选择
参数可取:IIS2ICLX_HPF //滤波器选择为high-pass digital filter
IIS2ICLX_SLOPE //滤波器选择为slope filter
*/
iis2iclx.setFilterPath(IIS2ICLX_SLOPE);
//使能传感器中断
iis2iclx.enableInterrupt(true);
//设置运动检测阈值,单位为(g),数值是在量程之内
iis2iclx.setWakeUpthreshold(0.1);
/*
选择在中断1引脚产生的中断事件
参数可取:IIS2ICLX_WAKEUP //wake up 事件
IIS2ICLX_SINGLE_TAP //单击事件
IIS2ICLX_DOUBLE_TAP //双击事件
IIS2ICLX_MOTION //静止/运动检测
*/
iis2iclx.setInt1Event(IIS2ICLX_MOTION);
//iis2iclx.setInt2Event(IIS2ICLX_MOTION);
/*
设置唤醒的持续时间,在此时间后,若两个方向的加速度数据小于
唤醒阈值,那么模块会进入睡眠状态
time = dur * (512/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|-----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|-----------------------------------------------------------------------------------------------------|
| time |dur*(512s/12.5)=dur*40s |dur*(512s/26)=dur*20s | dur*(3512s/52)= dur*10ms |
|---------------------------------------------------------------------------------------------------- |
*/
iis2iclx.setWakeUpDur(/*dur = */1);
}
void loop(void)
{
delay(100);
//检测模块是否在运动,模块被唤醒后会在Sleep Duration 时间内都处于运动状态这个事件通过 setWakeUpDur()函数设置
if(iis2iclx.actDetected()){
Serial.println("motion");
delay(200);
}
}
结果
样例代码2-运动中断功能(activityDetectInterrupt.ino)
- 选择activityDetectInterrupt.ino
- 烧录程序
/**!
* @file activityDetectInterrupt.ino
* @brief 通过中断引脚检测运动,可以检测模块是否在运动,检测的阈值可以通过setWakeUpthreshold()
* @n 函数设置,设置的值越小,检测越灵敏
* @n 在使用SPI时片选引脚可以通过 IIS2ICLX_CS 的值修改
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2021-04-16
* @get from https://www.dfrobot.com
* @https://github.com/DFRobot/DFRobot_IIS
*/
#include <DFRobot_IIS2ICLX.h>
//当你使用I2C通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_I2C构造对象
/*!
* @brief Constructor
* @param addr I2C address(0x6B)
* @param pWire I2c controller
*/
//DFRobot_IIS2ICLX_I2C iis2iclx (0x6B,&Wire);
DFRobot_IIS2ICLX_I2C iis2iclx ;
//当你使用SPI通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_SPI构造对象
#if defined(ESP32) || defined(ESP8266)
#define IIS2ICLX_CS D3
#elif defined(__AVR__) || defined(ARDUINO_SAM_ZERO)
#define IIS2ICLX_CS 3
#elif (defined NRF5)
#define IIS2ICLX_CS 2
#endif
/*!
* @brief Constructor
* @param cs : Chip selection pinChip selection pin
* @param spi :SPI controller
*/
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS,&SPI);
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS);
volatile uint8_t intFlag = 0;
//外部中断服务函数
void interEvent(){
//Serial.println("wake up detected !");
intFlag = 1;
}
void setup(void)
{
Serial.begin(9600);
iis2iclx.begin();
//芯片软复位
iis2iclx.reset();
/*
加速度采集速率设置
参数可取: IIS2ICLX_RATE_0HZ //0hz
IIS2ICLX_RATE_12HZ5 //12.5hz
IIS2ICLX_RATE_26HZ //26hz
IIS2ICLX_RATE_52HZ //52hz
IIS2ICLX_RATE_104HZ //104hz
IIS2ICLX_RATE_208HZ //208hz
IIS2ICLX_RATE_416HZ //416hz
IIS2ICLX_RATE_833HZ //833hz
*/
iis2iclx.setDataRate(IIS2ICLX_RATE_833HZ);
/*
加速度采集量程
参数可取: IIS2ICLX_500_MG /<±500mg>/
IIS2ICLX_1_G /<±1g>/
IIS2ICLX_2_G /<±2g>/
IIS2ICLX_3_G /<±3g>/
*/
iis2iclx.setRange(IIS2ICLX_2_G);
/*
滤波方式选择
参数可取:IIS2ICLX_HPF //滤波器选择为high-pass digital filter
IIS2ICLX_SLOPE //滤波器选择为slope filter
*/
iis2iclx.setFilterPath(IIS2ICLX_SLOPE);
//使能传感器中断
iis2iclx.enableInterrupt(true);
//设置运动检测阈值,单位为(g),数值是在量程之内
iis2iclx.setWakeUpthreshold(1);
/*
选择在中断1引脚产生的中断事件
参数可取:IIS2ICLX_WAKEUP //wake up 事件
IIS2ICLX_SINGLE_TAP //单击事件
IIS2ICLX_DOUBLE_TAP //双击事件
IIS2ICLX_MOTION //静止/运动检测
*/
iis2iclx.setInt1Event(IIS2ICLX_MOTION);
//iis2iclx.setInt2Event(IIS2ICLX_MOTION);
/*
设置唤醒的持续时间,在此时间后,若两个方向的加速度数据小于
唤醒阈值,那么模块会进入睡眠状态
time = dur * (512/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|-----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|-----------------------------------------------------------------------------------------------------|
| time |dur*(512s/12.5)=dur*40s |dur*(512s/26)=dur*20s | dur*(3512s/52)= dur*10ms |
|---------------------------------------------------------------------------------------------------- |
*/
iis2iclx.setWakeUpDur(/*dur = */1);
#if defined(ESP32) || defined(ESP8266)
//默认使用D6引脚作为中断引脚,也可以选择其它不冲突的引脚作为外部中断引脚
attachInterrupt(digitalPinToInterrupt(D6)/*Query the interrupt number of the D6 pin*/,interEvent,CHANGE);
#elif defined(ARDUINO_SAM_ZERO)
//默认使用5引脚作为中断引脚,也可以选择其它不冲突的引脚作为外部中断引脚
attachInterrupt(digitalPinToInterrupt(5)/*Query the interrupt number of the 5 pin*/,interEvent,CHANGE);
#else
/* The Correspondence Table of AVR Series Arduino Interrupt Pins And Terminal Numbers
* ---------------------------------------------------------------------------------------
* | | DigitalPin | 2 | 3 | |
* | Uno, Nano, Mini, other 328-based |--------------------------------------------|
* | | Interrupt No | 0 | 1 | |
* |-------------------------------------------------------------------------------------|
* | | Pin | 2 | 3 | 21 | 20 | 19 | 18 |
* | Mega2560 |--------------------------------------------|
* | | Interrupt No | 0 | 1 | 2 | 3 | 4 | 5 |
* |-------------------------------------------------------------------------------------|
* | | Pin | 3 | 2 | 0 | 1 | 7 | |
* | Leonardo, other 32u4-based |--------------------------------------------|
* | | Interrupt No | 0 | 1 | 2 | 3 | 4 | |
* |--------------------------------------------------------------------------------------
*/
/* The Correspondence Table of micro:bit Interrupt Pins And Terminal Numbers
* ---------------------------------------------------------------------------------------------------------------------------------------------
* | micro:bit | DigitalPin |P0-P20 can be used as an external interrupt |
* | (When using as an external interrupt, |---------------------------------------------------------------------------------------------|
* |no need to set it to input mode with pinMode)|Interrupt No|Interrupt number is a pin digital value, such as P0 interrupt number 0, P1 is 1 |
* |-------------------------------------------------------------------------------------------------------------------------------------------|
*/
attachInterrupt(/*Interrupt No*/0,interEvent,CHANGE);//Open the external interrupt 0, connect INT1/2 to the digital pin of the main control:
//UNO(2), Mega2560(2), Leonardo(3), microbit(P0).
#endif
//是否锁存中断,中断锁存后,当中断引脚正常电平是低电平,中断产生后
//会一直保持高电平,直到相应的状态寄存器被读取,电平状态才恢复为低电平
iis2iclx.latchInterrupt(false);
}
void loop(void)
{
delay(10);
//检测模块是否在运动,模块被唤醒后会在Sleep Duration 时间内都处于运动状态这个事件通过 setWakeUpDur()函数设置
//只有当模块从运动状态到静止状态,或从静止状态到正常状态才会产生中断
if(intFlag == 1){
if(iis2iclx.actDetected()){
Serial.println("motion");
}
delay(200);
intFlag = 0;
}
}
结果
样例代码3-读取X,Y,Z轴加速度(getAcceleration.ino)
- 选择getAcceleration.ino
- 烧录程序
/**!
* @file getAcceleration.ino
* @brief Get the acceleration in x, y, directions,测量的量程为±500mg,±1g,±2g或±3g,通过setRange()函数设置
* @n 在使用SPI时片选引脚可以通过 IIS2ICLX_CS 的值修改
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2021-04-16
* @get from https://www.dfrobot.com
* @https://github.com/DFRobot/DFRobot_IIS
*/
#include <DFRobot_IIS2ICLX.h>
//当你使用I2C通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_I2C构造对象
/*!
* @brief Constructor
* @param addr I2C address(0x6B)
* @param pWire I2c controller
*/
//DFRobot_IIS2ICLX_I2C iis2iclx (0x6B,&Wire);
DFRobot_IIS2ICLX_I2C iis2iclx ;
//当你使用SPI通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_SPI构造对象
#if defined(ESP32) || defined(ESP8266)
#define IIS2ICLX_CS D3
#elif defined(__AVR__) || defined(ARDUINO_SAM_ZERO)
#define IIS2ICLX_CS 3
#elif (defined NRF5)
#define IIS2ICLX_CS 2
#endif
/*!
* @brief Constructor
* @param cs : Chip selection pinChip selection pin
* @param spi :SPI controller
*/
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS,&SPI);
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS);
void setup(void)
{
Serial.begin(9600);
//芯片初始化
iis2iclx.begin();
//芯片软复位
iis2iclx.reset();
//获取传感器id
Serial.print("芯片ID: 0X");
Serial.println(iis2iclx.getID(),HEX);
/*
加速度采集速率设置
参数可取: IIS2ICLX_RATE_0HZ //0hz
IIS2ICLX_RATE_12HZ5 //12.5hz
IIS2ICLX_RATE_26HZ //26hz
IIS2ICLX_RATE_52HZ //52hz
IIS2ICLX_RATE_104HZ //104hz
IIS2ICLX_RATE_208HZ //208hz
IIS2ICLX_RATE_416HZ //416hz
IIS2ICLX_RATE_833HZ //833hz
*/
iis2iclx.setDataRate(IIS2ICLX_RATE_208HZ);
/*
加速度采集量程
参数可取: IIS2ICLX_500_MG /<±500mg>/
IIS2ICLX_1_G /<±1g>/
IIS2ICLX_2_G /<±2g>/
IIS2ICLX_3_G /<±3g>/
*/
iis2iclx.setRange(IIS2ICLX_2_G);
}
void loop(void)
{
//测量的量程为±500mg,±1g,±2g或±3g,通过setRange()函数设置
Serial.print("Acceleration x: "); //print acceleration
//Read the acceleration in the x direction
Serial.print(iis2iclx.readAccX());
Serial.print(" mg\t y: ");
//Read the acceleration in the x direction
Serial.print(iis2iclx.readAccY());
Serial.println(" mg");
delay(300);
}
结果
样例代码4-敲击监测功能(tap.ino)
- 选择tap.ino
- 烧录程序
/**!
* @file tap.ino
* @brief Single tap and double tap detection,点击模块,或者点击模块附件的桌面都可以触发点击事件
* @n 可以通过setTapMode()函数选择只检测单击,或只检测双击
* @n 在使用SPI时片选引脚可以通过 IIS2ICLX_CS 的值修改
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2021-04-16
* @get from https://www.dfrobot.com
* @https://github.com/DFRobot/DFRobot_IIS
*/
#include <DFRobot_IIS2ICLX.h>
//当你使用I2C通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_I2C构造对象
/*!
* @brief Constructor
* @param addr I2C address(0x6B)
* @param pWire I2c controller
*/
//DFRobot_IIS2ICLX_I2C iis2iclx (0x6B,&Wire);
DFRobot_IIS2ICLX_I2C iis2iclx ;
//当你使用SPI通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_SPI构造对象
#if defined(ESP32) || defined(ESP8266)
#define IIS2ICLX_CS D3
#elif defined(__AVR__) || defined(ARDUINO_SAM_ZERO)
#define IIS2ICLX_CS 3
#elif (defined NRF5)
#define IIS2ICLX_CS 2
#endif
/*!
* @brief Constructor
* @param cs : Chip selection pinChip selection pin
* @param spi :SPI controller
*/
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS,&SPI);
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS);
void setup(void)
{
Serial.begin(9600);
//函数初始化
iis2iclx.begin();
//芯片软复位
iis2iclx.reset();
/*
加速度采集速率设置
参数可取: IIS2ICLX_RATE_0HZ //0hz
IIS2ICLX_RATE_12HZ5 //12.5hz
IIS2ICLX_RATE_26HZ //26hz
IIS2ICLX_RATE_52HZ //52hz
IIS2ICLX_RATE_104HZ //104hz
IIS2ICLX_RATE_208HZ //208hz
IIS2ICLX_RATE_416HZ //416hz
IIS2ICLX_RATE_833HZ //833hz
*/
iis2iclx.setDataRate(IIS2ICLX_RATE_416HZ);
/*
加速度采集量程
参数可取: IIS2ICLX_500_MG /<±500mg>/
IIS2ICLX_1_G /<±1g>/
IIS2ICLX_2_G /<±2g>/
IIS2ICLX_3_G /<±3g>/
*/
iis2iclx.setRange(IIS2ICLX_2_G);
//设置x,y方向上的点击阈值
iis2iclx.setTapThreshold(0.1);
//使能中断
iis2iclx.enableInterrupt(true);
/*
设置quiet time,用于双击事件识别中,在首次敲击被识别到后的quiet time时间内,任何加速度的抖动都不会被识别为另一次敲击,在quiet time后duration time时间内发生的敲击才会被认定为双击事件中的第二次敲击
quiet quiet time 范围 0 ~ 3
time = quiet * (4/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|-----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|-----------------------------------------------------------------------------------------------------|
| time |quiet*(4s/12.5)=quiet*320ms|quiet*(4s/26)=quiet*153ms | quiet*(4s/52)= quiet*75ms |
|---------------------------------------------------------------------------------------------------- |
*/
iis2iclx.setTapQuiet(/*quiet = */0);
/*
设置shock time,从加速度大于阈值的时候开始计时,在shock time时间后,如果对应方向的加速度回归到小于阈值的水平,则被判定为敲击事件,若在shock time时间后对应方向的加速度还是大于阈值,则不会被识别为敲击事件而是运动
shock shock time 范围 0 ~3
time = shock * (8/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|-----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|-----------------------------------------------------------------------------------------------------|
| time |shock*(8s/12.5)=shock*640ms|shock*(8s/26)=shock*307ms | shock*(8s/52)= shock*153ms|
|---------------------------------------------------------------------------------------------------- |
*/
iis2iclx.setTapShock(/*shock = */0);
/*
设置双击模式下,双击事件的两次点击的间隔时间
dur duration time 范围 0 ~ 15
time = dur * (8/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|----------------------------------------------------------------------------------------------------|
| time |dur*(32s/12.5)=dur*2560ms|dur*(32s/26)=dur*1230ms | dur*(32s/52)= dur*615ms |
|--------------------------------------------------------------------------------------------------- |
*/
iis2iclx.setTapDur(/*dur = */1);
/*
Set the tap detection mode,仅检测单击或者仅检测双击
参数可取: IIS_SINGLE_TAP /<检测单击>/
IIS_DOUBLE_TAP /<检测双击>/
*/
iis2iclx.setTapMode(IIS_SINGLE_TAP);
/*
选择在中断1引脚产生的中断事件
参数可取:IIS2ICLX_WAKEUP //wake up 事件
IIS2ICLX_SINGLE_TAP //单击事件
IIS2ICLX_DOUBLE_TAP //双击事件
IIS2ICLX_MOTION //静止/运动检测
*/
iis2iclx.setInt1Event(IIS2ICLX_SINGLE_TAP);
//是否锁存中断,中断锁存后,当中断引脚正常电平是低电平,中断产生后
//会一直保持高电平,直到相应的状态寄存器被读取,电平状态才恢复为低电平
iis2iclx.latchInterrupt(false);
}
void loop(void)
{
delay(10);
//检测是否有点击事件方向
if(iis2iclx.tapDetected()){
//得到是什么类型的点击事件,单击或双击
uint8_t type = iis2iclx.getTapType();
uint8_t isTap = 0;
if(type == IIS_SINGLE_TAP){
isTap = 1;
Serial.println("single tap :");
}else if(type == IIS_DOUBLE_TAP){
isTap = 1;
Serial.println("double tap :");
}
//获取点击事件是在哪个方向发生方向
if(isTap){
eTapDir_t dir = iis2iclx.getTapDirection();
if(dir == eDirXPositive){
Serial.println("in positive x");
}
else if(dir == eDirXNegative){
Serial.println("in negative x");
}
else if(dir == eDirYPositive){
Serial.println("in positive y");
}
else if(dir == eDirYNegative){
Serial.println("in negative y");
}
isTap = 0;
}
delay(300);
}
}
结果
样例代码5-敲击中断功能(tapInterrupt.ino)
- 选择tapInterrupt.ino
- 烧录程序
/**!
* @file tapInterrupt.ino
* @brief 使用中断信号检测点击事件,点击模块,或者点击模块附件的桌面都可以触发点击事件,
* @n 可以通过setTapMode()函数选择只检测单击,或只检测双击
* @n 在使用SPI时片选引脚可以通过 IIS2ICLX_CS 的值修改
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2021-04-16
* @get from https://www.dfrobot.com
* @https://github.com/DFRobot/DFRobot_IIS
*/
#include <DFRobot_IIS2ICLX.h>
//当你使用I2C通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_I2C构造对象
/*!
* @brief Constructor
* @param addr I2C address(0x6B)
* @param pWire I2c controller
*/
//DFRobot_IIS2ICLX_I2C iis2iclx (0x6B,&Wire);
DFRobot_IIS2ICLX_I2C iis2iclx ;
//当你使用SPI通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_SPI构造对象
#if defined(ESP32) || defined(ESP8266)
#define IIS2ICLX_CS D3
#elif defined(__AVR__) || defined(ARDUINO_SAM_ZERO)
#define IIS2ICLX_CS 3
#elif (defined NRF5)
#define IIS2ICLX_CS 2
#endif
/*!
* @brief Constructor
* @param cs : Chip selection pinChip selection pin
* @param spi :SPI controller
*/
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS,&SPI);
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS);
//外部中断服务函数
volatile uint8_t intFlag = 0;
void interEvent(){
intFlag = 1;
}
void setup(void)
{
Serial.begin(9600);
//函数初始化
iis2iclx.begin();
//芯片软复位
iis2iclx.reset();
/*
加速度采集速率设置
参数可取: IIS2ICLX_RATE_0HZ //0hz
IIS2ICLX_RATE_12HZ5 //12.5hz
IIS2ICLX_RATE_26HZ //26hz
IIS2ICLX_RATE_52HZ //52hz
IIS2ICLX_RATE_104HZ //104hz
IIS2ICLX_RATE_208HZ //208hz
IIS2ICLX_RATE_416HZ //416hz
IIS2ICLX_RATE_833HZ //833hz
*/
iis2iclx.setDataRate(IIS2ICLX_RATE_416HZ);
/*
加速度采集量程
参数可取:IIS2ICLX_500_MG //±500mg
IIS2ICLX_3_G //±3g
IIS2ICLX_1_G //±1g
IIS2ICLX_2_G //±2g
*/
iis2iclx.setRange(IIS2ICLX_2_G);
//设置x,y方向上的点击阈值
iis2iclx.setTapThreshold(0.1);
//使能中断
iis2iclx.enableInterrupt(true);
/*
设置quiet time,用在双击事件的识别中,当第一个单击事件被识别到后,会有一个quiet time 时间,在这个时间后 duration time前产生另外一个单击事件,才会被识别为双击事件。
quiet quiet time 范围 0 ~ 3
time = quiet * (4/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|-----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|-----------------------------------------------------------------------------------------------------|
| time |quiet*(4s/12.5)=quiet*320ms|quiet*(4s/26)=quiet*153ms | quiet*(4s/52)= quiet*75ms |
|---------------------------------------------------------------------------------------------------- |
*/
iis2iclx.setTapQuiet(/*quiet = */1);
/*
设置shock time,从加速度大于阈值的时候开始计时,在shock time时间后,如果对应方向的加速度回归到小于阈值的水平,
则被判定为单击事件,若在shock time时间后对应方向的加速度还是大于阈值,则不会被识别为单击事件
shock shock time 范围 0 ~3
time = shock * (8/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|-----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|-----------------------------------------------------------------------------------------------------|
| time |shock*(8s/12.5)=shock*640ms|shock*(8s/26)=shock*307ms | shock*(8s/52)= shock*153ms|
|---------------------------------------------------------------------------------------------------- |
*/
iis2iclx.setTapShock(/*shock = */1);
/*
设置双击模式下,双击事件的两次点击的间隔时间
dur duration time 范围 0 ~ 15
time = dur * (8/rate)(unit:s)
| 参数与时间之间的线性关系的示例 |
|----------------------------------------------------------------------------------------------------|
| | | | |
| Data rate | 12.5 Hz | 26 Hz | 52 Hz |
|----------------------------------------------------------------------------------------------------|
| time |dur*(32s/12.5)=dur*2560ms|dur*(32s/26)=dur*1230ms | dur*(32s/52)= dur*615ms |
|--------------------------------------------------------------------------------------------------- |
*/
iis2iclx.setTapDur(/*dur = */1);
/*
Set the tap detection mode,仅检测单击或者仅检测双击
参数可取: IIS_SINGLE_TAP /<检测单击>/
IIS_DOUBLE_TAP /<检测双击>/
*/
iis2iclx.setTapMode(IIS_SINGLE_TAP);
/*
选择在中断1引脚产生的中断事件
参数可取:IIS2ICLX_WAKEUP //wake up 事件
IIS2ICLX_SINGLE_TAP //单击事件
IIS2ICLX_DOUBLE_TAP //双击事件
IIS2ICLX_MOTION //静止/运动检测
*/
iis2iclx.setInt1Event(IIS2ICLX_SINGLE_TAP);
#if defined(ESP32) || defined(ESP8266)
//默认使用D6引脚作为中断引脚,也可以选择其它不冲突的引脚作为外部中断引脚
attachInterrupt(digitalPinToInterrupt(D6)/*Query the interrupt number of the D6 pin*/,interEvent,CHANGE);
#elif defined(ARDUINO_SAM_ZERO)
//默认使用5引脚作为中断引脚,也可以选择其它不冲突的引脚作为外部中断引脚
attachInterrupt(digitalPinToInterrupt(5)/*Query the interrupt number of the 5 pin*/,interEvent,CHANGE);
#else
/* The Correspondence Table of AVR Series Arduino Interrupt Pins And Terminal Numbers
* ---------------------------------------------------------------------------------------
* | | DigitalPin | 2 | 3 | |
* | Uno, Nano, Mini, other 328-based |--------------------------------------------|
* | | Interrupt No | 0 | 1 | |
* |-------------------------------------------------------------------------------------|
* | | Pin | 2 | 3 | 21 | 20 | 19 | 18 |
* | Mega2560 |--------------------------------------------|
* | | Interrupt No | 0 | 1 | 2 | 3 | 4 | 5 |
* |-------------------------------------------------------------------------------------|
* | | Pin | 3 | 2 | 0 | 1 | 7 | |
* | Leonardo, other 32u4-based |--------------------------------------------|
* | | Interrupt No | 0 | 1 | 2 | 3 | 4 | |
* |--------------------------------------------------------------------------------------
*/
/* The Correspondence Table of micro:bit Interrupt Pins And Terminal Numbers
* ---------------------------------------------------------------------------------------------------------------------------------------------
* | micro:bit | DigitalPin |P0-P20 can be used as an external interrupt |
* | (When using as an external interrupt, |---------------------------------------------------------------------------------------------|
* |no need to set it to input mode with pinMode)|Interrupt No|Interrupt number is a pin digital value, such as P0 interrupt number 0, P1 is 1 |
* |-------------------------------------------------------------------------------------------------------------------------------------------|
*/
attachInterrupt(/*Interrupt No*/0,interEvent,CHANGE);//Open the external interrupt 0, connect INT1/2 to the digital pin of the main control:
//UNO(2), Mega2560(2), Leonardo(3), microbit(P0).
#endif
//是否锁存中断,中断锁存后,当中断引脚正常电平是低电平,中断产生后
//会一直保持高电平,直到相应的状态寄存器被读取,电平状态才恢复为低电平
iis2iclx.latchInterrupt(false);
}
void loop(void)
{
//检测是否有点击事件方向
if(intFlag == 1){
delay(10);
uint8_t type = iis2iclx.getTapType();
uint8_t isTap = 0;
if(type == IIS_SINGLE_TAP){
isTap = 1;
Serial.print("single tap :");
}else if(type == IIS_DOUBLE_TAP){
isTap = 1;
Serial.print("double tap :");
}
//获取点击事件是在哪个方向发生方向
if(isTap){
eTapDir_t dir = iis2iclx.getTapDirection();
if(dir == eDirXPositive){
Serial.println("in positive x");
}
else if(dir == eDirXNegative){
Serial.println("in negative x");
}
else if(dir == eDirYPositive){
Serial.println("in positive y");
}
else if(dir == eDirYNegative){
Serial.println("in negative y");
}
isTap = 0;
}
intFlag = 0;
delay(200);
}
}
结果
样例代码6-睡眠唤醒功能(wakeUp.ino)
- 选择wakeUp.ino
- 烧录程序
/**!
* @file wakeUp.ino
* @brief 睡眠唤醒检测,当某方向的加速度超过阈值后,会产睡眠唤醒事件,可以通过
* @n 访问状态寄存器或者通过中断引脚int1或者int2检测
* @n 在使用SPI时片选引脚可以通过 IIS2ICLX_CS 的值修改
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2021-04-16
* @get from https://www.dfrobot.com
* @https://github.com/DFRobot/DFRobot_IIS
*/
#include <DFRobot_IIS2ICLX.h>
//当你使用I2C通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_I2C构造对象
/*!
* @brief Constructor
* @param addr I2C address(0x6B)
* @param pWire I2c controller
*/
//DFRobot_IIS2ICLX_I2C iis2iclx (0x6B,&Wire);
DFRobot_IIS2ICLX_I2C iis2iclx ;
//当你使用SPI通信时,使用下面这段程序,使用DFRobot_IIS2ICLX_SPI构造对象
#if defined(ESP32) || defined(ESP8266)
#define IIS2ICLX_CS D3
#elif defined(__AVR__) || defined(ARDUINO_SAM_ZERO)
#define IIS2ICLX_CS 3
#elif (defined NRF5)
#define IIS2ICLX_CS 2
#endif
/*!
* @brief Constructor
* @param cs : Chip selection pinChip selection pin
* @param spi :SPI controller
*/
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS,&SPI);
//DFRobot_IIS2ICLX_SPI iis2iclx(/*cs = */IIS2ICLX_CS);
void setup(void)
{
Serial.begin(9600);
//芯片初始化
iis2iclx.begin();
//芯片软复位
iis2iclx.reset();
/*
加速度采集速率设置
参数可取: IIS2ICLX_RATE_0HZ //0hz
IIS2ICLX_RATE_12HZ5 //12.5hz
IIS2ICLX_RATE_26HZ //26hz
IIS2ICLX_RATE_52HZ //52hz
IIS2ICLX_RATE_104HZ //104hz
IIS2ICLX_RATE_208HZ //208hz
IIS2ICLX_RATE_416HZ //416hz
IIS2ICLX_RATE_833HZ //833hz
*/
iis2iclx.setDataRate(IIS2ICLX_RATE_416HZ);
/*
加速度采集量程
参数可取: IIS2ICLX_500_MG /<±500mg>/
IIS2ICLX_1_G /<±1g>/
IIS2ICLX_2_G /<±2g>/
IIS2ICLX_3_G /<±3g>/
*/
iis2iclx.setRange(IIS2ICLX_2_G);
/*
滤波方式选择
参数可取:IIS2ICLX_HPF //滤波器选择为high-pass digital filter
IIS2ICLX_SLOPE //滤波器选择为slope filter
*/
iis2iclx.setFilterPath(IIS2ICLX_SLOPE);
//iis2iclx.latchInterrupt(false);
//使能传感器中断
iis2iclx.enableInterrupt(true);
//设置睡眠唤醒阈值,单位为(g),数值是在量程之内
iis2iclx.setWakeUpthreshold(0.5);
/*
选择在中断1引脚产生的中断事件
参数可取:IIS2ICLX_WAKEUP //wake up 事件
IIS2ICLX_SINGLE_TAP //单击事件
IIS2ICLX_DOUBLE_TAP //双击事件
IIS2ICLX_MOTION //静止/运动检测
*/
iis2iclx.setInt1Event(IIS2ICLX_WAKEUP);
//iis2iclx.setInt2Event(IIS2ICLX_MOTION);
}
void loop(void)
{
delay(10);
//检测是否有wake up 事件产生
if(iis2iclx.wakeUpDetected()){
Serial.println("wake up detected ");
//检测是哪个方向的运动唤醒了模块
eWakeUpDir_t dir = iis2iclx.getWakeUpDir();
if(dir == eDirX){
Serial.println("IN X!");
}
if(dir == eDirY){
Serial.println("IN Y!");
}
delay(300);
}
}
结果
树莓派使用教程
准备
-
硬件
- 树莓派4代B型(或类似)主控板 x 1
- IIS2ICLX两轴数字测斜仪传感器 x 1
- 若干杜邦线
-
软件
接线图
- 将模块与树莓派按照连线图相连。
安装驱动
- 启动树莓派的I2C接口。如已开启,可跳过该步骤。
打开终端(Terminal),键入如下指令,并回车:
sudo raspi-config
然后用上下键选择“ 5 Interfacing Options ”, 按回车进入,选择 “ P5 I2C ”, 按回车确认“ YES ”即可。重启树莓派主控板。
- 安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。
在终端中,依次键入如下指令,并回车:
sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus git
- 下载LIS系列驱动库。在终端中,依次键入如下指令,并回车:
cd Desktop
git clone https://github.com/cdjq/DFRobot_IIS
注意:
若您选择使用I2C或SPI的通信方式,需要修改demo至相应的通信,您可能会遇到没有权限修改示例程序的情况,以下是解决办法:
1.在要修改的文件目录下查询权限,命令为:
ls -al
2.修改该文件权限,命令为:
sudo chmod a+w XXX.py
此时,所有人都对该文件具备写权限了。
样例代码
- 样例代码1-运动监测功能(activity_detect.py)
- 样例代码2-读取X,Y,Z轴加速度(get_acceleration.py)
- 样例代码3-敲击监测功能(tap.py)
- 样例代码4-敲击中断功能(interrupt.py)
- 样例代码5-睡眠唤醒功能(wake_up.py)
样例代码1-运动监测功能(activity_detect.py)
- 在终端中,键入如下指令并回车,运行样例代码:
cd DFRobot_IIS/python/raspberrypi/examples
python activity_detect.py
- 结果
样例代码2-读取X,Y,Z轴加速度(get_acceleration.py)
- 在终端中,键入如下指令并回车,运行样例代码:
cd DFRobot_IIS/python/raspberrypi/examples
python get_acceleration.py
- 结果
样例代码3-敲击监测功能(tap.py)
- 在终端中,键入如下指令并回车,运行样例代码:
cd DFRobot_IIS/python/raspberrypi/examples
python tap.py
- 结果
样例代码4-敲击中断功能(interrupt.py)
- 在终端中,键入如下指令并回车,运行样例代码:
cd DFRobot_IIS/python/raspberrypi/examples
python interrupt.py
- 结果
样例代码5-睡眠唤醒功能(wake_up.py)
- 在终端中,键入如下指令并回车,运行样例代码:
cd DFRobot_IIS/python/raspberrypi/examples
python wake_up.py
- 结果
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。