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

做网站要求最专业的网站建设哪家好

做网站要求,最专业的网站建设哪家好,把域名解析到WordPress,网站推广朋友圈文案文章目录 一、HC-SR04HC-SR04是什么#xff1f;HC-SR04测距的原理 二、使用步骤1.硬件最远探测距离调节硬件连接 2.软件1.初始化配置代码如下#xff08;示例#xff09;#xff1a;引脚初始化定时器初始化 2.引脚输入输出配置代码如下#xff08;示例#xff09;#x… 文章目录 一、HC-SR04HC-SR04是什么HC-SR04测距的原理 二、使用步骤1.硬件最远探测距离调节硬件连接 2.软件1.初始化配置代码如下示例引脚初始化定时器初始化 2.引脚输入输出配置代码如下示例3.定时器中断处理代码如下示例4.HCSR04测距函数代码如下示例5.显示函数代码如下示例6.变量定义如下示例7.显示结果如下示例图片串口打印 三、总结 一、HC-SR04 HC-SR04是什么 HC-SR04是一种常见的超声波测距模块它可以用于测量物体与传感器之间的距离在机器人导航、智能家居和安防系统等领域得到了广泛的应用。 HC-SR04超声波测距模块包含一个发射器和一个接收器它们通过超声波信号实现测距。当发射器发出超声波信号后它会被目标物体反射回来并被接收器接收。根据超声波从发射到接收的时间差就可以计算出物体与传感器之间的距离。 正面 背面 HC-SR04测距的原理 工作原理 HC-SR04超声波测距模块由发射器和接收器组成。它通过发射超声波信号并接收反射回来的信号利用信号的往返时间差来计算距离。 (1)采用 IO 触发测距给至少 10us 的高电平信号; (2)模块自动发送 8 个 40khz 的方波自动检测是否有信号返回 (3)有信号返回通过 IO 输出一高电平高电平持续的时间就是超声波从发射到返回的时间测试距离(高电平时间*声速(340M/S))/2; 模块使用注意事项 1此模块不宜带电连接如果要带电连接则先让模块的 Gnd 端先连接。否则会影响 模块工作。 2测距时被测物体的面积不少于 0.5 平方米且要尽量平整。否则会影响测试结果。 二、使用步骤 1.硬件 最远探测距离调节 上图标志电阻即 R3,可以调节最大探测距离。R3 电阻为 392探测距离最大 4.5M 左右探测角度小于 15 度R3 电阻为 472探测距离最大 7M 左右探测角度小于 30 度出厂默认 392即最大探测距离 4.5M 左右。R3 电阻大接收部分增益高检测距离大但检测角度会相应变大容易检测到前方旁边的物体。当然,在不要求很高的测试距离的条件下, 可以改小 R3 来减小探测角度这时最大测距会减小。 硬件连接 VCC电源5V接5VTrig控制端接PB12Echo接收端接PB13GND电源地接GND /* Defines ------------------------------------------------------------------*/ #define HCSR04_GPIO_RCC RCC_APB2Periph_GPIOB #define HCSR04_GPIO_Port GPIOB #define Trig_Pin GPIO_Pin_12 #define Echo_Pin GPIO_Pin_13//根据实际的引脚修改2.软件 1.初始化配置代码如下示例 /******************************************************************************** 函数名User_HCSR04_Init* 描述 HCSR04初始化* 输入 void* 输出 void* 调用 初始化* 备注 *******************************************************************************/ void User_HCSR04_Init(void) {User_TIM1_Init();HCSR04_GPIO_Init(); }引脚初始化 /******************************************************************************** 函数名HCSR04_GPIO_Init* 描述 HCSR04引脚初始化* 输入 void* 输出 void* 调用 初始化* 备注 *******************************************************************************/ void HCSR04_GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin Trig_Pin;//控制脚 Trig GPIO_Init(HCSR04_GPIO_Port, GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPD;//下拉输入 GPIO_InitStructure.GPIO_Pin Echo_Pin;//接收脚 Echo GPIO_Init(HCSR04_GPIO_Port, GPIO_InitStructure); }定时器初始化 /******************************************************************************** 函数名User_TIM1_Init* 描述 定时器1初始化* 输入 void* 输出 void* 调用 初始化* 备注 *******************************************************************************/ void User_TIM1_Init(void) {RCC_APB2PeriphClockCmd(HCSR04_TIM_CLK_ENABLE, ENABLE); // 启用TIM1时钟TIM_InternalClockConfig(HCSR04_TIM);// 设置TIM1使用内部时钟TIM_TimeBaseInitTypeDef TIM1_TimeBaseInitStructure;// 定义结构体配置定时器TIM1_TimeBaseInitStructure.TIM_ClockDivision TIM_CKD_DIV1; // 设置1分频不分频TIM1_TimeBaseInitStructure.TIM_CounterMode TIM_CounterMode_Up;// 设置计数模式为向上计数TIM1_TimeBaseInitStructure.TIM_Period PERIOD_COUNT - 1; // 设置最大计数值达到最大值触发更新事件TIM1_TimeBaseInitStructure.TIM_Prescaler PRESCALER_COUNT - 1; // 设置时钟预分频TIM1_TimeBaseInitStructure.TIM_RepetitionCounter 0; // 重复计数器TIM_TimeBaseInit(HCSR04_TIM, TIM1_TimeBaseInitStructure); // 初始化TIM1定时器TIM_ClearFlag(HCSR04_TIM, TIM_FLAG_Update); // 清除更新中断标志位TIM_ITConfig(HCSR04_TIM, TIM_IT_Update, ENABLE); // 开启更新中断TIM1_NVIC_Init();TIM_Cmd(HCSR04_TIM, ENABLE); // 开启定时器 }/******************************************************************************** 函数名TIM1_NVIC_Init* 描述 定时器1中断配置初始化* 输入 void* 输出 void* 调用 初始化* 备注 *******************************************************************************/ void TIM1_NVIC_Init(void) {NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组NVIC_InitTypeDef NVIC_InitStructure; // 定义结构体配置中断优先级NVIC_InitStructure.NVIC_IRQChannel HCSR04_TIM_IRQn; // 指定中断通道NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; // 中断使能NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 0; // 设置抢占优先级为最高NVIC_InitStructure.NVIC_IRQChannelSubPriority 0; // 设置响应优先级为最高NVIC_Init(NVIC_InitStructure); } 2.引脚输入输出配置代码如下示例 /******************************************************************************** 函数名Trig_out_High* 描述 Trig输出高电平* 输入 void* 输出 void* 调用 内部调用* 备注 *******************************************************************************/ void Trig_Out_High(void) {GPIO_SetBits(HCSR04_GPIO_Port,Trig_Pin);//Trig 1 }/******************************************************************************** 函数名Trig_Out_Low* 描述 Trig输出低电平* 输入 void* 输出 void* 调用 内部调用* 备注 *******************************************************************************/ void Trig_Out_Low(void) {GPIO_ResetBits(HCSR04_GPIO_Port,Trig_Pin);//Trig 0 }/******************************************************************************** 函数名Read_Echo_Level* 描述 读取Echo引脚电平* 输入 void* 输出 void* 调用 内部调用* 备注 *******************************************************************************/ uint8_t Read_Echo_Level(void) {return GPIO_ReadInputDataBit(HCSR04_GPIO_Port,Echo_Pin); }3.定时器中断处理代码如下示例 /******************************************************************************** 函数名HCSR04_TIM_IRQHandler* 描述 定时器1中断服务程序* 输入 void* 输出 void* 调用 初始化* 备注 *******************************************************************************/ void HCSR04_TIM_IRQHandler(void) {if(TIM_GetITStatus(HCSR04_TIM, TIM_IT_Update) ! RESET){if(ditance_flag){ditance_count;}TIM_ClearITPendingBit(HCSR04_TIM, TIM_IT_Update); //清除中断挂起位} }4.HCSR04测距函数代码如下示例 /******************************************************************************** 函数名Measurement_function* 描述 HCSR04测距函数* 输入 void* 输出 void* 调用 内部调用* 备注 *******************************************************************************/ void Measurement_function(void) {Trig_Out_High();Delay_20us();Trig_Out_Low(); while(Read_Echo_Level()0);//等待低电平结束ditance_count 0; while(Read_Echo_Level()1);//等待高电平结束 ditance_flag 1; if(ditance_count Overtime)//小于超时时间 38ms{MM_ditance ((ditance_count * 340)/2)/100;//单位毫米MM} } 5.显示函数代码如下示例 对OLED有疑问的可以参考我的另外一篇博客0.96寸OLEDIIC接口显示屏的图像显示应用 /******************************************************************************** 函数名OLED_Rfresh* 描述 OLED实时显示数据刷新* 输入 void* 输出 void* 调用 1s* 备注 *******************************************************************************/ void OLED_Rfresh(void) {OLED_ShowString(1, 1, Distance:); //1行1列显示字符串Distance:OLED_Part_Clear(2,1,16);if(MM_ditance 10){OLED_ShowNum(2,10,MM_ditance,1); OLED_ShowString(2, 12, MM); //2行12列显示单位MM}else if(MM_ditance 100){OLED_ShowNum(2,10,MM_ditance,2); OLED_ShowString(2, 13, MM); //2行13列显示单位MM }else if(MM_ditance 1000){OLED_ShowNum(2,10,MM_ditance,3); OLED_ShowString(2, 14, MM); //2行14列显示单位MM } } 6.变量定义如下示例 /* Defines ------------------------------------------------------------------*/ #define HCSR04_GPIO_RCC RCC_APB2Periph_GPIOB #define HCSR04_GPIO_Port GPIOB #define Trig_Pin GPIO_Pin_12 #define Echo_Pin GPIO_Pin_13//根据实际的引脚修改#define HCSR04_TIM TIM1 #define HCSR04_TIM_CLK_ENABLE RCC_APB2Periph_TIM1 #define PERIOD_COUNT 10 #define PRESCALER_COUNT 72 #define HCSR04_TIM_IRQn TIM1_UP_IRQn #define HCSR04_TIM_IRQHandler TIM1_UP_IRQHandler#define Overtime 3800//38msuint8_t ditance_flag 0;//开始测量标志 uint32_t ditance_count 0;//测量计数 10us/次 uint16_t MM_ditance 0;//输出测量距离 单位毫米7.显示结果如下示例 图片 本来想录像的但是一直录不好有兴趣的自己测试下把。 串口打印 截取部分测试内容我是拿一个黑色本子立起来从近距离到远距离。 三、总结 超声波测距模块使用起来比较简单但是发现环境条件对测量结果也存在一定影响温度湿度我也没考虑进去多次测量取平均值我也没用还是存在诸多问题的后面有时间在改进下感谢你的观看谢谢
http://www.huolong8.cn/news/419208/

