第三十六篇、基于Arduino uno,获取红外寻迹传感器的原始值——结果导向_怎么检测红外寻迹模块返回值-程序员宅基地

技术标签: arduino单片机的实际应用  arduino  嵌入式硬件  单片机  

0、结果

说明:先来看看串口调试助手显示的结果,没有障碍物的时候串口打印1,有障碍物的时候串口打印0,如果是你想要的,可以接着往下看。


1、外观

说明:虽然红外寻迹传感器形态各异,但是原理和代码都是适用的。


2、连线

说明:只需要连接三根线。
uno————红外寻迹传感器

 3、源程序

说明:采用非阻塞方式编写,一定时间检测一次传感器的值,并将对应功能进行函数化,方便移植。

/*
  wire:
  VCC------VCC
  GND------GND
    2------OUT*/
/****************************************infrared part****************************************/
#define infraredPin 2
#define infraredTimeInterval 100                            //Detect the time interval of a trip
unsigned long infraredTimes = 0;                            //Record the device running time//Define a pin
boolean infraredVal = false;                                //Define a variable
/****************************************set up and loop part*********************************/
void setup() {
  Serial.begin(9600);                                   //Example Set the baud rate of the serial port to 9600

  pinMode(infraredPin, INPUT_PULLUP);                       //The pin is set to pull-up input

  //digitalWrite(relayPin, HIGH);
  Serial.println("Go online!");                         //The serial port displays the corresponding value
}
void loop() {
  getinfraredData();                                        //Get Hall's data
}
/****************************************infrared part****************************************/
/*Get infrared's data*/
void getinfraredData() {
  if (millis() - infraredTimes >= infraredTimeInterval) {      //This command is executed once in a while
    infraredTimes = millis();

    infraredVal = digitalRead(infraredPin);                    //Read the status of the sensor pins

    Serial.println(infraredVal);                           //The serial port displays the corresponding value
  }
}

4、注意事项

说明:如果有什么问题可以评论@我,我将帮助你。电位器可以调节灵敏度。在光比较强的场景下会不准,例如在光照情况下,会不准。反应速度很快。

5、基本原理

        红外寻迹传感器是一种常用于智能小车、机器人等项目的传感器,可以检测地面上黑线、白线等轨迹,从而实现小车或机器人沿着指定路径自动行驶的功能。其工作原理基于红外线灰度测量。

        当光照射在红外寻迹传感器上时,传感器内部的红外发射管会发射出一定频率的红外线,照射到地面上的黑线或白线等轨迹表面后,会反射回来,经过传感器内部的红外接收管检测。由于黑线和白线反射红外线的程度不同,因此传感器通过检测红外线的强度就可以判断所处位置是否在轨迹上,以实现跟踪轨迹的功能。

        为了提高传感器的检测精度,通常还会在传感器外部加上一些凸起的结构,使传感器与地面保持一定的距离,并且只能检测到轨迹上方向传感器的光线,避免干扰。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_55490300/article/details/131156064

智能推荐

蓝桥杯Python组国二经验+备考建议-程序员宅基地

文章浏览阅读1.9w次,点赞141次,收藏834次。楼主参加了2021年的蓝桥杯算法程序竞赛Python组。经过长达半年的训练+比赛时候的一点点运气,最终获得了蓝桥杯Python组省一国二的好成绩。只要好好准备,Python组的省一并没有那么难,我今年10道题中做了7道就拿到了省一等奖。本篇经验适合:1.希望参加Python组的同学2.想参加Java、C++ B组的同学(难度与Python组类似)3.想系统提升算法能力的同学4.ACM大佬可以直接退出了、点击就送总结:1.要总结并背诵基本的算法模板2.需要一定的训练量,但更追求的是写题质量和_蓝桥杯python组

PHP 浮点数计算精度问题_php float 精度-程序员宅基地

文章浏览阅读1.2k次。​ 在计算机中,只有二进制的数据才能被识别和处理。所以无论是哪种编程语言,在什么编译环境下工作,都要先把源程序(编译)转换成二进制的机器码后才能被计算机识别。二进制的方式可以准确表示一个整数,但不能准确表示一个浮点数。和十进制无法精确表示分数的1/3同样,二进制也无法精确表示十进制的小数。我们可以看下面的例子:// 但是对于浮点数来说,二进制并不能完整地表示一个浮点数。// 例如,我们将浮点数 2.4 表示为二进制,此时不能使用 decbin(), bindec()等类似的php系统函数。这里我是用在线_php float 精度

常见的十大运算符及其优先级_运算符优先级-程序员宅基地

