加速度传感器,浸染是丈量在加速过程中产生的力。最基本的如平常所熟习的重力加速度,大小是1g。
加速度传感器一样平常用于什么地方?

通过丈量由重力引起的加速度,可以打算出设备相对付水平面的倾斜角度。通过剖析动态加速度,可以剖析出设备的移动办法。自平衡车中便是利用加速度传感器与陀螺仪进行卡尔曼滤波进行姿态纠正。
一、实验解释本次试验利用的ADXL345数字传感器,通过I2C或者SPI接口直接输出数字旗子暗记。在1g的加速度下,输出数值为256。
ADXL345传感器先容:
ADXL345三轴加速度采取ADXL345芯片,具有体积小,功耗低的特点,13位数字精度分辨能够丈量超过±16克的加速度变换。旗子暗记输出为16位数字输出,可以通过SPI与I2C接口实现旗子暗记采集。ADXL345适用于倾斜角度丈量,能够进行静态重力加速度检测。同时也适用于运动状态的追踪,丈量运动或冲击过程造成的瞬时加速度。其高分辨率(4毫克/ LSB)使之能够感应变革小于1°的倾斜角度。DFrobot的ADXL345三轴加速度计还内置一款LDO模块让你的加速度计能够事情于3.3〜6V的事情电压之下。传感器供应了几个分外的功能。能够在静态或动态情形下检测是否有运动或停滞涌现,其余能够感知单轴的加速度值是否超出用户的设定值。检测单击/双击。如果该设备正不才降,能进行自由落体感应检测。这些功能能够被映射到两个中断输出引脚上。在低功耗模式是用户能够基于ADXL345动作感应,进行电源管理,同时只损耗极低的功耗。在我们的"大众年夜众号:xunmingiot回答“手册”,即可得到ADXL345中文手册。
二、物料清单PS:所需物料可以在这里购买—http://tbll000175.cn/DXSXCvr4
三、模块解释针脚解释:
四、接口解释
1、两组电源 一组是模块的电源 一组是背光板的电源 一样平常均利用5V供电。本次试验背光利用3.3V供电也可以事情。
2、VL是调节比拟度的引脚,串联不大于5KΩ的电位器进行调节。本次实验利用1KΩ的电阻来设定比拟度。其连接分高电位与低电位接法,本次利用低电位接法,串联1KΩ电阻后接GND。
把稳:不同液晶的比拟度电阻是不同的,最好是接一个电位器进行测试,本次实验利用的1KΩ电阻在其他液晶上不一定精确。
3、RS 是很多液晶上都有的引脚 是命令/数据选择引脚 该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。
4、RW 也是很多液晶上都有的引脚 是读写选择端 该脚电平为高是表示要对液晶进行读操作;为低时表示要进行写操作。
5、E 同样很多液晶模块有此引脚 常日在总线上旗子暗记稳定后给一正脉冲关照把数据读走,在此脚为高电平的时候总线不许可变革。
6、D0—D7 8 位双向并行总线,用来传送命令和数据。
7、BLA是背光源正极,BLK是背光源负极。
五、四位连线法图六、实验代码
#include <Wire.h> //调用arduino自带的I2C库#include <LiquidCrystal.h> //调用arduino自带的LiquidCrystal库 #define Register_ID 0#define Register_2D 0x2D#define Register_X0 0x32#define Register_X1 0x33#define Register_Y0 0x34#define Register_Y1 0x35#define Register_Z0 0x36#define Register_Z1 0x37 LiquidCrystal lcd(12, 11, 10, 9, 8, 7);//设置接口 int ADXAddress = 0xA7>>1; //转换为7位地址int reading = 0;int val = 0;int X0,X1,X_out;int Y0,Y1,Y_out;int Z1,Z0,Z_out;double Xg,Yg,Zg; void setup(){ lcd.begin(16, 2); //初始化LCD delay(100); Wire.begin(); //初始化I2C delay(100); Wire.beginTransmission(ADXAddress); Wire.write(Register_2D); Wire.write(8); Wire.endTransmission();} void loop(){ Wire.beginTransmission(ADXAddress); Wire.write(Register_X0); Wire.write(Register_X1); Wire.endTransmission(); Wire.requestFrom(ADXAddress,2); if(Wire.available()<=2); { X0 = Wire.read(); X1 = Wire.read(); X1 = X1<<8; X_out = X0+X1; } Wire.beginTransmission(ADXAddress); Wire.write(Register_Y0); Wire.write(Register_Y1); Wire.endTransmission(); Wire.requestFrom(ADXAddress,2); if(Wire.available()<=2); { Y0 = Wire.read(); Y1 = Wire.read(); Y1 = Y1<<8; Y_out = Y0+Y1; } Wire.beginTransmission(ADXAddress); Wire.write(Register_Z0); Wire.write(Register_Z1); Wire.endTransmission(); Wire.requestFrom(ADXAddress,2); if(Wire.available()<=2); { Z0 = Wire.read(); Z1 = Wire.read(); Z1 = Z1<<8; Z_out = Z0+Z1; } Xg = X_out/256.00;//把输出结果转换为重力加速度g,精确到小数点后2位。 Yg = Y_out/256.00; Zg = Z_out/256.00; lcd.clear(); //清屏 lcd.print(\"大众X=\公众); //使屏幕显示笔墨X= lcd.print(Xg); lcd.setCursor(8, 0); lcd.print(\公众Y=\"大众); lcd.print(Yg); lcd.setCursor(0, 1); lcd.print(\"大众Z=\"大众); lcd.print(Zg); delay(300); //延时0.3秒,刷新频率这里进行调度 }七、干系函数先容
setCursor():放置LCD光标; 也便是说,设置写入LCD的后续文本的位置。
句法:lcd .setCursor(col,row)。参数col:定位光标的列(0为第一列);row:定位光标的行(0为第一行)。
Wire.available():返回可用read()检索的字节数。
delay( ms):此函数为毫秒级延时。参数为时长,类型unsigned long。
本日的内容你学会了吗?动手实践才是真理呦,赶紧随着
我们下期再见啦!
(码字不易,点个赞再走呗)
往期教程可以点击以下链接查看:
若何快速入门Arduino?(十九)—1602液晶显示实验(1)
若何快速入门Arduino?(十八)—EEPROM读写与获取串口数据流
若何快速入门Arduino?(十七)—Arduino驱动数码管(2)










