ADXL345_Library_for_arduino cn->一种简单方便的驱动库可以很好兼容arduino系列,更少的依赖方便移植到其他类型mcu,灵活配置寄存器 iicsensor ic传感器,这里包括adx345驱动和一个aht10的驱动 意味着他不能以spi方式操作。以后会加以改进。这个库文件并不简洁。但是可读性非常高,主要弥补流行库文件不能涵盖的功能,例如低功耗,fifo。
低功耗进入流程 配置auto sleep位为1,在第一次检测静止中断时停止读写ADXL345_REG_INT_SOURCE寄存器,在INT引脚接收到中断后读取寄存器恢复正常运行。意思是在休眠模式不要试图与其通讯。不这样做的后果会导致传感器退出休眠模式后无法再次读取中断标志位
AHT10AHTxx是来自中国的一种温湿度传感器 aht10 20 21 有各种封装类型,aht10是初代版本,他价格在1——5rmb左右。这是一个ADXL345驱动的附带产物。 部分示例如下
- acc.set_ofs(0, 0, 0);
- acc.set_activity_inactivity((uint8_t)75, (uint8_t)75, (uint8_t)5);
- Power_InitTypeDef power_ctl;
- power_ctl.Link = 1;
- power_ctl.AUTO_SLEEP = 0;
- power_ctl.Measure = 1;
- power_ctl.Sleep=0;
- power_ctl.Wakeup_speed = ADXL345_SLEEPDATARATE_1_HZ;
- acc.set_power_mode(&power_ctl);
- delay(100);
- TAP_InitTypeDef tap;
- tap.Tap_axes_x = 0;
- tap.Tap_axes_y = 0;
- tap.Tap_axes_z = 1;
- tap.Tap_Suppress = 0;
- tap.Tap_Thresh=(uint8_t)50; //界限
- tap.Tap_Dur = (uint8_t)15; //持续时间
- tap.Double_Tap_Latent = (uint8_t)80; //延迟
- tap.Double_Tap_Window = (uint8_t)200; //窗口
- acc.set_tap_mode(&tap);
-
- BW_RATE_InitTypeDef bw_rate;
- bw_rate.low_power = 1;
- bw_rate.speed = ADXL345_DATARATE_400_HZ;
- acc.set_speed_mode(&bw_rate);
- delay(100);
- Interrupt_InitTypeDef Interrput;
- Interrput.ACT = ACT_AC;
- Interrput.ACTX = ACT_AXES_ENABLE;
- Interrput.ACTY = ACT_AXES_ENABLE;
- Interrput.ACTZ = ACT_AXES_ENABLE;
- Interrput.INACT = ACT_AC;
- Interrput.INACT_X = ACT_AXES_ENABLE;
- Interrput.INACT_Y = ACT_AXES_ENABLE;
- Interrput.INACT_Z = ACT_AXES_ENABLE;
- Interrput.data_ready = INT_DISENABLE;
- Interrput.single_tap = INT_ENABLE;
- Interrput.double_tap = INT_ENABLE;
- Interrput.activity = INT_ENABLE;
- Interrput.inactivity = INT_ENABLE;
- Interrput.free_fall = INT_DISENABLE;
- Interrput.watermark = INT_DISENABLE;
- Interrput.overrun = INT_DISENABLE;
- Interrput.map_data_ready = INT_PIN1;
- Interrput.map_single_tap = INT_PIN1;
- Interrput.map_double_tap = INT_PIN1;
- Interrput.map_activity = INT_PIN2;
- Interrput.map_inactivity = INT_PIN1;
- Interrput.map_free_fall = INT_PIN1;
- Interrput.map_watermark = INT_PIN1;
- Interrput.map_overrun = INT_PIN1;
- acc.set_interrput(&Interrput);
- delay(100);
- Fifo_InitTypeDef fio;
- fio.self_test = 0; //自测
- fio.spi = 0; //spi模式选择,1三线,0四线
- fio.int_invert = INT_INVERT_HIGH; //中断高低电平
- fio.full_res =1; //1全分辨率,0 10位分辨
- fio.justify = 0; //对齐
- fio.range = ADXL345_RANGE_16_G; //量程
- fio.fifo_mode =FIFO_BYPASS; //旁路
- fio.trigger = INT_PIN1; //触发中断1
- fio.samples =FIFO_SAMPLES_31; //8
- acc.set_fifo_mode(&fio);
- delay(100);
复制代码
文件太大发不了,下载移步github
https://github.com/fBn0523/ADXL345_Library_for_arduino.git
|