-
Notifications
You must be signed in to change notification settings - Fork 25
/
adxl345_i2c.c
68 lines (54 loc) · 1.81 KB
/
adxl345_i2c.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/**
* Copyright (c) 2023 Milk-V
*
* SPDX-License-Identifier: BSD-3-Clause
**/
#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
#include "adxl345.h"
#include "driver_adxl345.h"
/* ADXL345 模块(三轴加速度传感器)的示例代码。
Sample code for ADXL345 module (three-axis acceleration sensor).
注意:确保设备在3.3伏而不是5伏的电压下使用。Duo GPIO(以及I2C)不能在5伏电平下使用。
NOTE: Ensure the device is capable of being driven at 3.3v NOT 5v. The Duo
GPIO (and therefore I2C) cannot be used at 5v.
如果你想在5伏的电压下使用该模块,需要额外加装电平转换器转换I2C电平。
You will need to use a level shifter on the I2C lines if you want to run the
board at 5v.
请按下面的注释接线,运行程序前请确保引脚复用在正确的功能上。
Please wire according to the notes below and make sure
the pins are set for the correct function before running the program.
I2C1_SDA -> SDA on ADXL345 Moudle
I2C1_SCL -> SCL on ADXL345 Moudle
3.3v -> VCC on ADXL345 Moudle
GND -> GND on ADXL345 Moudle
*/
adxl345_info_t adxl345_info_handle;
int main()
{
float acc[3] = {0};
if(adxl345_basic_init(ADXL345_INTERFACE_IIC, ADXL345_ADDR))
{
printf("adxl345 init failed!");
return -1;
}
if(adxl345_info(&adxl345_info_handle))
{
printf("failed in get adxl345 info.\n");
return -1;
}
printf("chip name: %s\n",adxl345_info_handle.chip_name);
while(1)
{
adxl345_basic_read(acc);
printf("get acceleration information-x:%.2f y:%.2f z:%.2f\n",acc[0],acc[1],acc[2]);
sleep(1);
}
if(adxl345_basic_deinit())
{
printf("adxl345 deinit failed!\n");
return -1;
}
return 0;
}