MAX4466高精度声音传感器的使用方法,Arduino与MAX4466联机高度

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
声音传感器用的最多的就是咪头,也叫驻极体话筒。使用MAX4466芯片连接咪头,可以提高采样精度。达到高精度的声音采样。

提示:以下是本篇文章正文内容,下面案例可供参考

一、MAX4466声音模块

在这里插入图片描述
模块供电2.4V -5.5V。输出OUT为模拟量。使用Arduino AD口采样数字量输出范围为0-1023 即。如果电源用的3.3V。即代表0V对应数字0,3.3V对应数字1023。
如果是采用ADC0832 AD采样芯片。这是8位AD。即数字采样对应为0-255。这里以Arduino为例说明。

接线:模块 VCC-----接Arduino 3.3V管脚。
模块GND------接Arduino GND管脚
模块OUT-------接Arduino A0管脚 模拟管脚

二、程序代码

//本例程里面,MAX4466的VCC接 3.3V

#define MIC_IN A0 //MAX4466 OUT管脚接A0口
int sampleWindow = 50; //50ms采样一次。频率20Hz

void setup()
{
Serial.begin(9600); //模拟采样不需要初始化管脚
}

void loop()
{
double soundSensed = sampleSoundPeak(); //采样得到数字采样值0-1023
double volts = (soundSensed * 3.3) / 1024; //转换成模拟电压,真实电压值
Serial.print(soundSensed); //串口显示出数字值
Serial.print(" "); //串口显示出电压值
Serial.println(volts);
}

//声音采样子函数
double sampleSoundPeak()
{
double startMillis = millis(); //记录采样开始的时间
int signalMax = 0;
int signalMin = 1024;
int sample;

while ( (millis() - startMillis) < sampleWindow ) //当时间小于50ms时继续采样
{
sample = analogRead(MIC_IN); //读取A0口的采样值
if (sample < 1024) //采集声音的最高值与最低值
{
if (sample > signalMax) //用这个语法采到一个周期50ms内最高的声音
{
signalMax = sample;
}
else if (sample < signalMin) //用这个误法采到一个周期50ms内最低的声音
{
signalMin = sample;
}
}
}
int peakDifference = signalMax - signalMin; //得到幅值,返回幅值
return peakDifference;
}

总结

提示:这里最难理解的是声音采样子函数里面的if 与else if这两句程序。新手可能比较难以理解。
这里再说明一下。方便新手学习。if满足之后,后面的else if就不执行了。有些新手可能有困惑就是在这个地方。明白这个就很好理解了。假如有一个声音,它的电压值是1.5V。换算成数字量是500左右,具体的值你们可以计算。这里只是举例,不需要太精确。
500这个值,大于signalMax=0这个值。所以signalMax被重新赋值成为500,这个时候,如果声音值,持续比500高的话。signalMax会一直被改写最高的值。
如果这个时候的声音值,低于这个signalMax的最高值后。再次执行 if (sample > signalMax) 这一句语句,不成立。直接跳过。就跑到了else if这一句里面。这个语句刚好相反,就是不停的记录最低声音值。一直到我们不发出任何声音后,采样的就是环境声音。这个时候,用最大值signalMax减去signalMin最小值。就得到非常完美真实的声音值。再换算出来就OK了。
这个算法写的非常好。是国外的一个程序员写的。
Written by Shani Mensing, edited by Audrey St. John

if (sample > signalMax) //用这个语法采到一个周期50ms内最高的声音
{
signalMax = sample; //
}
else if (sample < signalMin) //用这个误法采到一个周期50ms内最低的声音
{
signalMin = sample;
}
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值