STM32项目学习7——震动传感器
假设震动传感器DO口接的是PB8,那么当PB8收到的是低电平时,触发PA1口输出低电平,使LED灯亮1s,然后熄灭。接线上,震动传感器VCC接3.3V,GND接GND,DO接PB8;继电器VCC接3.3V,GND接GND,IN接PA0,COM口接VCC,NO口接LED灯VCC;正常工作时,DO口输出高电平,震动瞬间,DO口输出低电平。打开keil工程文件,USER导入shake.c,添加stm32
震动传感器,工作时电源LED常亮,震动信号检测LED灯在发生震动时会保持常亮,其余情况下常灭。正常工作时,DO口输出高电平,震动瞬间,DO口输出低电平。常用于震动触发,防盗报警等

引脚接法
VCC:接电源5V或3.3V
GND:接电源负极或者接GND
DO:数字信号输出,可与单片机相连检测是否有震动
震动传感器控制LED亮灭
步骤与前几个项目类似:USER文件夹新建Shake文件夹,Shake内部存放shake.c和shake.h
打开keil工程文件,USER导入shake.c,添加stm32f10x.h和shake.h源文件,并定义函数,初始化结构体,开启外设时钟信号等。
shake.c代码如下
#include "Shake.h"
#include "stm32f10x.h"void Shake_Init(void)
{
GPIO_InitTypeDef shake_init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
shake_init.GPIO_Mode = GPIO_Mode_IPU;
shake_init.GPIO_Pin = GPIO_Pin_8;
shake_init.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOB, &shake_init);
}
shake.h代码如下
void Shake_Init(void);
main.c添加shake.h源文件,魔术棒添加Shake文件夹。在震动传感器发生震动时,LED灯亮1s,然后熄灭。假设震动传感器DO口接的是PB8,那么当PB8收到的是低电平时,触发PA1口输出低电平,使LED灯亮1s,然后熄灭。
main.c代码如下
#include"stm32f10x.h"
#include"main.h"
#include"led.h"
#include"bear.h"
#include"button.h"
#include"Relay.h"
#include"Shake.h"
void delay(uint16_t time)
{
uint16_t i = 0;
while(time--)
{
i = 12000;
while(i--);
}
}int main()
{
Shake_Init();
GPIO_SetBits(GPIOA, GPIO_Pin_1);
while(1)
{
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) == 0)
{
GPIO_SetBits(GPIOA, GPIO_Pin_1);
delay(1000);
GPIO_ResetBits(GPIOA, GPIO_Pin_1);
delay(1000);
}
else
{
GPIO_SetBits(GPIOA, GPIO_Pin_1);
}
}
}
震动传感器控制继电器,进而控制外部LED灯亮灭
将前几个项目结合在一起,加上外设的LED灯。
main.c
#include"stm32f10x.h"
#include"main.h"
#include"led.h"
#include"bear.h"
#include"button.h"
#include"Relay.h"
#include"Shake.h"
void delay(uint16_t time)
{
uint16_t i = 0;
while(time--)
{
i = 12000;
while(i--);
}
}int main()
{
Relay_Init();
Shake_Init();
GPIO_SetBits(GPIOA, GPIO_Pin_0);
while(1)
{
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) == 0)
{
GPIO_SetBits(GPIOA, GPIO_Pin_0);
delay(1000);
GPIO_ResetBits(GPIOA, GPIO_Pin_0);
delay(1000);
}
else
{
GPIO_SetBits(GPIOA, GPIO_Pin_0);
}
}
}
接线上,震动传感器VCC接3.3V,GND接GND,DO接PB8;继电器VCC接3.3V,GND接GND,IN接PA0,COM口接VCC,NO口接LED灯VCC;LED灯VCC接继电器NO口,GND接GND。
整体如图所示

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)