如何用iphone麦克风输入开关来计算车轮转数?

时间:2013-04-11 21:31:52

标签: ios audio input microphone jack

我正在开发和应用程序,我想测量轮子的转弯。我买了一个便宜的自行车里程表,它使用磁铁开关来计算自行车车轮的转数,当磁铁足够接近传感器时,它会每圈关闭一次电路。我想到了将这个磁铁开关添加到iphone耳机的麦克风电路,然后使用音频框架来管理麦克风的连接,制作一个开关,可以在麦克风连接或未连接时识别,然后用它来制作计数器。我可以进行切换的方式是使用带有[AVCaptureDevice]类的AVFoundation框架,因为我发现在[this-post]回答问题之后区分外部和内部麦克风的唯一方法。

我从代码中粘贴一段摘录来测试交换机。计时器循环中的代码。

NSString *name;
static int micSwitch=0;
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio];
    for (AVCaptureDevice *device in devices) {
        name = [ device localizedName];
    }
    if ([name isEqual:@"iPhone Microphone"]) {
        micSwitch=0;
    }
    else{
        micSwitch=1;
    }

但是,此开关更新速度比我需要的慢。根据我的估计,开关需要在不到1.5ms的时间内更新。有人可以更好地了解如何使用音频插孔输入

1 个答案:

答案 0 :(得分:0)

不是将簧片开关连接到麦克风电路,使其实际连接和断开耳机,而是让开关直接在麦克风线路上产生噪音并处理音频输入。根据线路的噪声程度,您可能需要对输入的音频数据应用一个非常短周期的平均滤波器,以便可靠地检测尖峰。

如果你不能让簧片开关产生一个足够长且嘈杂的尖峰,因为它会弹开/关闭,那么一个小线圈就可以将磁铁连接到方向盘上。

更新:我发现这个教程用于检测吹入麦克风的噪音尖峰 - 从簧片开关或线圈检测咔嗒声的原理应该是相同的(具有更短的检测窗口)并且代码将非常相似。

http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/