0
点赞
收藏
分享

微信扫一扫

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

Sky飞羽 2022-04-20 阅读 38

文章目录

前言

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

QQ图片20220419104557

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

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

1.实验器材

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

IMG_20220419_105013

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


2.实验原理

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

2.1电路图

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

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

11.U 型光电传感器实验原理图

2.2接线图

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

image-20220419111105684

image-20220419113059634

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

光影魔术手拼图


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 效果


结语

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

举报

相关推荐

0 条评论