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

0、结果

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

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

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

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

 说明:只需要连接四根线。

  • uno————PNP型光电开关
  •      5V--------------棕色的线
  •   GND--------------蓝色的线
  •        4--------------黑色的线
  •   GND---10K电阻---黑色的线


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

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型的,有障碍物的时候输出高电平,没有障碍物的时候输出低电平。此外他们的接线方式也不一样。如果想要调节检测障碍物的距离,可以调节传感器后面的旋钮,顺时针转可以增加检测距离,逆时针转可以减少检测距离。
第十九篇、基于Arduino uno,获取光电开关(NPN/PNP型)的信号——结果导向_第4张图片

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

5、基本原理

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

你可能感兴趣的:(arduino单片机的实际应用,单片机,嵌入式硬件,arduino)