IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32F103C8T6 红外测距模块测量距离(SHARP GP2Y0A21YK0F)使用CubeMx生成HAL库(ADC) -> 正文阅读

[嵌入式]STM32F103C8T6 红外测距模块测量距离(SHARP GP2Y0A21YK0F)使用CubeMx生成HAL库(ADC)


一、HAL库ADC使用

1.基础认识

ADC在数字模拟电路中有过短暂的了解,模数转换,即将模拟量转换为数字量

  1. ADC的工作均为非阻塞模式

(后续补充)

二、红外模块简介

在这里插入图片描述

1.距离测量范围:10~80厘米
2.模拟量输出
3.电源电压:4.5~5.5 V

三、CubeMX配置

1.RCC

在这里插入图片描述

在这里插入图片描述

2.SYS

在这里插入图片描述

3.ADC

在这里插入图片描述

4.串口

在这里插入图片描述

四、代码

sharp.h

#ifndef __SHARP2Y0A21_H
#define __SHARP2Y0A21_H	

#include "main.h"


#define Adc1IN11Distance_READ_TIMES	10		//定义红外传感器读取次数,以便取平均值
 
void DistanceSensor_Init(void); 				//初始化红外传感器
float DistanceSensor_Get_Val(void);				//读取红外传感器的值


#endif 


#include "sharp.h"
#include "adc.h"
#include "main.h"
#include "stdio.h"

//初始化ADC,不用修改
//这里我们仅以规则通道为例														   
		  
//初始化传感器,需要修改端口和引脚号,这里是c出口,c1引脚,ADC3的IN11
void DistanceSensor_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  __HAL_RCC_GPIOA_CLK_ENABLE();//使能GPIOA时钟
	
  //先初始化ADC1通道11 IO口
  GPIO_InitStructure.Pin = GPIO_PIN_1;//PA1
  GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;//模拟输入
  GPIO_InitStructure.Pull = GPIO_NOPULL ;//不带上下拉
  HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化  
	
 
	MX_ADC1_Init();//初始化ADC1
}
//PA1=IN1
float DistanceSensor_Get_Val(void)
{
	uint32_t temp_val=0;
	float distemp=0.0;
	uint8_t t;
	for(t=0;t<Adc1IN1Distance_READ_TIMES;t++)
	{
		temp_val+=HAL_ADC_GetValue(&hadc1);	//读取ADC值,通道1
		HAL_Delay(5);
	}
	temp_val/=Adc1IN1Distance_READ_TIMES;//得到平均值,这个是平均的ADC,
	printf("average_val=%d\r\n",temp_val);
	distemp=temp_val*3.3/4095;
	printf("voltage= %f\r\n",distemp);//电压值
	//电压对应距离
	distemp=(-13.2*distemp*distemp*distemp)+72.84*distemp*distemp-140*distemp+107.12;
  return distemp;

}

main.c

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		
		HAL_ADC_Start(&hadc1);
        adcx=HAL_ADC_GetValue(&hadc1);
		distance=DistanceSensor_Get_Val();
		printf("adcX=%d\r\n",adcx);
		printf("shuiwei=%f\r\n",distance);
		HAL_Delay(200);

  }

完整工程详见本人资源

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:22:20  更:2021-08-25 12:23:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 1:34:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码