【树莓派】实验11-U型光点传感器
慕雪年华

前言

本篇实验和上篇博客的实验相似,我们要学习用U型光电传感器来控制双色LED

image

这都是基础实验中不可或缺的内容,因为后续我们需要学会交叉使用不同的传感器来控制更复杂的电路。那些才是学习树莓派基础实验真正的意义

不管怎样,还是继续努力吧!

关注本专栏,和我一起学习树莓派开发板30+经典实验

C语言代码,0基础剖析!

1.实验器材

  • 树莓派
  • 40p软排线+T型转接板+面包板
  • U型光电传感器模块
  • 双色LED模块
  • 跳线一堆

image

上:U型光电传感器;下:双色LED


2.实验原理

U型光电传感器是一种红外感应光点产品。其有红外发射管和接收管,分别位于U型槽的两侧,以此形成一光轴。当检测到物体经过U型槽并阻断光轴时,就能产生对应的电信号。

2.1电路图

以下是U型光电传感器模块的电路图

  • 无障碍物阻挡时,D1\D2-LED都亮起,OUT管脚检测到低电平0
  • 有障碍物阻挡时,D1-LED熄灭,OUT管脚检测到高电平1

image

2.2接线图

树莓派T型转接板U型光电传感器
GPIO 0GPIO 17OUT
5V5VVCC
GNDGNDGND
树莓派T型转接板双色LED
GPIO 1GPIO 18R(中间)
GNDGNDGND(-)
GPIO 2GPIO 27G(S)

image

image

不过我手上的这个传感器并没有两个指示灯。只有一个,该指示灯在传感器被阻隔的时候会变暗

image


3.代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//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

1
gcc -Wall 11photoeletricsensor.c -o TEST -lwiringPi

执行该文件,当传感器被阻挡时,双色LED变红,屏幕打印makerobo Light was blocked!

不被阻挡时,双色LED亮绿灯,屏幕打印clear

image

3.2 效果

image


结语

本次实验到这里就结束啦!如果有什么问题,欢迎在评论区提出哦!

image