文章目录
- 前言
- 1.实验器材
- 2.实验原理
-
- 2.1电路图
- 2.2接线图
- 3.代码示例
-
- 3.1LinuxGCC编译代码
- 3.2 效果
- 结语
前言
这个实验类似于上一个博客的实验。我们应该学会使用它U型光电
传感器
来控制双色LED
这些都是基础实验中不可或缺的内容,因为我们需要学会交叉使用不同的传感器来控制更复杂的电路。那些是学习真正的意义
无论如何,继续努力!
关注这个专栏,和我一起学习树莓派开发板!
还在等什么?心不如行动!点我注意
本专栏代码仓库:Raspberry-practice
1.实验器材
上:U型光电传感器;下:双色LED
2.实验原理
U光电传感器是一种红外感应光点产品。,它们位于U型槽的两侧,形成一个光轴。当检测到物体通过U型槽并阻断光轴时,会产生相应的电信号。
2.1电路图
以下是U型光电传感器模块的电路图
- 当无障碍物被阻挡时,
D1\D2-LED
都亮起,OUT管脚检测到低电平0 - 当障碍物被阻挡时,
D1-LED
熄灭,OUT管脚检测到高电平1
2.2接线图
树莓派 | T型转接板 | U型光电传感器 |
---|---|---|
GPIO 0 | GPIO 17 | OUT |
5V | 5V | VCC |
GND | GND | GND |
树莓派 | T型转接板 | 双色LED |
---|---|---|
GPIO 1 | GPIO 18 | R(中间) |
GND | GND | GND(-) |
GPIO 2 | GPIO 27 | G(S) |
但是我手上的传感器没有两个指示灯。只有一个,当传感器被阻挡时,指示灯会被阻挡
3.代码示例
//U型光电传感器实验 #include <wiringPi.h> #include <stdio.h> #define makerobo_LBPin 0 // U光电传感器管脚定义 #define makerobo_Rpin 1 // 红色LED定义模块管脚 #define makerobo_Gpin 2 // 绿色LED定义模块管脚 // 双色LED控制函数 void double_colorLED(int color) {
pinMode(makerobo_Rpin, OUTPUT); // 红色LED管脚设置为输出模式 pinMode(makerobo_Gpin, OUTPUT); // 绿色LED管脚设置为输出模式
if (color == 0){
// 点亮红色LED灯
digitalWrite(makerobo_Rpin, HIGH);
digitalWrite(makerobo_Gpin, LOW);
}
else if (color == 1){
// 点亮绿色LED灯
digitalWrite(makerobo_Rpin, LOW);
digitalWrite(makerobo_Gpin, HIGH);
}
}
// 有物体挡住时,打印出提示信息
void makerobo_Print(int x){
if ( x == 0 ){
printf("makerobo Light was blocked!\n");
}
else{
printf("clear!\n");// 没有挡住
}
}
// 主函数
int main()
{
//初始化连接失败时,将消息打印到屏幕
if(wiringPiSetup() == -1){
printf("setup wiringPi failed !");
return 1;
}
//U型光电传感器Pin设置为输入模式
pinMode(makerobo_LBPin, INPUT);
int clb_temp=0;
while(1){
//U型光电传感器有无物体挡住信息检测
if ( digitalRead(makerobo_LBPin) == 0 ){
clb_temp = 1;//低电平,代表没有阻挡
}
if ( digitalRead(makerobo_LBPin) == 1 ){
clb_temp = 0;//高电平,代表被阻挡
}
double_colorLED(clb_temp); // 控制双色LED灯显示
makerobo_Print(clb_temp); // 信息打印
}
return 0;
}
3.1LinuxGCC编译代码
在控制台输入以下指令,编译出可执行文件TEST
gcc -Wall 11photoeletricsensor.c -o TEST -lwiringPi
执行该文件,当传感器被阻挡时,双色LED变红,屏幕打印makerobo Light was blocked!
不被阻挡时,双色LED亮绿灯,屏幕打印clear
3.2 效果
结语
本次实验到这里就结束啦!如果有什么问题,欢迎在评论区提出哦!