文章浏览阅读1.1w次,点赞18次,收藏99次。常见运算符及其优先级_运算符优先级

最长公共子串的问题(正常方法和矩阵法,动态规划)-程序员宅基地

文章浏览阅读1.1k次。这个题我本人看着在网上没有详细的解释,其实你要搞懂一个问题,整体是让你求最长公共子串的长度比较简单,一直双重遍历,比较 最长子串的长度,但是如果最后要你那个最长公共子串难度会有一个提升,首先下面第一种方法我用双重遍历去找一下,找到最长公共子串,找到最长公共子串的关键是用map去储存字符串,这样以len为键一下就找到了最长公共子串。是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。,返回这两个字符串的最长。矩阵法:简单的动态规划。

Android图片压缩框架Tiny学习记录_android tiny-程序员宅基地

文章浏览阅读2.9k次。Android Tiny Compress_android tiny

黑马程序员——Java基础---I/O流(上[异常])_gephi显示java调用目标异常-程序员宅基地

文章浏览阅读512次。——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- 引言 讲解IO流之前为什么先讲解异常和File类呢? 因为File表示的是IO流将来要操作的文件,所以我们需要学习File类。 而操作文件无非就是上传文件和下载文件,在这个操作的过程中可能出现问题, 出现问题后,我们需要对对应的代码进行处理。所以我们需要学习异常异常。 I/O流操作之上传下载 异_gephi显示java调用目标异常

随便推点

AppsFlyer Unity V6_edm4u-程序员宅基地

文章浏览阅读1.8k次。AppsFlyer Unity Plugin V6踩坑记录Unity plugin V6 插件链接首先粗略讲一下EDM4U(Unity外部依赖管理器)。EDM4U类似于一个插件管理器,通过Android Resolver 和 iOS Resolver来进行库文件的下载、更新、去重等,目前新的facebook,google,appsflyer等插件都自带这两个玩意儿了。iOS开发需要注意一点,没有安装CocoaPods,则需要使用/Assets/External Dependency Manage_edm4u

【JAVA秒会技术之玩转SQL】MySQL优化技术(一)_java mysql语句中,表关联,sql会如何优化-程序员宅基地

文章浏览阅读2.3k次。MySQL优化技术(一) 开发的路上,总会碰到一些老系统,越用越慢。“慢”的原因也许有很多,但是,博主个人觉得,数据库的设计和sql语句写的好坏,对系统效率的影响是最直接,最显而易见的!所以,学习一下MySQL的优化,还是很有必要的。当然,博主能力有限,没那么多经验,更多的是“道听途说”和“纸上谈兵”。如有不正之处,望大神开后给予指正,不胜感激!(一)MySQL优化技术概述_java mysql语句中,表关联,sql会如何优化

ros的l2tp服务端创建与pptp多出口配置-程序员宅基地

文章浏览阅读5.4k次。小二最近为了搭建自已的动态IP池,同时为了让苹果终端也能正常使用,初次引入了ros系统,纯属分享,如果不对之处请大神们多指点。Ros基础网络配置不再描述,前提保证ros本身能正常上网。l2tp服务端的配置l2tp的pool配置点击IP -> Pool,点击“+”,添加VPN ip地址池。Name:比如l2tp-poolAddress:比如10.1.1.1-10.1.1.253 ...

【MySQL进阶之路丨第十篇】一文带你精通MySQL排序、分组、连接_mysql 分组排序-程序员宅基地

文章浏览阅读1w次,点赞55次,收藏46次。MySQL中可以使用ORDER BY语句对查询结果进行排序。ORDER BY语句按照指定的列或表达式对结果进行排序,可以按升序(默认)或降序排列。模板如下:SELECT column1, column2, ...FROM tableORDER BY {{column}} {{order}};将需要排序的列名替换为{{column}},并将排序顺序(ASC或DESC)替换为{{order}}MySQL中可以使用ORDER BY语句对查询结果进行排序。ORDER BY语句按照指定的列或表达式_mysql 分组排序

解决java.net.ConnectException: Connection refused: connect报错_apache. der by.client .am.disconnectexception: jav-程序员宅基地

文章浏览阅读312次。在application.yml配置文件中加入:eureka: client: register-with-eureka: false fetch-registry: false_apache. der by.client .am.disconnectexception: java.net.connectexcetionerror

Golang.org/x库初探2——text库_golang.org/x/text-程序员宅基地

文章浏览阅读1.6k次。golang/x 库下text库详解,提供国际化、编码转换等丰富功能_golang.org/x/text