当前位置: 首页 > news >正文

国外网站做家具哪个好沈阳网站建设设计报价

国外网站做家具哪个好,沈阳网站建设设计报价,深圳微商城网站设计电话,最有效的网站推广费用概述 HS3003是一种数字式温湿度传感器#xff0c;可以测量环境中的温度和湿度。读取HS3003的数据需要连接传感器到一个数据采集系统#xff0c;一般是微处理器或者单片机。以下是一个简单的读取HS3003数据的概述#xff1a; 连接电路#xff1a;将HS3003传感器连接到微处…概述 HS3003是一种数字式温湿度传感器可以测量环境中的温度和湿度。读取HS3003的数据需要连接传感器到一个数据采集系统一般是微处理器或者单片机。以下是一个简单的读取HS3003数据的概述 连接电路将HS3003传感器连接到微处理器或单片机的GPIO引脚。需要注意HS3003的电气特性比如供电电压和信号电平等。发送命令发送读取温湿度数据的命令到HS3003传感器。具体的命令格式和通信协议需要参考HS3003的数据手册。接收数据等待HS3003传感器回应并接收传感器发送的数据。HS3003传感器的数据一般是经过数字转换后的二进制数据需要解析成温湿度值。解析数据将接收到的二进制数据解析成温湿度值。具体的解析算法需要参考HS3003的数据手册一般涉及到位移、位运算、符号扩展等操作。处理数据对得到的温湿度值进行处理比如校准、滤波、显示等。循环读取根据需要循环执行步骤2到5以实现连续读取HS3003传感器的温湿度数据。 需要注意的是HS3003传感器的使用和读取数据需要按照数据手册的规范和建议操作否则可能会导致数据精度降低、传感器损坏等问题。 硬件准备 首先需要准备一个开发板这里我准备的是芯片型号R7FAM2AD3CFP的开发板 样品申请 https://www.wjx.top/vm/wBbmSFp.aspx# IIC配置 配置RA4M2的I2C接口使其作为I2C master进行通信。 对于OLED的IIC配置可以查看往期的博客。 查看HS3003说明书最小电路图如下所示。 由于需要读取HS3003数据需要使用IIC接口这里使用PMOD2上的接口(P410和P411)。 点击Stacks-New Stack-Connectivity - I2C Master(r_sci_i2c)。 查看说明书可以得知ISL29035的地址为0x44(1000100)。 设置IIC的配置。 R_SCI_I2C_Open()函数原型 R_SCI_I2C_Open()函数为执行IIC初始化开启配置如下所示。 /* Initialize the I2C module */err R_SCI_I2C_Open(g_i2c0_ctrl, g_i2c0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS err);R_SCI_I2C_Write()函数原型 R_SCI_I2C_Write()函数是向IIC设备中写入数据写入格式如下所示。 err R_SCI_I2C_Write(g_i2c0_ctrl, g_i2c_tx_buffer[0], I2C_BUFFER_SIZE_BYTES, false);assert(FSP_SUCCESS err);R_SCI_I2C_Read()函数原型 R_SCI_I2C_Read()函数是向IIC设备中读取数据读取格式如下所示。 err R_SCI_I2C_Write(g_i2c0_ctrl, g_i2c_tx_buffer[0], I2C_BUFFER_SIZE_BYTES, false);assert(FSP_SUCCESS err);sci_i2c_master_callback()回调函数 对于数据是否发送完毕可以查看是否获取到I2C_MASTER_EVENT_TX_COMPLETE字段。 /* Callback function */ i2c_master_event_t i2c_event1 I2C_MASTER_EVENT_ABORTED; void sci_i2c_master_callback0(i2c_master_callback_args_t *p_args) {/* TODO: add your own code here */i2c_event1 I2C_MASTER_EVENT_ABORTED;if (NULL ! p_args){/* capture callback event for validating the i2c transfer event*/i2c_event1 p_args-event;} }HS3003写数据 对于HS3003写数据手册上的操作方式如下所示。 设备地址操作地址数据 初始化程序如下所示。 void Humiture_HS3003_writeRegister( uint8_t reg_address, uint8_t *buffer, uint8_t len) {err R_SCI_I2C_Write(g_i2c0_ctrl, buffer, len, false);assert(FSP_SUCCESS err);/* Since there is nothing else to do, block until Callback triggers*///while ((I2C_MASTER_EVENT_TX_COMPLETE ! i2c_event) timeout_ms)while ((I2C_MASTER_EVENT_TX_COMPLETE ! i2c_event1) timeout_ms10){R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MICROSECONDS);timeout_ms1--;}if (I2C_MASTER_EVENT_ABORTED i2c_event1){__BKPT(0);}/* Read data back from the I2C slave */i2c_event1 I2C_MASTER_EVENT_ABORTED;timeout_ms1 100000;}HS3003读数据 对于读取数据可以直接在发送地址后进行读取当时需要注意再发送完地址后要有等待时间。 读取操作函数如下所示先发送操作地址在进行读取这里是一次读取32位。 uint32_t Humiture_HS3003_readRegister32(uint8_t reg_address) {uint32_t value;uint8_t data[4];timeout_ms1 100000;/* Read data from I2C slave */err R_SCI_I2C_Read(g_i2c0_ctrl, data, 0x04, false);assert(FSP_SUCCESS err);while ((I2C_MASTER_EVENT_RX_COMPLETE ! i2c_event1) timeout_ms1){R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);timeout_ms1--;}if (I2C_MASTER_EVENT_ABORTED i2c_event1){__BKPT(0);}i2c_event1 I2C_MASTER_EVENT_ABORTED;timeout_ms1 100000;valuedata[0];value8;value|data[1];value8;value|data[2];value8;value|data[3];return value; }HS3003初始化 首先需要将HS3003进行唤醒默认情况下是睡眠模式。 唤醒需要对Measurement Requests (MR)进行操作MR命令用于将HS300x从休眠模式唤醒。通过发送7位从地址和第8位0 (WRITE)来发起测量请求。 对于不同精度的数据读取等待时间是不同的。 对于等待的时间可以参考下图红框的数据。 HS3003读取温湿度 对于读取数据可以直接在发送地址后进行读取当时需要注意再发送完地址后要有等待时间。 读取操作函数如下所示先发送操作地址在进行读取。 void Humiture_HS3003_init(void) {Humiture_HS3003_writeRegister(HS300X_ADR,NULL,0);} //读取原始的数据 uint32_t Humiture_HS3003_ReadData_Raw(uint8_t resolution ) {uint8_t rx_buf[ 4 ];uint32_t data0;Humiture_HS3003_init();//唤醒//8bit-1.2ms//10bit-2.72ms//12bit-9.10ms//14bit-33.90msif(resolution8)R_BSP_SoftwareDelay(1200U, BSP_DELAY_UNITS_MICROSECONDS);else if(resolution10)R_BSP_SoftwareDelay(2720U, BSP_DELAY_UNITS_MICROSECONDS);else if(resolution12)R_BSP_SoftwareDelay(9100U, BSP_DELAY_UNITS_MICROSECONDS);elseR_BSP_SoftwareDelay(34U, BSP_DELAY_UNITS_MILLISECONDS);dataHumiture_HS3003_readRegister32(HS300X_ADR);return data; }对于读取的数据需要进行处理。 湿度在后两个字节的15-2位温度在前2个字节的13-0位。 对于原始的数据要对他进行处理。 DataHumiture_HS3003_ReadData_Raw(14);Temp (float)( (Data 0xFFFF) 2);//只要低十六位Temp Temp*HS300X_TEMP_MULTY*165-40;//HS300X_TEMP_MULTY-0.00006163516(1/(2^14-1) )Humidity (float)( (Data 16) 0x3FFF );//只要高十六位且最高2位不要Humidity Humidity*HS300X_HUMD_MULTY*100;//HS300X_HUMD_MULTY-0.00006163516(1/(2^14-1) )实现效果 正常显示数据。 同时串口也可以打印数据。 主程序 #include hal_data.h #include stdio.h #include Humiture_HS3003.h #include oled.h #include bmp.h FSP_CPP_HEADER void R_BSP_WarmStart(bsp_warm_start_event_t event); FSP_CPP_FOOTERfsp_err_t err FSP_SUCCESS; volatile bool uart_send_complete_flag false; /* Callback function */ void user_uart_callback(uart_callback_args_t *p_args) {/* TODO: add your own code here */if(p_args-event UART_EVENT_TX_COMPLETE){uart_send_complete_flag true;} }#ifdef __GNUC__ //串口重定向#define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE {err R_SCI_UART_Write(g_uart9_ctrl, (uint8_t *)ch, 1);if(FSP_SUCCESS ! err) __BKPT();while(uart_send_complete_flag false){}uart_send_complete_flag false;return ch; } int _write(int fd,char *pBuffer,int size) {for(int i0;isize;i){__io_putchar(*pBuffer);}return size; }/* Callback function */ i2c_master_event_t i2c_event1 I2C_MASTER_EVENT_ABORTED; void sci_i2c_master_callback0(i2c_master_callback_args_t *p_args) {/* TODO: add your own code here */i2c_event1 I2C_MASTER_EVENT_ABORTED;if (NULL ! p_args){/* capture callback event for validating the i2c transfer event*/i2c_event1 p_args-event;} }/* Callback function */ i2c_master_event_t i2c_event I2C_MASTER_EVENT_ABORTED; void sci_i2c_master_callback(i2c_master_callback_args_t *p_args) {i2c_event I2C_MASTER_EVENT_ABORTED;if (NULL ! p_args){/* capture callback event for validating the i2c transfer event*/i2c_event p_args-event;} }uint32_t timeout_ms1 100000; uint32_t timeout_ms 100000; float Temp0.0f; float Humidity0.0f; uint32_t Data0;//温湿度原始数据 /*******************************************************************************************************************//*** main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used. This function* is called by main() when no RTOS is used.**********************************************************************************************************************/ void hal_entry(void) {/* TODO: add your own code here *//* Initialize the I2C module */err R_SCI_I2C_Open(g_i2c3_ctrl, g_i2c3_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS err);OLED_Init(); //初始化OLEDOLED_Clear() ;OLED_ShowCHinese(0,0,0);//记OLED_ShowCHinese(16,0,1);//帖OLED_ShowString(0,2,Temp:,16);OLED_ShowString(0,4,Humidity:,16);/* Initialize the I2C module */err R_SCI_I2C_Open(g_i2c0_ctrl, g_i2c0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS err);Humiture_HS3003_init();/* Open the transfer instance with initial configuration. */fsp_err_t err R_SCI_UART_Open(g_uart9_ctrl, g_uart9_cfg);assert(FSP_SUCCESS err);printf(hello world!\n);while(1) {DataHumiture_HS3003_ReadData_Raw(14);Temp (float)( (Data 0xFFFF) 2);//只要低十六位Temp Temp*HS300X_TEMP_MULTY*165-40;//HS300X_TEMP_MULTY-0.00006163516(1/(2^14-1) )Humidity (float)( (Data 16) 0x3FFF );//只要高十六位且最高2位不要Humidity Humidity*HS300X_HUMD_MULTY*100;//HS300X_HUMD_MULTY-0.00006163516(1/(2^14-1) )OLED_Clear() ;OLED_ShowCHinese(0,0,0);//记OLED_ShowCHinese(16,0,1);//帖OLED_ShowString(0,2,Temp:,16);OLED_ShowString(0,4,Humidity:,16);if(Temp10 Temp0)//0Temp10{OLED_ShowNum(48,2,(int)(Temp),1,16);//显示Temp整数OLED_ShowString(56,2,.,16);OLED_ShowNum(64,2,(int)(Temp*100) - ( ((int)Temp) *100),1,16);//显示Temp小数if(( (int)(Temp*100) - ( ((int)Temp) *100) ) 10 )OLED_ShowString(64,2,0,16);}else if (Temp10 Temp100)//10Temp100{OLED_ShowNum(48,2,(int)(Temp),2,16);//显示Temp整数OLED_ShowString(64,2,.,16);OLED_ShowNum(72,2,(int)(Temp*100) - ( ((int)Temp) *100),2,16);//显示Temp小数if(( (int)(Temp*100) - ( ((int)Temp) *100) ) 10 )OLED_ShowString(72,2,0,16);}else if (Temp100 Temp1000)//100Temp1000{OLED_ShowNum(48,2,(int)(Temp),3,16);//显示Temp整数OLED_ShowString(72,2,.,16);OLED_ShowNum(80,2,(int)(Temp*100) - ( ((int)Temp) *100),2,16);//显示Temp小数if(( (int)(Temp*100) - ( ((int)Temp) *100) ) 10 )OLED_ShowString(80,2,0,16);}if(Humidity10)//0Humidity10{OLED_ShowNum(72,4,(int)(Humidity),1,16);//显示Humidity整数OLED_ShowString(80,4,.,16);OLED_ShowNum(88,4,(int)(Humidity*100) - ( ((int)Humidity) *100),2,16);//显示Temp小数if(( (int)(Humidity*100) - ( ((int)Humidity) *100) ) 10 )OLED_ShowString(88,4,0,16);}else if(Humidity10 Humidity100){OLED_ShowNum(72,4,(int)(Humidity),2,16);//显示Humidity整数OLED_ShowString(88,4,.,16);OLED_ShowNum(96,4,(int)(Humidity*100) - ( ((int)Humidity) *100),2,16);//显示Temp小数if(( (int)(Humidity*100) - ( ((int)Humidity) *100) ) 10 )OLED_ShowString(96,4,0,16);}printf(Temp%.2f,Humidity%.2f\n,Temp,Humidity);R_BSP_SoftwareDelay(1000U, BSP_DELAY_UNITS_MILLISECONDS); }#if BSP_TZ_SECURE_BUILD/* Enter non-secure code */R_BSP_NonSecureEnter(); #endif }Humiture_HS3003.c /** Humiture_HS3003.c** Created on: 2023年2月19日* Author: a8456* 交流群615061293*/ #include hal_data.h #include Humiture_HS3003.h extern fsp_err_t err; extern int timeout_ms1; extern i2c_master_event_t i2c_event1 ;uint32_t Humiture_HS3003_readRegister32(uint8_t reg_address) {uint32_t value;uint8_t data[4];timeout_ms1 100000;/* Read data from I2C slave */err R_SCI_I2C_Read(g_i2c0_ctrl, data, 0x04, false);assert(FSP_SUCCESS err);while ((I2C_MASTER_EVENT_RX_COMPLETE ! i2c_event1) timeout_ms1){R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);timeout_ms1--;}if (I2C_MASTER_EVENT_ABORTED i2c_event1){__BKPT(0);}i2c_event1 I2C_MASTER_EVENT_ABORTED;timeout_ms1 100000;valuedata[0];value8;value|data[1];value8;value|data[2];value8;value|data[3];return value; }void Humiture_HS3003_writeRegister( uint8_t reg_address, uint8_t *buffer, uint8_t len) {err R_SCI_I2C_Write(g_i2c0_ctrl, buffer, len, false);assert(FSP_SUCCESS err);/* Since there is nothing else to do, block until Callback triggers*///while ((I2C_MASTER_EVENT_TX_COMPLETE ! i2c_event) timeout_ms)while ((I2C_MASTER_EVENT_TX_COMPLETE ! i2c_event1) timeout_ms10){R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MICROSECONDS);timeout_ms1--;}if (I2C_MASTER_EVENT_ABORTED i2c_event1){__BKPT(0);}/* Read data back from the I2C slave */i2c_event1 I2C_MASTER_EVENT_ABORTED;timeout_ms1 100000;}void Humiture_HS3003_init(void) {Humiture_HS3003_writeRegister(HS300X_ADR,NULL,0);}//读取原始的数据 uint32_t Humiture_HS3003_ReadData_Raw(uint8_t resolution ) {uint8_t rx_buf[ 4 ];uint32_t data0;Humiture_HS3003_init();//唤醒//8bit-1.2ms//10bit-2.72ms//12bit-9.10ms//14bit-33.90msif(resolution8)R_BSP_SoftwareDelay(1200U, BSP_DELAY_UNITS_MICROSECONDS);else if(resolution10)R_BSP_SoftwareDelay(2720U, BSP_DELAY_UNITS_MICROSECONDS);else if(resolution12)R_BSP_SoftwareDelay(9100U, BSP_DELAY_UNITS_MICROSECONDS);elseR_BSP_SoftwareDelay(34U, BSP_DELAY_UNITS_MILLISECONDS);dataHumiture_HS3003_readRegister32(HS300X_ADR);return data; }Humiture_HS3003.h /** Humiture_HS3003.h** Created on: 2023年2月19日* Author: a8456* 交流群615061293*/#ifndef HUMITURE_HS3003_H_ #define HUMITURE_HS3003_H_#define HS300X_ADR 0x44 #define HS300X_HUMD_MULTY 0.00006163516 #define HS300X_TEMP_MULTY 0.00006163516//uint8_t HuMIture_HS3003_readRegister8(uint8_t reg_address); uint32_t Humiture_HS3003_readRegister32(uint8_t reg_address); void Humiture_HS3003_writeRegister( uint8_t reg_address, uint8_t *buffer, uint8_t len);void Humiture_HS3003_init(void); uint32_t Humiture_HS3003_ReadData_Raw(uint8_t resolution);#endif /* HUMITURE_HS3003_H_ */
http://www.w-s-a.com/news/231200/

