arduino信号模式匹配

arduino信号模式匹配,arduino,Arduino,我有一个麦克风连接到arduino的模拟输入端。此麦克风通过电阻器连接到+5V 我想做的是检测麦克风上的“敲击”,用户将播放一个序列(如鼓手)。arduino必须识别这是否为良好序列(抽头之间的持续时间)。但我们可以有一个用户,这将使序列更快 我不知道从哪里开始。我不认为FFT是一件好事,因为速度会有所不同 谢谢忘记FFT Arduino Uno没有足够的内存用于此算法。。。即使你能让它适合你,你也不会为你的应用程序留下任何内存。。。使用模拟积分器代替 一个带有电容器和电阻的运算放大器,在Mic

我有一个麦克风连接到arduino的模拟输入端。此麦克风通过电阻器连接到+5V

我想做的是检测麦克风上的“敲击”,用户将播放一个序列(如鼓手)。arduino必须识别这是否为良好序列(抽头之间的持续时间)。但我们可以有一个用户,这将使序列更快

我不知道从哪里开始。我不认为FFT是一件好事,因为速度会有所不同

谢谢

忘记FFT
Arduino Uno没有足够的内存用于此算法。。。即使你能让它适合你,你也不会为你的应用程序留下任何内存。。。使用模拟积分器代替
一个带有电容器和电阻的运算放大器,在Microphone和arduino输入端之间的反馈中就可以实现这一点

当用户点击时,输出将变高,并且需要相当长的时间才能再次变低。您可以测量它上升和再次上升之间的毫秒数…

一个简单的状态机,检测高峰,初始化一个计数器,等待信号变低,等待它再次上升,停止计数器可以做到这一点。。。有很多方法可以做到这一点。。。要有创意


我不会给你数字,因为你可能需要根据你认为的节拍,你的麦克风的阻抗,你的ARDUINO的反应时间……/P>来调整你自己,一个“TAP”是一个相当独特的信号,高振幅,锐利的边缘——如果ARDUINO足够快地读取模拟输入(我想它确实如此),然后可能只是将输入与一些预定义(硬编码)阈值进行比较,以检测信号,而无需任何FFT或复杂处理。然后,做持续时间的逻辑。编写一个与按键完美配合的例程,然后找出如何转换硬件,这应该相对简单,将
if(digitalRead(pin)==hi)
替换为
if(analogRead(pin)>600)
谢谢,但是你认为opamp真的有必要吗?