锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【树莓派C语言开发】实验11:U型光电传感器

时间:2022-08-12 10:30:02 光电传感器挡住后不灭什么原因422光电开关传感器光电传感器lx1119370c型传感器214111光电传感器绿色感应传感器

文章目录

  • 前言
  • 1.实验器材
  • 2.实验原理
    • 2.1电路图
    • 2.2接线图
  • 3.代码示例
    • 3.1LinuxGCC编译代码
    • 3.2 效果
  • 结语

前言

这个实验类似于上一个博客的实验。我们应该学会使用它U型光电传感器来控制双色LED

QQ图片20220419104557

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

无论如何,继续努力!

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

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

  • 还在等什么?心不如行动!点我注意

  • 本专栏代码仓库: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  #include   #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); 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 效果


结语

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

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章