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

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可以根据这个电信号来实现对物体的检测和控制。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值