STM32——震动传感器控制led

一、项目功能

本项目基于 STM32F103 实现:震动传感器检测 + LED 闪烁提示

  • 震动传感器(震动开关)接在 PA0
  • 检测到震动时:LED 自动闪烁 1 秒
  • 无震动时:LED 保持熄灭
  • 模块化编程

二、硬件连接

  • 震动传感器 OUT → PA0
  • 震动传感器 VCC → 3.3V / 5V
  • 震动传感器 GND → GND
  • LED 灯 → PA1(低电平点亮)

三、完整代码

main.c

复制代码
// STM32 标准库头文件
#include "stm32f10x.h"

// 工程主头文件
#include "main.h"


// LED 驱动头文件
#include "led.h"

// 震动传感器初始化头文件
#include "shake.h"

/**
  * 函数功能:简单毫秒级延时函数
  * 输入:time  延时时间(约1ms)
  */
void delay(uint16_t time)
{
	uint16_t i = 0;
	while(time--)
	{
		i = 12000;
		while(i--);
	}
}

/**
  * 函数功能:主函数,程序入口
  */
int main()
{
	// 初始化 LED 引脚 PA1
	LED_Init();

	// 初始化震动传感器引脚 PA0
	Shake_Init();

	// 死循环,不断检测震动信号
	while(1)
	{
		// 判断:如果 PA0 检测到震动(低电平触发)
		if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0)
		{
			// 亮灯
			GPIO_ResetBits(GPIOA, GPIO_Pin_1);
			delay(1000);

			// 灭灯
			GPIO_SetBits(GPIOA, GPIO_Pin_1);
			delay(1000);
		}
		// 没有震动时
		else
		{
			// LED 保持熄灭
			GPIO_SetBits(GPIOA, GPIO_Pin_1);
		}
	}
}

千万注意一定要加led的函数和头文件

shake.c(震动传感器驱动)

复制代码
// 震动传感器头文件
#include "shake.h"

// STM32 标准库
#include "stm32f10x.h"

/**
  * 函数功能:震动传感器初始化
  * 配置 PA0 为上拉输入模式
  * 震动传感器输出低电平表示触发
  */
void Shake_Init(void)
{
	// 定义 GPIO 结构体
	GPIO_InitTypeDef GPIO_Initstruct;

	// 开启 GPIOA 时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

	// 配置 PA0 引脚
	GPIO_Initstruct.GPIO_Pin = GPIO_Pin_0;

	// 上拉输入模式(震动传感器常用模式)
	GPIO_Initstruct.GPIO_Mode = GPIO_Mode_IPU;

	// 初始化 PA0
	GPIO_Init(GPIOA, &GPIO_Initstruct);
}

shake.h

复制代码
#ifndef SHAKE_H_
#define SHAKE_H_

// 震动传感器初始化函数声明
void Shake_Init(void);

#endif

四、工作原理

  • 震动传感器未震动时:输出高电平
  • 震动传感器震动时:输出低电平
  • 单片机检测到低电平 → 触发 LED 闪烁

五、代码结构

  • main.c:主逻辑,检测震动 + 控制 LED
  • shake.c/shake.h:震动传感器初始化驱动
  • led.c/led.h:LED 控制驱动

六、实验现象

  • 无震动:LED 熄灭
  • 震动传感器被触发:LED 闪烁 1 秒
相关推荐
捷瑞电子工坊7 小时前
嵌入式蓝桥杯从零点亮第一个LED
stm32·蓝桥杯·cubemx·嵌入式·led·ll·锁存
louis.D.7 小时前
Git 本地单线速查
单片机
小李不想当小白8 小时前
PCB结构与组成(PCB设计入门学习笔记)
经验分享·笔记·单片机·嵌入式硬件·学习·pcb工艺·pcb
新晨单片机设计8 小时前
S004R-基于STM32单片机智能门禁系统(密码、指纹、人脸、刷卡、蓝牙)【Proteus仿真+Keil程序+原理图】
stm32·单片机·嵌入式硬件·proteus
至为芯8 小时前
PY32F071至为芯支持32位ARM内核的高主频MCU单片机
单片机·集成电路·芯片
桀人9 小时前
MCU系统架构——总线——统一编址
stm32·单片机·嵌入式硬件
可乐鸡翅好好吃9 小时前
通讯协议--硬件模拟和软件模拟
stm32·嵌入式硬件
Zw-awa9 小时前
STM32F103C8T6 最小系统板:从型号差异到启动方式
stm32
新思维软件9 小时前
基于边缘计算与多模态感知的服药依从性系统|X604261
嵌入式硬件·物联网开发
朝发如雪18 小时前
快速掌握单片机基础(3)(PWM)(通信协议基础)(串口通信时序与参数)(电气特性与电平标准)(51单片机UART寄存器配置)(串口应用层协议)
单片机