第十九篇、基于Arduino uno,获取光电开关(NPN/PNP型)的信号——结果导向

news/2024/9/22 14:36:25/

0、结果

说明:先来看看串口调试助手显示的结果,如果有遮挡会输出低电平或者高电平,没有遮挡会输出高电平或者低电平,如果是你想要的,可以接着往下看。


1、外观

说明:这里要区分到底是NPN型号的,还是PNP型号的,他们的接线方式和触发电平都不太一样。


2、连线

 说明:只需要连接四根线。
uno————PNP型光电开关

     5V--------------棕色的线
  GND--------------蓝色的线
       4--------------黑色的线
  GND---10K电阻---黑色的线

3、源程序

 说明:采用非阻塞方式编写,一定时间检测一次是否有遮挡,并将对应功能进行函数化,方便移植。

/****************************************光电开关 part****************************************/
/*接线:VCC------棕色的线GND------蓝色的线GND---10K电阻---黑色的线4------黑色的线
*/
#define photoSwitchPin 4                                                    //定义一个引脚  
int photoelectricityState = 0;                                              //定义一个变量
#define photoSwitchTimeInterval 300               //检测一次的时间间隔                   
unsigned long photoSwitchTimes = 0;                //记录设备运行时间
/****************************************set up and loop part*********************************/
void setup() {Serial.begin(9600);                                                       //设置串口波特率为9600pinMode(photoSwitchPin, INPUT);                                           //引脚设置成输入Serial.println("设备上线!");
}
void loop() {getphotoelectricityState();                                               //获取光电开关信息
}
/*获取光电开关信息*/
void getphotoelectricityState() {if (millis() - photoSwitchTimes >= photoSwitchTimeInterval) {             //一定时间执行一次photoSwitchTimes = millis();photoelectricityState = digitalRead(photoSwitchPin);                    //读取信号Serial.print("遮挡0,无遮挡1:");                                         //也有可能是反的Serial.println(photoelectricityState);}
}

4、注意事项

说明:需要知道自己的传感器是什么类型的,如果是NPN型的,有障碍物的时候输出低电平,没有障碍物的时候输出高电平;如果是PNP型的,有障碍物的时候输出高电平,没有障碍物的时候输出低电平。此外他们的接线方式也不一样。如果想要调节检测障碍物的距离,可以调节传感器后面的旋钮,顺时针转可以增加检测距离,逆时针转可以减少检测距离。

 

5、基本原理

        光电开关是一种使用光电效应进行检测和控制的传感器。在Arduino中,常使用光电开关来检测物体的位置、颜色、透明度等信息。
        简单来说,光电开关包括一个光源和一个光敏元件。当物体经过光电开关时,会遮挡光源发出的光线,导致光敏元件接收到的光强度发生变化。这样,通过检测光敏元件接收到的光强度变化,就可以确定物体的位置、颜色、透明度等信息。
        在Arduino中,光电开关通常使用数字PIN或模拟PIN进行连接。当光敏元件接收到的光强度超过预设阈值时,将会触发Arduino的输入引脚,从而产生电信号。Arduino可以根据这个电信号来实现对物体的检测和控制。


http://www.ppmy.cn/news/167890.html

相关文章

知识图谱简介

什么是知识图谱? 参考:知识图谱1、知识图谱2 本质上,知识图谱主要目标是用来描述真实世界中存在的各种实体和概念,以及他们之间的关系,因此可以认为是一种语义网络。 主要作用:通过数据,建立图…

从小白走向进阶:如何系统的学习it技术

无论是初学者还是有经验的专业人士,在学习一门新的IT技术时,都需要采取一种系统性的学习方法。那么作为一名技术er,你是如何系统的学习it技术的呢。 一、it技术介绍 1. Spring、SpringMVC、MyBatis、MyBatis-Plus、tkMapper,Spri…

蓝牙音箱硬件设计分享

1.当使用蓝牙芯片做耳机等随身携带产品时,蓝牙产品的天线应该尽量远离人体皮肤,原因是避免微波效应,损失射频信号,提高灵敏度和通讯距离。2.蓝牙产品的天线周围2-4mm范围内尽量不放置金属物品,金属物品对RF信号影响比较…

吸顶音箱,你选对了吗?

随着吸顶音箱的不断发展和升级,越来越多的人在家里安装吸顶音箱。但是你家里的吸顶音箱真的安对了吗?很多人安装的其实都是所谓的“公共喇叭”,音质差,达不到HIFI级别,把它安在家里不仅不能很好地欣赏音乐,…

Java音乐播放器设计

如何使用Java进行音乐播放器的设计? 大三上老师的结课作业,由室友共同合作完成 可以设置背景(动态)、歌词(逐行高亮)、按照时间进行、上一首、下一首、暂停,选择歌曲等内容均以实现&#xff0…

【舞台为何需要返听音箱】

当音响师告诉你观众区声音好的很,伴奏再大一点就把你的声音淹没了,而这时你却听不清伴奏,这时你将怎么办? 答案很简单,加返送音箱。 返送是帮助歌手或者演奏者听到音乐的音箱。当你开始进入排练的时候,音响师播放伴奏…

Optional类详解及使用方法示例

Optional类是java8中引入的一个非常有用的类,它可以用来解决空指针异常带来的不便。这个类可以将对象包装为一个Optional对象,如果该对象为空,则可以使用一些默认值或者执行一些默认操作。Optional 是 Java 实现函数式编程的强劲一步&#xf…

【FlatpanelsHD】HDR生态系统追踪器

Dolby Vision被称为Profile 8.4,与基于pq(杜比实验室开发的感知量化技术,也是无处不在的HDR10的基础)的所有其他口味不同,它基于HLG或Hybrid Log Gamma,由BBC和NHK开发,主要用于电视直播。 用HLG捕捉HDR视频的相机并不…