文章目录
- 前言
- 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 效果
结语
本次实验到这里就结束啦!如果有什么问题,欢迎在评论区提出哦!