找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2177|回复: 2
打印 上一主题 下一主题
收起左侧

一种ADXL345 AHT10传感器驱动库

[复制链接]
跳转到指定楼层
楼主
ID:276685 发表于 2021-12-24 23:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ADXL345_Library_for_arduino
cn->一种简单方便的驱动库可以很好兼容arduino系列,更少的依赖方便移植到其他类型mcu,灵活配置寄存器
iicsensor ic传感器,这里包括adx345驱动和一个aht10的驱动 意味着他不能以spi方式操作。以后会加以改进。这个库文件并不简洁。但是可读性非常高,主要弥补流行库文件不能涵盖的功能,例如低功耗,fifo。

低功耗进入流程 配置auto sleep位为1,在第一次检测静止中断时停止读写ADXL345_REG_INT_SOURCE寄存器,在INT引脚接收到中断后读取寄存器恢复正常运行。意思是在休眠模式不要试图与其通讯。不这样做的后果会导致传感器退出休眠模式后无法再次读取中断标志位

AHT10
AHTxx是来自中国的一种温湿度传感器 aht10 20 21 有各种封装类型,aht10是初代版本,他价格在1——5rmb左右。这是一个ADXL345驱动的附带产物。
部分示例如下

  1. acc.set_ofs(0, 0, 0);
  2.     acc.set_activity_inactivity((uint8_t)75, (uint8_t)75, (uint8_t)5);
  3.     Power_InitTypeDef power_ctl;
  4.     power_ctl.Link = 1;
  5.     power_ctl.AUTO_SLEEP = 0;
  6.     power_ctl.Measure = 1;
  7.     power_ctl.Sleep=0;
  8.     power_ctl.Wakeup_speed = ADXL345_SLEEPDATARATE_1_HZ;
  9.     acc.set_power_mode(&power_ctl);
  10. delay(100);


  11.     TAP_InitTypeDef tap;
  12.     tap.Tap_axes_x = 0;
  13.     tap.Tap_axes_y = 0;
  14.     tap.Tap_axes_z = 1;
  15.     tap.Tap_Suppress = 0;

  16.     tap.Tap_Thresh=(uint8_t)50;       //界限
  17.     tap.Tap_Dur = (uint8_t)15;            //持续时间
  18.     tap.Double_Tap_Latent = (uint8_t)80;  //延迟
  19.     tap.Double_Tap_Window = (uint8_t)200; //窗口

  20.     acc.set_tap_mode(&tap);

  21.    
  22.     BW_RATE_InitTypeDef bw_rate;
  23.     bw_rate.low_power = 1;
  24.     bw_rate.speed = ADXL345_DATARATE_400_HZ;
  25.     acc.set_speed_mode(&bw_rate);
  26. delay(100);
  27.     Interrupt_InitTypeDef Interrput;
  28.     Interrput.ACT = ACT_AC;
  29.     Interrput.ACTX = ACT_AXES_ENABLE;
  30.     Interrput.ACTY = ACT_AXES_ENABLE;
  31.     Interrput.ACTZ = ACT_AXES_ENABLE;
  32.     Interrput.INACT = ACT_AC;
  33.     Interrput.INACT_X = ACT_AXES_ENABLE;
  34.     Interrput.INACT_Y = ACT_AXES_ENABLE;
  35.     Interrput.INACT_Z = ACT_AXES_ENABLE;

  36.     Interrput.data_ready = INT_DISENABLE;
  37.     Interrput.single_tap = INT_ENABLE;
  38.     Interrput.double_tap = INT_ENABLE;
  39.     Interrput.activity = INT_ENABLE;
  40.     Interrput.inactivity = INT_ENABLE;
  41.     Interrput.free_fall = INT_DISENABLE;
  42.     Interrput.watermark = INT_DISENABLE;
  43.     Interrput.overrun =   INT_DISENABLE;

  44.     Interrput.map_data_ready = INT_PIN1;
  45.     Interrput.map_single_tap = INT_PIN1;
  46.     Interrput.map_double_tap = INT_PIN1;
  47.     Interrput.map_activity = INT_PIN2;
  48.     Interrput.map_inactivity = INT_PIN1;
  49.     Interrput.map_free_fall = INT_PIN1;
  50.     Interrput.map_watermark = INT_PIN1;
  51.     Interrput.map_overrun = INT_PIN1;

  52.     acc.set_interrput(&Interrput);
  53.     delay(100);


  54.     Fifo_InitTypeDef fio;
  55.     fio.self_test = 0;                //自测
  56.     fio.spi = 0;                      //spi模式选择,1三线,0四线
  57.     fio.int_invert = INT_INVERT_HIGH; //中断高低电平
  58.     fio.full_res =1;                 //1全分辨率,0 10位分辨
  59.     fio.justify = 0;                  //对齐
  60.     fio.range = ADXL345_RANGE_16_G;   //量程

  61.     fio.fifo_mode =FIFO_BYPASS;  //旁路
  62.     fio.trigger = INT_PIN1;       //触发中断1
  63.     fio.samples =FIFO_SAMPLES_31; //8
  64.     acc.set_fifo_mode(&fio);
  65. delay(100);
复制代码

文件太大发不了,下载移步github
https://github.com/fBn0523/ADXL345_Library_for_arduino.git


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:295290 发表于 2022-1-15 09:39 | 只看该作者
你好  2021_2_10 PID temperature.zip 这个温控程序文件方便发大家一下吗?万分感谢!
回复

使用道具 举报

板凳
ID:276685 发表于 2022-1-16 10:15 | 只看该作者
wxhm2011 发表于 2022-1-15 09:39
你好  2021_2_10 PID temperature.zip 这个温控程序文件方便发大家一下吗?万分感谢!

链接:https://pan.baidu.com/s/1PDbUXHdDWFzx2aMMGbqX1g
提取码:0000
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表