嵌入式STM32学习——振动传感器
振动传感器是一种用于检测振动的设备,具有四个针脚:AO、DO、GND和VCC。AO针脚输出连续的模拟信号,反映物理量的大小;DO针脚输出离散的数字信号,仅有高电平和低电平两种状态。GND针脚用于接地,VCC针脚则提供3.3V至5V的电源。在硬件应用中,通过软件编程使DO针脚输出低电平时,传感器会触发震动。例如,可以通过编程实现当DO针脚输出低电平时,LED灯亮一秒后熄灭一秒,以此作为振动传感器的基
·
振动传感器的介绍:

四个针脚:AO、DO、GND、VCC
AO针脚:输出连续的模拟信号,可以表示具体的物理量大小。
DO针脚:输出离散的数字信号,只有高电平和低电平两种状态。
GND针脚:接地
VCC针脚:3.3V~5V
硬件的使用:在软件编写程序中使其DO针脚输出低电平时传感器发生震动。(也就是需要芯片引脚接收到DO引脚是否发出低电平)
练习:(用振动传感器让LED亮一秒再熄灭一秒)
shake.h
#ifndef RELAY_H_
#define RELAY_H_
void Relay_Init(void);
#endif
shake.c
#include "stm32f10x.h"
#include "shake.h"
void Shake_Init(void)
{
GPIO_InitTypeDef shake_initstruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//ʱÖӵijõʼ»¯
shake_initstruct.GPIO_Mode=GPIO_Mode_IPU;
shake_initstruct.GPIO_Pin=GPIO_Pin_0;
GPIO_Init(GPIOA, &shake_initstruct);
}
led.h
#ifndef LED_H_
#define LED_H_
void LED_Init(void);
#endif
led.c
#include "led.h"
#include "stm32f10x.h"
//³õʼ»¯LEDµÆµÄº¯Êý¡ª¡ª¡ª¡ªº¯ÊýµÄ¶¨Òå¡¢ÉùÃ÷¡¢µ÷ÓÃ(led.c led.h main.c)
void LED_Init(void)
{
//1.³õʼ»¯Ê±ledÒý½ÅGPIOA1
GPIO_InitTypeDef led_initstruct; //¶¨ÒåGPIOµÄ½á¹¹Ìå
//2.³õʼ»¯Ê±ÖÓ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//ʱÖӵijõʼ»¯
led_initstruct.GPIO_Pin = GPIO_Pin_1;
led_initstruct.GPIO_Speed = GPIO_Speed_2MHz;
led_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&led_initstruct); //³õʼ»¯GPIO½á¹¹Ìå
}
main
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "shake.h"
void delay(uint16_t time)
{
uint16_t i=0;
while(time--)
{
i =12000;
while(i--);
}
}
int main()
{
LED_Init();
Shake_Init();
GPIO_SetBits( GPIOA, GPIO_Pin_1);
while(1)
{
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
{
GPIO_SetBits( GPIOA, GPIO_Pin_1);
}
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)