嵌入式STM32学习——振动传感器控制继电器开关灯

简易接线图:

解决思路:

振动传感器震动被STM32接收到,然后STM32再控制继电器闭合,随后与继电器连接的LED便会打开,反之亦然。

代码实现:

震动传感器:

shake.h

复制代码
#ifndef SHAKE_H_
#define SHAKE_H_



void Shake_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);
}

继电器:

relay.h

复制代码
#ifndef RELAY_H_
#define RELAY_H_



void Relay_Init(void);

#endif

relay.c

复制代码
#include "relay.h"
#include "stm32f10x.h"

void Relay_Init(void)
{
	GPIO_InitTypeDef Relay_initstruct;
	
	RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
	
	Relay_initstruct.GPIO_Pin = GPIO_Pin_1;
	Relay_initstruct.GPIO_Speed = GPIO_Speed_10MHz;
	Relay_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;
	
	 GPIO_Init(GPIOA, &Relay_initstruct );

	
}

main.c

复制代码
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.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);
			GPIO_ResetBits(GPIOA, GPIO_Pin_1); 
			delay(1000);
			GPIO_SetBits( GPIOA, GPIO_Pin_1); 
			delay(1000);
		}
	 else                                                  //未振动为高电平
	 {
			GPIO_SetBits( GPIOA, GPIO_Pin_1); 
	 }
			
		
	}
}

实现结果:

若出现震动继电器闭合打开两次,使得灯闪烁两次。

个人积累:

振动传感器震动输出低电平

继电器闭合需要低电平

相关推荐
何事误红尘1 小时前
Mqtt学习笔记(一):Mosquitto服务器搭建、MQTTX安装测试
学习
青山是哪个青山1 小时前
LangChain 学习笔记(三):LangSmith 调试与监控
笔记·学习·langchain
那年窗外下的雪.3 小时前
AIDC 学习日志 第 04 天 BGP Underlay 基础与路由选择
服务器·学习·php
蒸蒸yyyyzwd3 小时前
cpp选手备战后端学习笔记day6 秋招笔试题
笔记·学习
zlinear数据采集卡3 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
ACP广源盛139246256733 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
weixin_446260855 小时前
AVA-Encoder:面向智能体原生视频表征学习框架
学习·音视频
Rocktech_ruixun5 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人
吃好睡好便好6 小时前
说说口罩的佩戴
学习·生活·口罩
振南的单片机世界6 小时前
SysTick硬核拆解:既是HAL_Delay的“心跳”,也是RTOS的“节拍器”
arm开发·stm32·单片机·嵌入式硬件