文章目录

  • 前言
  • 一、学习目的
  • 二、模块介绍
  • 三、代码记录

前言

今天记录的是声音传感器模块的学习


一、学习目的

我的学习目的是学会使用声音传感器模块,并通过检测声音的有无控制LED的亮灭。我使用的是STM32F103C8T6核心板上的自带LED,引脚是PC13。

二、模块介绍

我用的是上图所示的声音传感器,它只能通过震动判断声音的有无,而不能判断声音的大小和内容等。它和一般的传感器一样拥有四个引脚(AO,DO,GND,VCC)。

AO:模拟量输出,实时输出麦克风的电压信号。DO:当声音强度到达某个阈值时,输出高低电平信号[阈值灵敏度可以通过电位器调节]。
        我们不需要太高精度的声音检测,只需要检测声音强度够大就可以实现声控灯的效果,所以我们只需要一个DO口就可以。

接线方面:GND--GND,VCC--5V,DO--PA11(可以自己更改引脚)

三、代码记录

voice.h  (声音传感器的初始化)

#ifndef __VOICE_H
#define __VOICE_Hvoid VoiceSensor_Init(void);uint8_t VoiceSensor_Get(void);#endif

voice,c

当声音达到某个阈值,DO口输出高电平,对应的PA11口将呈现高电平状态,通过GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11) 这个函数读取PA11的电平状态,从而控制LED。

#include "stm32f10x.h"                void VoiceSensor_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);
}
//使能PA11口uint8_t VoiceSensor_Get(void)     //读取PA11口的电平
{return GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11);
}

bled.h   (由DO口的高低电平检测控制LED的亮灭)

#ifndef __BLED_H
#define __BLED_Hvoid BLED_Init(void);
void BLED1_ON(void);
void BLED1_OFF(void);void BLED1_Turn(void);#endif

bled.c

#include "stm32f10x.h"
#include "Delay.h"void BLED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_13);
}void BLED1_ON(void){               GPIO_ResetBits(GPIOC,GPIO_Pin_13);
}void BLED1_OFF(void){GPIO_SetBits(GPIOC,GPIO_Pin_13);
}void BLED1_Turn(void){if(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_13)==0){GPIO_SetBits(GPIOC,GPIO_Pin_13);}else{GPIO_ResetBits(GPIOC,GPIO_Pin_13);}
}

main.c

通过读取PA11口的电平,判断是否有声音(有声音时为高电平)。

#include "stm32f10x.h"
#include "Delay.h"
#include "bled.h"
#include "voice.h"int main(void)
{BLED_Init();VoiceSensor_Init();while (1){if (VoiceSensor_Get() == 1)     //如果PA11口为高电平,即有声音,灯亮{BLED1_ON();}else{BLED1_OFF();}}
}

STM32学习记录——声音传感器的使用相关推荐

  1. STM32学习记录——光敏传感器的使用

    文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 总结 前言 只做学习记录,记录自己如何从零学会使用一个模块,仅仅只是会用,缺乏专业知识.如果需要了解更多原理,可以从我推荐的技术大佬的文章中获 ...

  2. STM32学习记录——烟雾传感器的使用

    文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 总结 前言 这次记录一下烟雾传感器的学习,由于烟雾传感器的资料比较杂,算法比较多,对我来说也比较难,所以我的代码中算法部分是不太具有参考价值, ...

  3. STM32学习——MPU6050姿态传感器

    STM32移植(抄)起来特别爽... MPU6050简介 1.MPU6050是一款六轴(三轴加速度+三轴角速度(陀螺仪))传感器 2.MPU6050含有一个第二IIC接口,可用于连接外部磁力传感器 3 ...

  4. STM32学习记录0002-STM32初探

    一.为什么选择STM32 1.1 什么是STM32 是一种新的基于ARM内核的32位MCU系列 1.内核为ARM公司为要求高性能.低成本.低功耗的嵌入式专门设计的Cortex-M内核,是一种标准的AR ...

  5. STM32学习记录:输入捕获应用

    目录 前言 一.输入捕获的应用 1.1.测量脉宽或者频率 1.2.测量频率的步骤方法 1.3.测量脉宽的步骤方法 二. 输入捕获工作过程 2.1.CH1为例,输入捕获工作过程 2.2.输入通道 2.3 ...

  6. STM32学习记录0011——AD转换

    一.STM32 ADC 1.1参考资料 <STM32不完全手册>第20章 <STM32中文参考手册>第11章 芯片数据手册ADC部分+GPIO部分 1.2 什么是ADC ADC ...

  7. stm32学习记录之0.96寸OLED显示屏配置

    目录 0.96寸oled屏概述 工程实现 GPIO初始化 SSD1306 初始化 启动与停止函数 各个功能函数 0.96寸oled屏概述 本次实验所用oled显示屏为黄蓝屏,即屏上1/4 部分为黄光, ...

  8. STM32学习记录——74HC595四位数码管显示

    数模管作为STM32的一个重要外设,由于其成本低.稳定,被用于许多场景中.本篇文章来介绍下四位数码管的使用方法. 数码管显示 一.数码管的分类 二.74HC595芯片(串入并出) 三.原理图 四.代码 ...

  9. stm32学习记录——继电器

    STM32控制继电器 jdq.c #include "jdq.h"void relay_init(void) {GPIO_InitTypeDef GPIO_InitStructur ...

最新文章

  1. 美团、饿了么,你凭什么让我多等几分钟?
  2. 在GHOST的WINXPSP2安装SQL SERVER2000个人版时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装之前,必须重新启动计算机。”错误的解决方法...
  3. 对于Activity的理解
  4. 2015北京网络赛 G题 Boxes bfs
  5. 什么是cname a记录
  6. zabbix安装过程
  7. PHP key() 函数
  8. 【DigSci 科学数据挖掘大赛】冠军方案关键技术解析
  9. 苹果无人车四个最新专利:手势控制变道、车辆导流、路况感知及车辆控制
  10. servlet的url-pattern匹配规则详细描述
  11. Java笔记(1):final关键字
  12. python批量查询(excel)数据
  13. TypeError: _typeof4 is not a function,解决微信小程序报错
  14. netty自定义通讯协议校验魔数
  15. Swift - 描边文字效果
  16. 童年汇老师教你如何给宝宝选玩具
  17. 3.17 学习情况总结
  18. 李宏毅作业七其三 Network Compression (Network Pruning)
  19. 聊聊C10K问题及解决方案
  20. android防拆机方案,拆机狂人必备 iFixit Android客户端试用

热门文章

  1. webots仿真机器人平台
  2. Mac安装搭建electron教程
  3. electron调用python_electron教程(一): electron的安装和项目的创建
  4. matlab求单自由度振动方程为,单自由度振动方程与Matlab/Simulink求解
  5. FPGA学习altera 系列 第十七篇 自动售货机设计
  6. c语言中英文翻译 毕业设计,c语言中英文翻译资料 毕业论文(设计).doc
  7. 谷歌地图找客户——拒绝躺式开发客户
  8. 从下载 SQL Server 到链接的问题,基本手把手跑
  9. 家庭账务管理系统html,兴华家庭理财管理系统
  10. 【中级软考—软件设计师】1计算机组成与体系结构1.1数据的表示【****】:1.1.2码制