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