0

我正在开发和应用程序,我想测量车轮的转数。我买了一个便宜的自行车里程表,它使用一个磁铁开关来计算自行车车轮的转数,当磁铁离传感器足够近时,每转一圈就会关闭一次电路。我的想法是把这个磁铁开关添加到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 的时间内更新。有人有更好的想法,我该如何使用音频插孔输入来做到这一点?

4

1 回答 1

0

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

如果你不能让簧片开关在它打开/关闭时产生足够长且嘈杂的尖峰,那么在它的位置放置一个小线圈应该可以将磁铁连接到车轮上。

更新:我发现本教程用于检测吹入麦克风的噪声尖峰 - 检测簧片开关或线圈咔哒声的原理应该相同(检测窗口更短),代码将非常相似.

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

于 2013-04-11T22:20:01.223 回答