37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百九十:MAX4466声音传感器 驻极体话筒放大器 麦克风可调功放模块 microphone
知识点:MAX4466芯片
是微功率运算放大器,经过优化,可用作麦克风前置放大器。它们提供了优化的增益带宽产品与电源电流的理想组合,以及超小型封装中实现低电压工件环境。 MAX4466具有增益稳定特性,仅需24μA的电源电流即可提供200kHz的增益带宽。经过解压缩,可实现+5V/V的最小稳定增益,并提供600KHZ增益带宽。此外这些放大器具有轨到轨输出,高 AVOL ,以及出色的电源抑制和共模抑制比,适合在嘈杂环境中工作。广泛应用于蜂窝电话、数字复读装置、耳机、助听器、麦克风前置放大器、便携计算机和语音识别系统中。
主要特性
1、+2.4V 至 +5.5V 电源电压运行版本,
2、可提供 5nA 完全关断(MAX4467/MAX4468)
3、出色的电源抑制比:112dB
4、出色的共模抑制比:126dB
5、高 AVOL:125dB (RL= 100kΩ)
6、轨到轨输出
7、低 24μA 静态电源
8、电流增益带宽积:
200kHz (MAX4465/MAX4467/MAX4469)
600kHz AV≥5 (MAX4466/MAX4468)
9、采用节省空间的封装
5-Pin SC70 (MAX4465/MAX4466)
8 引脚 SOT23 (MAX4467/MAX4468/MAX4469)
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十二:测量环境声级的波形
实验接线:MAX4466咪头模块OUT接Uno的A0
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十二:测量环境声级的波形
实验接线:MAX4466咪头模块OUT接Uno的A0
*/
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned long startMillis = millis(); // Start of sample window
unsigned int peakToPeak = 0; // peak-to-peak level
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
// collect data for 50 mS
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(0);
if (sample < 1024) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
double volts = (peakToPeak * 5.0) / 256; // convert to volts
Serial.println(volts);
}
实验串口绘图器返回情况
实验场景图
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十三:RGB LED 灯的声学频谱控制
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十三:RGB LED 灯的声学频谱控制
实验接线:MAX4466咪头模块OUT接Uno的A0
Rpin 11
Gpin 10
Bpin 9
*/
#define Rpin 11
#define Gpin 10
#define Bpin 9
#define delayLEDS 3
#define sensorPin A0
float sensorValue = 0, filteredSignal = 0,
filteredSignalValues[] = {3.4, 3.1, 2.7, 2.4, 2.1, 1.7, 1.3, 0.9, 0.4};
void setup () {
Serial.begin (9600);
}
void loop () {
MainFunction();
delay(6);
}
void MainFunction() {
sensorValue = (float) analogRead(sensorPin) * (5.0 / 1024.0);
FilterSignal(sensorValue);
Serial.print(sensorValue);
Serial.print(" ");
Serial.println(filteredSignal);
CompareSignalFiltered(filteredSignal);
}
void FilterSignal(float sensorSignal) {
filteredSignal = (0.945 * filteredSignal) + (0.0549 * sensorSignal);
}
void CompareSignalFiltered(float filteredSignal) {
if (filteredSignal > filteredSignalValues[0]) {
RGBColor(0, 127, 255);
Serial.println("Blue");
} else if (filteredSignal <= filteredSignalValues[0] && filteredSignal > filteredSignalValues[1]) {
Serial.println("Azure");
RGBColor(0, 255, 255);
} else if (filteredSignal <= filteredSignalValues[1] && filteredSignal > filteredSignalValues[2]) {
RGBColor(255, 0, 0);
Serial.println("Cyan");
} else if (filteredSignal <= filteredSignalValues[2] && filteredSignal > filteredSignalValues[3]) {
RGBColor(0, 255, 127);
Serial.println("Aqua marine");
} else if (filteredSignal <= filteredSignalValues[3] && filteredSignal > filteredSignalValues[4]) {
RGBColor(0, 255, 0);
Serial.println("Green");
} else if (filteredSignal <= filteredSignalValues[4] && filteredSignal > filteredSignalValues[5]) {
RGBColor(255, 255, 0);
Serial.println("Yellow");
} else if (filteredSignal <= filteredSignalValues[5] && filteredSignal > filteredSignalValues[6]) {
RGBColor(0, 0, 255);
Serial.println("Magenta");
} else if (filteredSignal <= filteredSignalValues[6] && filteredSignal > filteredSignalValues[7]) {
RGBColor(255, 0, 127);
Serial.println("Rose");
} else if (filteredSignal <= filteredSignalValues[7] && filteredSignal > filteredSignalValues[8]) {
RGBColor(255, 127, 0);
Serial.println("Orange");
} else if (filteredSignal <= filteredSignalValues[8]) {
RGBColor(0, 127, 255);
Serial.println("Red");
} else {
RGBColor(255, 50 , 0);
Serial.println("Default: Blue");
}
}
void RGBColor(int Rcolor, int Gcolor, int Bcolor) {
analogWrite(Rpin, Rcolor);
analogWrite(Gpin, Gcolor);
analogWrite(Bpin, Bcolor);
delay(delayLEDS);
}
实验串口返回情况
实验场景图 动态图
RGB LED 灯带的声学频谱控制
如何使用 Arduino 为 RGB LED 灯条构建您自己的音乐可视化器
这是一个教你如何改变 LED 灯条颜色的视频
基于从声音传感器获得的值,信号为
使用具有截止值的一阶低通 IIR 数字滤波器过滤
频率为 900Hz 的滤波信号与多个阈值进行比较
用于确定将基于哪种颜色显示的值
传感器感应到的声音频率,低频声音
(几乎听不见)在 LED 灯条中显示为蓝色,一直到
高频声音(高度可听)在条带中显示为红色。
MainFunction()
主功能
此方法使用“sensorValue”读取声音传感器的输出值
作为浮点数并减去 1023,因为声音传感器提供 1023 或 5V 的输出
当没有感应到任何声音时,这样我们在没有感应到声音时的值为 0
& 值高达 1023 当它感知声音(空气中的振动)时,我们转换信号
到伏特。
FilterSignal()
过滤信号
使用在 Matlab 中创建的一阶 IIR 低通数字滤波器过滤信号
并将值赋给变量“filteredSignal”
CompareSignalFiltered()
比较信号过滤
比较“filteredSignal”变量和“filteredSignalValues”数组
确定我们比较的变量值在哪里小于、大于或介于两者之间,我们的
阈值为 LED 灯条分配颜色并打印代表的颜色
我们设置的。
RGBColor()
RGB颜色()
将代表颜色的 0 到 255 之间的值发送到为每个 RGB 颜色定义的引脚,
我们想要的;在 Google RGB 色轮上搜索以帮助您了解颜色是如何创建的。
版本 1.2
将“filteredSignalValues”数组中的数字顺序从高到低,颠倒并更改
来自“sensorValue”变量的方程,从 1023 - “analogRead(A0)” 到“analogRead(A0)”,以使其成为
更容易阅读。
声音传感器输出 5V 或 1023,当没有声音时从 Arduino 读取为输入,并且声音高,输出 0v
传感器具有反向输出逻辑。