相关文章:

  • 洛阳公司做网站线上平台名称大全
  • 自助建站上建的网站免费吗房屋产权地址备案在那个网站做
  • 网站流量怎么做河源市网站建设
  • 安徽网站优化小红书推广策略
  • 响应式网站的排版深圳品牌公寓
  • ionic做网站品牌建设和市场营销的区别
  • id97网站怎么做的安徽太基建设官方网站
  • 通过php获取手机网站访客的手机号码wordpress跨站脚本攻击漏洞
  • 装修网站建设案例电子商务网站建设的规划方案
  • 网站开发招标任务书用python做网站优点
  • 网站建设运营合同书网站配色表
  • 做网站维护怎么找客户厦门建设网站企业
  • 潍坊网站建设服务商wordpress 安装主题 ftp
  • 电商加盟的网站建设青海城乡和住房建设厅网站
  • 网站建设教程菜鸟物流wordpress修改文章字体颜色
  • 深圳网站设计精选刻网站里面的按钮链接怎么做
  • 高性能网站建设书籍网站挂百度广告
  • 网站外链有什么用网站建设seo策略有哪些
  • 包装设计征集网站专业建设网站建站
  • 网站开发项目的简介东莞优化电话
  • 久久室内设计网广州seo顾问服务
  • 门图书馆户网站建设方案网站站点怎么做
  • 做数码测评的网站搭建平台 能说会写
  • 在线注册个体工商户网站改版 seo
  • 淘宝网站的建设与运营设计思路做公司网站和设计logo
  • 安徽城乡建设部网站首页个人网站有什么缺点
  • 长沙做网站品牌徐州人才招聘网官网
  • 手机网站产品展示模板宁波 外贸网站建设
  • 卓越高职院建设网站开发一个app要多少钱呢
  • 企业邮箱 网站建设qq建设网站首页