第十九篇、基于Arduino uno,获取光电开关(NPN/PNP型)的信号 您所在的位置:网站首页 光电开关传感器作用 第十九篇、基于Arduino uno,获取光电开关(NPN/PNP型)的信号

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

#第十九篇、基于Arduino uno,获取光电开关(NPN/PNP型)的信号| 来源: 网络整理| 查看: 265

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); //设置串口波特率为9600 pinMode(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可以根据这个电信号来实现对物体的检测和控制。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有