ADXL345_Library_for_arduino cn->一種簡單方便的驅(qū)動庫可以很好兼容arduino系列,更少的依賴方便移植到其他類型mcu,靈活配置寄存器 iicsensor ic傳感器,這里包括adx345驅(qū)動和一個aht10的驅(qū)動 意味著他不能以spi方式操作。以后會加以改進(jìn)。這個庫文件并不簡潔。但是可讀性非常高,主要彌補(bǔ)流行庫文件不能涵蓋的功能,例如低功耗,fifo。
低功耗進(jìn)入流程 配置auto sleep位為1,在第一次檢測靜止中斷時停止讀寫ADXL345_REG_INT_SOURCE寄存器,在INT引腳接收到中斷后讀取寄存器恢復(fù)正常運(yùn)行。意思是在休眠模式不要試圖與其通訊。不這樣做的后果會導(dǎo)致傳感器退出休眠模式后無法再次讀取中斷標(biāo)志位
AHT10AHTxx是來自中國的一種溫濕度傳感器 aht10 20 21 有各種封裝類型,aht10是初代版本,他價格在1——5rmb左右。這是一個ADXL345驅(qū)動的附帶產(chǎn)物。 部分示例如下
- 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; //持續(xù)時間
- 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; //觸發(fā)中斷1
- fio.samples =FIFO_SAMPLES_31; //8
- acc.set_fifo_mode(&fio);
- delay(100);
復(fù)制代碼
文件太大發(fā)不了,下載移步github
https://github.com/fBn0523/ADXL345_Library_for_arduino.git
|