- 【新提醒】N32WB03x系列蓝牙芯片 产品简介
- 【新提醒】N32WB031 API函数使用说明
- 【新提醒】【国民技术N32WB031_STB开发板评测】资源的下载
- 【国民技术N32WB031_STB开发板评测】创建MDK模版
- 【国民技术N32WB031_STB开发板评测】GPIO之按键与LED灯
- 【新提醒】【国民技术N32WB031_STB开发板评测】串口+LOG分级打印
- 【国民技术N32WB031_STB开发板评测】OLED驱动
- 【国民技术N32WB031_STB开发板评测】驱动HS3003
- 【国民技术N32WB031_STB开发板评测】SPI驱动墨水屏
- 【国民技术N32WB031_STB开发板评测】点用 PA4后下载不程序
- 【国民技术N32WB031_STB开发板评测】解决SWDCLK、SWDIO配置为普通IO后不能下载固件
解决了下载固件的问题后,昨晚把温湿度计hs3003与墨水屏结合在一起,温湿度计就做好了。
采集程序修改如下:
void Humiture_HS3003_ReadData_Raw(float *humi_f, float *temp_f)
{
uint8_t rx_buf[4] = {0};
uint16_t humi, temp;
float tmp_f = 0.0;
SI2C_MasterWrite(&SI2C_handle,I2C_SLAVE_ADDR, NULL, 0);
//8bit->1.2ms
//10bit->2.72ms
//12bit->9.10ms
//14bit->33.90ms
Delay_ms(40);
__retry:
SI2C_MasterRead(&SI2C_handle, I2C_SLAVE_ADDR, rx_buf, 4);
// log_info("%x,%x,%x,%x\n", rx_buf[0], rx_buf[1], rx_buf[2], rx_buf[3]);
// log_info("state:%x\n", rx_buf[0] & RM_HS300X_MASK_STATUS_0XC0);
if ((rx_buf[0] & RM_HS300X_MASK_STATUS_0XC0) != RM_HS300X_DATA_STATUS_VALID)
{
Delay_ms(100);
goto __retry;
}
humi = (rx_buf[0] & RM_HS300X_MASK_HUMIDITY_UPPER_0X3F) << 8 | rx_buf[1];
temp = (rx_buf[2] << 8 | (rx_buf[3] & RM_HS300X_MASK_TEMPERATURE_LOWER_0XFC)) >> 2;
tmp_f = (float )humi;
*humi_f = (tmp_f * RM_HS300X_CALC_HUMD_VALUE_100) / RM_HS300X_CALC_STATIC_VALUE;
tmp_f = (float)temp;
*temp_f = ((tmp_f * RM_HS300X_CALC_TEMP_C_VALUE_165) / RM_HS300X_CALC_STATIC_VALUE) - RM_HS300X_CALC_TEMP_C_VALUE_40;
// log_info("Temp:%d.%d ",(int)temp_f,(int)(temp_f*100)%100);
// log_info("HUMI:%d.%d\r\n",(int)humi_f,(int)(humi_f*100)%100);
// return 1;
}
main.c修改如下:
while (1)
{
LedBlink(LED1_PORT, LED1_PIN);
Humiture_HS3003_init();
Humiture_HS3003_ReadData_Raw(&humi,&temp);
EPD_HW_Init_GUI(); //EPD init GUI
Paint_Clear(WHITE);
sprintf(show_str,"温度%02d.%02d℃",(int)temp, (int)(temp*100)%100);
Paint_DrawString_CN(40,10,show_str, &Font24CN, WHITE, BLACK);
sprintf(show_str,"湿度%02d.%02d%%",(int)humi, (int)(humi*100)%100);
Paint_DrawString_CN(40,60,show_str, &Font24CN, WHITE, BLACK);
EPD_Display(BlackImage); //display image
EPD_DeepSleep();//EPD_DeepSleep,Sleep instruction is necessary, please do not delete!!!
Delay_ms(10000);
}
这样温湿度计做好了,效果见视频,下一步将实现RTC日历功能。
墨水屏温湿计