STM32学习第一周之 红外光电

如果红外光电开关检测到障碍物,蜂鸣器响,RGBLED 显示红色,如果没有检测到障碍物,蜂鸣器不响,RGBLED 显示绿色
注意:添加一个 InfraredPSwitch.c 和 InfraredPSwitch.h 文件
InfraredPSwitch.h 文件里面,对红外光电开关使用的引脚和端口进行宏定义
InfraredPSwitch.c 文 件 里 面 , 设 计 一 个 InfraredPSwitch_Init 函 数 , 一 个
InfraredPSwitch_Check()函数,返回值为检测到的状态值

如有好的建议还望不吝赐教嚛

直接上代码
InfrarePSwitch_H

#ifndef __InfrarePSwitch_H
#define __InfrarePSwitch_H	 
#include "sys.h"
 
#define  sign  GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_1)	 

void InfrarePSwitch_Init(void);
void InfrarePSwitch_Check(void);
	 
#endif

InfrarePSwitch.c

#include "sys.h"	
#include "delay.h"	
#include "RGBLED.h" 
#include "BEEP.h" 
#include "usart.h"
#include "InfrarePSwitch.h"

//初始化PF1口读取光电开关电平
void InfrarePSwitch_Init(void)
{
 
	GPIO_InitTypeDef  GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);	 

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;				 
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 		
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 
	GPIO_Init(GPIOF, &GPIO_InitStructure);	

	GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_1);
}

void InfrarePSwitch_Check(void)
{
	//GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_1);
	if(sign == 0)
	{
			RGBLED_Display(RED, 1);
			BEEP = 0;
		
	}else
	{
		RGBLED_Display(GREEN, 1);
		BEEP = 1;
	}
}`

关于RGBLED_Display();还请参见第一篇笔记。
链接呈上 https://mp.csdn.net/mdeditor/90343426#

注意: 采用电源模块为红外光电供电时,注意GND和VCC的连接。
将两个线都接在电源模块上;不要一根接在电源模块,另一根接在开发板上。

现在是2022年5月28日,这几天应该是又开始准备电赛了,好几个人问我这个红外光电。
首先如果你找不到他的相关资料,我建议是放弃吧,这种东西的资料满大街都是,你竟然和我说找不到。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其次,如果你目前不精通stm32编程的话,可以用万用表测一下光电开关在有障碍物和无障碍物情况下的电压变化。
最后,建议使用cubemx。

  • 16
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值