如果红外光电开关检测到障碍物,蜂鸣器响,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的连接。
将两个线都接在电源模块上;不要一根接在电源模块,另一根接在开发板上。
上一篇:STM32学习第一周之 按键矩阵
下一篇:STM32学习第一周之 循环显示RGBLED的七种颜色
推荐阅读最新更新时间:2024-11-03 18:26
设计资源 培训 开发板 精华推荐
- MC-306,ML7105-00x蓝牙32.768kHz晶体单元的振荡电路和选择指南
- 使用 Richtek Technology Corporation 的 RT8058A 的参考设计
- SEN-15050,SparkFun Triad 光谱传感器 - AS7265x (Qwiic)
- DC1996A-E,具有 LTC2323 双通道 12 位、5Msps 串行高速 SAR ADC 的演示板
- TCR6DA1829、200mA、1.8V 和 2.9V 输出电压双路输出 CMOS 低压降稳压器的典型应用
- 使用 Diodes Incorporated 的 ZXRD060 的参考设计
- ST6 MCU 三相电机驱动应用电路
- 使用 ON Semiconductor 的 NCP5667 的参考设计
- LT8410高压电源典型应用电路无需变压器
- LT1070、5 至 12Vin 升压转换器的典型应用