内容介绍
内容介绍
使用设备
-
DM164137
-
NPA201
功能实现
-
串口功能通过MCC自带的代码生成功能生成。可以直接重定向
printf
至UART
-
与 NPA201 通讯采用 IIC 协议
发送指令 AC
即可获得返回温度和压力,通过公式换算海拔。
- UART 通过 CH340G + Python 接收。这段在视频中有,这里不再重复赘述。
代码片段
while (1) {
DELAY_microseconds(500);
sampleData();
printf("Temp:%d\n", sensor_data.temperature);
printf("Altitude:%d\n", sensor_data.altitude);
printf("Pressure:%d\n", sensor_data.pressure);
}
uint8_t sampleData(void) {
uint8_t data[5] = {};
uint8_t cmd = ALTITUDE4_SENS_DATA;
uint16_t temp_data;
float temp_holder;
float pressure;
float temp;
float altitude;
i2c_writeNBytes(ALTITUDE4_SLAVE_ADDRESS, &cmd, 1);
DELAY_milliseconds(100);
i2c_readNBytes(ALTITUDE4_SLAVE_ADDRESS, &data, sizeof (data));
// pressure
temp_data = data[ 1 ];
temp_data <<= 8;
temp_data |= data[ 2 ];
temp_holder = temp_data;
temp_holder /= 65535;
temp_holder *= 1000;
temp_holder += 260;
pressure = temp_holder;
// temp
temp_data = data[ 3 ];
temp_data <<= 8;
temp_data |= data[ 4 ];
temp_holder = temp_data;
temp_holder /= 65535;
temp_holder *= 125;
temp_holder -= 40;
temp = temp_holder;
// altitude
temp_holder = 1013.25f / pressure;
altitude = pow(temp_holder, 0.19022256);
altitude -= 1;
temp_holder = temp + 273.15f;
altitude *= temp_holder;
altitude /= 0.0065;
sensor_data.altitude = (int) altitude;
sensor_data.pressure = (int) pressure;
sensor_data.temperature = (int) temp;
return data[0];
}
对本活动的心得体会
-
产品比较新颖,如果没有这次活动,不一定会接触这个方面的东西。
-
MCC 总的来说还行,相比之下还是有些落后于时代。
-
这个传感器并没有适配这块板子,所以要自己去写通讯和转换。由于这个板子的 IIC 通讯比较特殊,所以也花了一定时间。
附件下载
altitude.X.zip
团队介绍
中国计量大学
团队成员
cjmf
评论
0 / 100
查看更多
猜你喜欢
Funpack第七期——基于DM164137的按键实验通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)。
星辰i
1061
Funpack 第七期 8位PIC®MCU开发板DM164137初玩任务:通过按键扩展功能,分为按键点击(快速点击),短按(大于1秒),长按(大于5秒)用来控制板上LED显示。同时外接串口模块打印信息(包括按键信息,电位计信息)。
都市木头
1172
Funpack第七期_DM164137_按键_电位器采样开发板设计了多种供电方式,可以通过电源插头或者直接引入电源供电,也可通过USB接口供电。核心芯片支持5V和3.3V供电。板上包括一组4个指示LED,mTouch触摸按钮、按键开关以及可变电位器。
胖头鱼
872