相关文章:

  • 中卫网站设计做自己的卡盟网站
  • 广州网站推广自助做网站人家直接百度能搜到的
  • 电子商务网站建设目标及利益分析安徽建设厅网站施
  • 制作网站策划书网站建设公司的性质
  • 哪个网站可以做免费宣传简单的网页设计网站
  • 福州专业网站制作公司金湖建设局网站
  • 好的移动端网站模板下载兰州线上广告推广
  • 宁波高端建站深圳品牌营销策划机构
  • 权威网站优化价格建设厅科技中心网站首页
  • 保定模板建站软件腾讯云做淘客网站
  • 单位建设一个网站的费用正规刷手机单做任务网站
  • 北京定制网站价格开网店怎么卖到外国
  • 做网站 后端是谁来做的工程建设指挥部网站
  • wordpress建站 云打印昆明 网站设计
  • 太原网站建设设计网站建设策划书(建设前的市场分析)
  • 哪里有制作网站电商新手入门知识
  • 制作网站的后台文昌网站建设 myvodo
  • 网站 购买移动网站制作
  • 南京网站网站建设学校英山做网站多少钱
  • 珠海网站建设网如何注册公司公众号
  • 手机网站页面制作网站怎么做快照
  • asp网站怎么仿站推广软件下载平台
  • 电子商务网站建设期末试题08答案互联网怎么做
  • 规范门户网站的建设和管理办法微信网站开发公司电话
  • 免费行情网站凡客的官网
  • 做网站运营的女生多吗海淀企业网站建设
  • 网站运行环境配置网站建设个一般需要花费多少钱
  • 广西平台网站建设报价wordpress 免费 企业 主题
  • 四川省建设厅职称查询网站辽宁省住房和城乡建设部网站
  • 公司网站后台登陆网站放到云服务器上怎么做