STM32 E18-D80NK红外检测

news2024/11/15 19:31:12

本文代码使用 HAL 库。

文章目录

  • 前言
  • 一、E18-D80NK 红外传感器:
        • 1. E18-D80NK 的介绍
        • 2. 电器特性
  • 二、红外检测小实验代码讲解
  • 三、实验现象
  • 总结


前言

这篇文章介绍 如何使用 STM32 控制 E18-D80NK 进行红外检测。

一、E18-D80NK 红外传感器:

1. E18-D80NK 的介绍

E18-D8ONK 这是一种 集发射与接收于一体 的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出。有效的避免了可见光的干扰。透镜的使用,也使得这款传感器最远可以检测80厘米距离的问题(由于红外光的特性,不同颜色的物体,能探测的最大距离也有不同;白色物体最远,黑色物体最近)。
在这里插入图片描述

检测 障碍物的距离 可以根据要求通过 尾部的 电位器旋钮 进行调节。

该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计件等众多场仓。.

2. 电器特性

  • 棕色:VCC;蓝色:GND;黑色:OUT。
  • 工作电压:5V。
  • 检测距离:3-80cm。
  • 工作原理:检测到目标物体时输出低电平,正常状态时输出高电平
    在这里插入图片描述

二、红外检测小实验代码讲解

本实验是 :使用 E18-D80NK 检测到有障碍物时,对检测到障碍物的次数进行计算。

大家可以使用 CubeMX 生成了 相关的引脚配置使能,我这里 是 没有使用这个软件,单独创建一个 test.c 文件 进行配置引脚使能的。

对于 单独创建的代码函数不理解的,可以参考我之前的文章详细介绍了这些函数:STM32CubeMX串口USART中断发送接收数据

我使用的板子是 STM32F103 ,OUT 端口接在了 PB1

test.c :

#include "test.h"

static volatile uint8_t level = 1;  /* 没有检测到返回高电平 1 */
uint8_t count= 0;  /* 碰见物体次数 */


void Test_Reint(void)   /* 引脚配置,使能 */
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};  /* 创建具体变量 */
  
	__HAL_RCC_GPIOB_CLK_ENABLE();  /* 使能 */
	
	/* 配置引脚 */
  GPIO_InitStruct.Pin = GPIO_PIN_1;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;   /* 双边沿触发中断 */
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);   /* 完成初始化配置引脚 */
    
  HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 2);   /* 设置优先级 */
  HAL_NVIC_EnableIRQ(EXTI1_IRQn);   /* 使能中断 */
}

/* 外部中断服务函数 */
void EXTI1_IRQHandler(void)
{
    HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
}

 /* 中断回调函数 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) 
{
	if(GPIO_Pin == GPIO_PIN_1)
    {
		level = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);  /* 读电平 */
		
	   if(level == 0)   /* 有物体 0 */
	   {
		  level = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);  /* 读电平 */
		  count++;     
	   }
   }	
}	

int GetTime(void)
{
	return count;  /* 向 main.c 传递time 的值 */
}

main.c :

  uint8_t date = 0;  /* 物体次数 */

  date = GetTime();
  printf("number = %d\r\n",date);

三、实验现象

E18-D80NK 检测到有障碍物时,led 点亮,同时对检测到障碍物的次数进行计算。

实验现象

总结

这是本专栏的第一个小模块,后面会持续更新 其他的模块实验,希望大家多多支持啦。
有不理解的代码可以留言评论,也可以私聊。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt学习笔记-Qt程序中的调试日志

Qt学习笔记-Qt程序中的调试日志环境说明Qt程序中调试日志使用案例对于一门好的编程语言或者开发框架来说,便捷的调试日志功能是必不可少的。QT作为一个跨平台的开发工具,内置了便捷的调试日志功能,本文就对其做一个简介。环境说明 操作系统&…

测试好工具fiddler,手机抓包,查看手机app请求了哪些接口

领导让我接收一个项目,但是这个项目是安卓的,安卓我一窍不通,我们只做过web页面的。身为一个大数据程序员,要接手同事的项目,给我了代码,但是我完全不知道,这个代码对应,安卓机里面的…

Serverless 时代开启,云计算进入业务创新主战场

作者:于洪涛 “我们希望让用户做得更少而收获更多,通过 Serverless 化,让企业使用云服务像用电一样简单。” Serverless 化正在成为全新的软件研发范式,阿里云将坚定推进核心产品全面 Serverless 化,帮助客户更好的实现…

Jetpack Compose 深入探索系列五:State Snapshot System

Jetpack Compose 有一种特殊的方式来表示状态和传播状态变化,从而驱动最终的响应式体验:状态快照系统(State snapshot system)。这种响应式模型使我们的代码更加强大和简洁,因为它允许组件根据它们的输入自动重组&…

Zookeeper3.5.7版本——Zookeeper的概述、工作机制、特点、数据结构及应用场景

目录一、Zookeeper的概述二、Zookeeper的工作机制三、Zookeeper的特点四、Zookeeper的数据结构五、Zookeeper的应用场景5.1、统一命名服务5.2、统一配置管理5.3、统一集群管理5.4、服务器动态上下线5.5、软负载均衡一、Zookeeper的概述 Zookeeper 是一个开源的分布式的&#x…

