当前位置: 首页 > web >正文

嵌入式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); }}
}

实现结果:

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

个人积累:

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

继电器闭合需要低电平

http://www.xdnf.cn/news/5521.html

相关文章:

  • 力扣-二叉树-101 对称二叉树
  • fast-livo2原理
  • 【Java学习笔记】属性重写问题
  • 全栈项目实战:Vue3+Node.js开发博客系统
  • Python-MCPAgent开发-DeepSeek版本
  • MySQL索引原理以及SQL优化(二)
  • 【更新至2023年】1999-2023年上市公司人工智能词频统计数据(年报词频统计)
  • RGA模块讲解
  • 低代码平台与 AI 融合:从 Activity 流程到智能 ITSM 的落地实践
  • 单片机-STM32部分:12、I2C
  • 2003-2022年 地级市-政府干预程度指标数据-社科数据
  • springboot3整合SpringSecurity实现登录校验与权限认证
  • c++ 类的语法2
  • Windows使用虚拟环境执行sh脚本
  • 【深度学习】将本地工程上传到Colab运行的方法
  • (十一)Java面向对象进阶:深入理解抽象类、接口与内部类
  • 如何使用依赖注入来实现依赖倒置原则?
  • RK35XX 环境搭建
  • [ERTS2012] 航天器星载软件形式化模型驱动研发 —— 对 Scade 语言本身的影响
  • python打卡训练营打卡记录day22
  • Java SSM 框架(详解)
  • Java 多态:原理与实例深度剖析
  • 【Java学习日记36】:javabeen学生系统
  • [思维模式-30]:《本质思考力》-30- 计划经济与市场经济结合中的“自顶向下”与“自底向上”思维模式。
  • PXE安装Ubuntu系统
  • 免安装 + 快速响应Photoshop CS6 精简版低配置电脑修图
  • 计算机网络笔记(二十二)——4.4网际控制报文协议ICMP
  • # Anaconda3 常用命令
  • Grafana v12.0 引入了多项新功能和改进
  • KAG:通过知识增强生成提升专业领域的大型语言模型(四)