STM32F10x 人体检测 LED 闪烁和 OLED 图片切换
#include 'stm32f10x.h' #include 'delay.h' #include 'OLED.h' #include 'GM.h' #include 'LED.h'
int main(void) { uint8_t GMNum=0,n=0; OLED_Init(); // 初始化 OLED LED_Init(); // 初始化 LED GM_Init(); // 初始化 GM 模块 OLED_BMP(0); // 显示第一张 BMP 图片 while(1) { GMNum=GM_GetNum(); // 读取 GM 模块检测结果 if(GMNum==1) // 检测到人体 { GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 关闭 LED0 Delay_ms(200); // 延迟 200 毫秒 GPIO_SetBits(GPIOA, GPIO_Pin_0); // 打开 LED0 Delay_ms(100); // 延迟 100 毫秒 GPIO_ResetBits(GPIOA, GPIO_Pin_1); // 关闭 LED1 Delay_ms(200); // 延迟 200 毫秒 GPIO_SetBits(GPIOA, GPIO_Pin_1); // 打开 LED1 Delay_ms(100); // 延迟 100 毫秒 GPIO_ResetBits(GPIOA, GPIO_Pin_2); // 关闭 LED2 Delay_ms(200); // 延迟 200 毫秒 GPIO_SetBits(GPIOA, GPIO_Pin_2); // 打开 LED2 Delay_ms(100); // 延迟 100 毫秒 n++; // 图片索引加 1 if(n==4) n=0; // 图片索引循环 OLED_BMP(n); // 显示下一张 BMP 图片 } } }
这段代码使用了多个库文件,包括 STM32F10x 的标准库,以及延时、OLED、GM 和 LED 的驱动程序。代码的核心功能是利用 GM 模块检测人体,并在检测到人体后控制 LED 闪烁并切换 OLED 上的 BMP 图片。
代码解析:
- #include "stm32f10x.h": 引入 STM32F10x 标准库文件。
- #include "delay.h": 引入延时库文件,用于实现毫秒级别的延迟功能。
- #include "OLED.h": 引入 OLED 驱动库文件,用于控制 OLED 显示器。
- #include "GM.h": 引入 GM 模块驱动库文件,用于读取人体检测结果。
- #include "LED.h": 引入 LED 驱动库文件,用于控制 LED 灯。
- int main(void): 主函数,程序的入口。
- uint8_t GMNum=0,n=0: 定义两个变量,GMNum 用于存储 GM 模块的检测结果,n 用于存储 BMP 图片索引。
- OLED_Init(): 初始化 OLED 显示器。
- LED_Init(): 初始化 LED 灯。
- GM_Init(): 初始化 GM 模块。
- OLED_BMP(0): 初始化显示第一张 BMP 图片。
- while(1): 循环执行,实现程序的持续运行。
- GMNum=GM_GetNum(): 读取 GM 模块的检测结果。
- if(GMNum==1): 如果 GM 模块检测到人体。
- GPIO_ResetBits(GPIOA, GPIO_Pin_0): 关闭 LED0。
- Delay_ms(200): 延迟 200 毫秒。
- GPIO_SetBits(GPIOA, GPIO_Pin_0): 打开 LED0。
- Delay_ms(100): 延迟 100 毫秒。
- GPIO_ResetBits(GPIOA, GPIO_Pin_1): 关闭 LED1。
- Delay_ms(200): 延迟 200 毫秒。
- GPIO_SetBits(GPIOA, GPIO_Pin_1): 打开 LED1。
- Delay_ms(100): 延迟 100 毫秒。
- GPIO_ResetBits(GPIOA, GPIO_Pin_2): 关闭 LED2。
- Delay_ms(200): 延迟 200 毫秒。
- GPIO_SetBits(GPIOA, GPIO_Pin_2): 打开 LED2。
- Delay_ms(100): 延迟 100 毫秒。
- n++: 图片索引加 1。
- if(n==4) n=0: 图片索引循环,回到第一张图片。
- OLED_BMP(n): 显示下一张 BMP 图片。
这段代码使用简单的逻辑实现了一个基本的人体检测系统,并利用 LED 闪烁和 OLED 图片切换的方式进行了反馈。 可以根据需要修改代码,例如添加更多的图片,或使用不同的 LED 控制方式。
原文地址: https://www.cveoy.top/t/topic/oAZa 著作权归作者所有。请勿转载和采集!