飞桨全量支持业内AI科学计算工具——DeepXDE!

AI技术在跨学科融合创新方面扮演着日益重要的角色,特别是在Al for Science领域,AI技术的发展为跨学科、跨领域的融合创新带来了巨大的机会。AI已成为一个关键的研究工具,改变了基础科学的研究范式。依托AI技术开发的科学计算工具,…

【教学类-07-06】20230302《破译电话号码-图形篇(图形固定列不重复)》(两款输入版)

效果展示1、适合中班默写学号——有姓名 有班级,无学号,适合中班幼儿2、适合大班幼儿默写名字——有学号,有班级,无姓名,适合初学者描字(小班、中班、大班)——名字、学号、班级都有&#xff08…

Java面试总结(三)

类加载的流程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。其中验证、准备、解析3个部分统称为连接。 如果想要详细了解类加载的过程,可以参考我…

【同步工具类:CyclicBarrier】

同步工具类:CyclicBarrier介绍源码分析CyclicBarrier 基于ReetrantLock Condition实现。构造函数await() 函数业务场景方案一:代码实现测试截图方案二代码实现测试打印总结介绍 官方介绍: 一种同步辅助工具,允许一组线程都等待对方到达共同的障碍点。CyclicBarrie…

完全彻底卸载Oracle

一、停止使用Oracle的服务停用oracle服务,进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止。二、打开Universal Installer工具运行卸载Oracle数据库程序(1)、一般情况运行Oracle自带的卸载…

代谢组学:Microbiome又一篇!绘制重症先天性心脏病新生儿肠道微生态全景图谱

文章标题:Mapping the early life gut microbiome in neonates with critical congenital heart disease: multiomics insights and implications for host metabolic and immunological health 发表期刊:Microbiome 影响因子:16.837…

热烈祝贺|酒事有鲤盛装亮相2023中国(山东)精酿啤酒产业发展创新论坛暨展览会

酒事有鲤(济南)品牌管理有限公司是一家致力于将世界顶级精酿啤酒技术和理念与“ 在地”文化有机融合,做世界认 可的多元化好啤酒,通过精致 舒适的家门口酒馆,让啤酒的 世界观更为完整。 中国生物发酵产业协会联合齐鲁…

Gitlab普通用户转管理员

GitLab是常用的分部式代码库版本开源软件,默认系统中只有一个管理员。在工作中,如果有多个项目,则需要多个管理员分别管理各个的代码仓库,需要把多个普通用户配置成管理员,在Gitlab页面上,不能直接通过操作…

【编程基础之Python】7、Python基本数据类型

【编程基础之Python】7、Python基本数据类型Python基本数据类型整数(int)基本的四则运算位运算比较运算运算优先级浮点数(float)布尔值(bool)字符串(str)Python数据类型变换隐式类型…

tensorflow2.4--2.回归问题分析

文章目录前言流程案例操作前言 流程 回归问题预测连续值,在某个区间内变动. 常见的线性回归问题模型是yaxb,然而现实世界由于大量的数据偏差以及复杂度,同时还有大量的噪声,往往达不到如此的精确解,实际解决问题时需要考虑噪声的存在 对于噪声,往往我们已经假设了它符合高斯…

springboot内嵌Tomcat 安全漏洞修复

漏洞扫描提示的是tomcat-embed-core[CVE-2020-1938]&#xff0c;解决方式是升级tomcat的版本。 该漏洞影响的版本&#xff1a; Apache Tomcat 9.x < 9.0.31 Apache Tomcat 8.x < 8.5.51 Apache Tomcat 7.x < 7.0.100 Apache Tomcat 6.x 其余的安全漏洞也可以通过…

hometown-h5-template 一个开箱即用的前端H5解决方案 【无标题】

前言 大家好&#xff0c;我是 HoMeTown&#xff0c;最近不很忙&#xff0c;整理一套架子出来&#xff0c;有兴趣朋友可以看看&#xff0c;我自己已经投入生产使用了&#xff0c;大家看个人情况&#xff0c;选择性使用 GitHub仓库。 ✨ hometown-h5-template &#x1f4a5; 轻…

JavaSE21-集合1-set

文章目录一、集合概念二、set集合1、set集合的特点2、HashSet2.1 特点2.2 创建对象2.3 常用方法2.4 遍历2.4.1 foreach遍历2.4.2 使用迭代器遍历2.4.3 转换为数组遍历一、集合概念 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说&#xff0c;集合的长度可变会…

速度计算-课后程序(JAVA基础案例教程-黑马程序员编著-第十二章-课后作业)

【案例12-2】&#xff1a;速度计算 【案例介绍】 1.案例描述 本案例要求使用反射技术编写一个速度计算程序&#xff0c;计算某种交通工具的行驶速度。现有两种工具&#xff1a;Bike和 Plane&#xff0c;其中Bike的速度运算公式为&#xff1a;A*B/C&#xff0c;Plane的速度运…

Maven多模块开发

POM主要功能 maven学习教程很多&#xff0c;就不在赘述可以参考以下网站&#xff0c;这里只说明maven实际运用。 https://blog.csdn.net/xwh3165037789/article/details/121545762 菜鸟教程 Maven POM POM是在使用Maven构建项目最重要的部分&#xff0c; POM 中所有信息位于&l…