資源簡介
STM32F03通過模擬IIC讀取LIS3DH 解析數據獲取加速度和角度。
串口1輸出電腦串口助手,直接用即可,代碼規范,好移植
STM32F03通過模擬IIC讀取LIS3DH 解析數據獲取加速度和角度。
串口1輸出電腦串口助手,直接用即可,代碼規范,好移植

代碼片段和文件信息
//測試加速度傳感器部分,實現數據的解析、透傳、配置
//qq?363530137
#include?“delay.h“
#include?“sys.h“
#include?“gps.h“
#include?“usart.h“
#include?“io.h“?
#include?“string.h“
#include?
#include?“speed.h“
#include?“iic.h“
#include?“li_exit.h“
#include?“math.h“
__align(4)?u8?dtbuf[50];??? //打印緩存器
u8?TEMP_BUF[1024];//暫存數組
AxesRaw_t?ddata;
void?lis3dhinit(void)
{
unsigned?char??response=0;
response?=?LIS3DH_SetODR(LIS3DH_ODR_100Hz);
sprintf((char?*)dtbuf“設置采樣率:100Hz%d\r\n“response); ?
USART1_Send_String(dtbuf);
response?=?LIS3DH_SetMode(LIS3DH_NORMAL);
sprintf((char?*)dtbuf“設置工作模式:NORMAL%d\r\n“response); ?
USART1_Send_String(dtbuf);
response?=?LIS3DH_SetFullScale(LIS3DH_FULLSCALE_2);
sprintf((char?*)dtbuf“設置量程:FULLSCALE_2%d\r\n“response); ?
USART1_Send_String(dtbuf);
response?=?LIS3DH_SetAxis(LIS3DH_X_ENABLE?|?LIS3DH_Y_ENABLE?|?LIS3DH_Z_ENABLE);
sprintf((char?*)dtbuf“使能XYZ軸:XYZ_ENABLE%d\r\n“response); ?
USART1_Send_String(dtbuf);
}
void?LIS3DH_get_angle(float?acc_x?float?acc_y?float?acc_z)
{
float?angle_xangle_yangle_z;
//換算為加速度
angle_x=acc_x*4/65536*1000;
angle_y=acc_y*4/65536*1000;
angle_z=acc_z*4/65536*1000;
sprintf((char?*)dtbuf“加速度:??[X]%dmg\r\n“(int)((float)angle_x));
USART1_Send_String(dtbuf);delay_ms(200);?
sprintf((char?*)dtbuf“加速度:??[Y]%dmg\r\n“(int)((float)angle_y));
USART1_Send_String(dtbuf);delay_ms(200);?
sprintf((char?*)dtbuf“加速度:??[Z]%dmg\r\n“(int)((float)angle_z));
USART1_Send_String(dtbuf);delay_ms(200);
//換算角度
angle_x?=?(atan(angle_x?/?sqrt(angle_y*angle_y?+?angle_z*angle_z)))*180/3.14;
angle_y?=?(atan(angle_y?/?sqrt(angle_x*angle_x?+?angle_z*angle_z)))*180/3.14;
angle_z?=?(atan(angle_z?/?sqrt(angle_x*angle_x?+?angle_y*angle_y)))*180/3.14;
sprintf((char?*)dtbuf“角度:??[X]%d°\r\n“(int)((float)angle_x));
USART1_Send_String(dtbuf);delay_ms(200);?
sprintf((char?*)dtbuf“角度:??[Y]%d°\r\n“(int)((float)angle_y));
USART1_Send_String(dtbuf);delay_ms(200);?
sprintf((char?*)dtbuf“角度:??[Z]%d°\r\n“(int)((float)angle_z));
USART1_Send_String(dtbuf);delay_ms(200);
}
int?main(void)
{
int?lisid=0;
unsigned?char?lisidtemp=0;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);?//中斷分組配置
USART1_Configuration(115200);
IO_init();
IIC_Init();
delay_ms(10);?
lis3dhinit();
delay_ms(10);?
LIS3DH_GetWHO_AM_I(&lisidtemp);??//?讀取傳感器內部ID
lisid=(int)lisidtemp;
sprintf((char?*)dtbuf“LIS3DH?ID:0x%X\r\n“lisid); ?
USART1_Send_String(dtbuf);
delay_ms(50);?
while(1)
{
??LIS3DH_GetAccAxesRaw(&ddata);???//?讀取加速度初始值
??delay_ms(10);?
sprintf((char?*)dtbuf“傳感器原始值:??x=%d???y=%d???z=%d\r\n“ddata.AXIS_Xddata.AXIS_Yddata.AXIS_Z); ?
USART1_Send_String(dtbuf);
????delay_ms(200);?
LIS3DH_get_angle(ddata.AXIS_X?ddata.AXIS_Y?ddata.AXIS_Z);//解析
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5846??2019-04-11?11:02??IIC\iic.c
?????文件????????863??2019-04-11?11:02??IIC\iic.h
?????目錄??????????0??2019-04-11?11:02??IIC
?????文件??????51187??2019-04-11?11:02??SPEED\speed.c
?????文件??????21292??2019-04-10?14:38??SPEED\speed.h
?????目錄??????????0??2019-04-11?11:02??SPEED
?????文件???????2964??2019-04-11?14:35??main.c
-----------?---------??----------?-----??----
????????????????82152????????????????????7
- 上一篇:基于STM32的智能小型機械臂設計
- 下一篇:合格證打印
評論
共有 條評論