莫尔斯电码通过iPhone LED(Morse Code via iPhone LED)

2019-08-08 07:11发布

我有编码,可以转换普通文本喜欢的应用:“你好,我的名字是XY”

入点和笔划(..-; --.-; - ;等等等等)

现在我想这些点和冲程转换成光闪烁以0.3秒的lenght用于百分点0.6秒中风。 还存在与点的每个点或中风后的长度,每一个字之后的双停顿,并且每个句子之后特里普尔暂停/断一个暂停。

休息时间也暗示了我的代码。

现在的问题是,光招都相差不大,不足以。

因为它背后的想法是通过一个Arduino Duo和一个fototransistor的指示灯闪烁转换回文本。

下面是代码通道用于将光转换过程:

- (IBAction)send:(id)sender{

//将文本转换为摩尔斯电码等

float needTime;
NSString *string = plotter;
for (int d = 0;d < [string length]; d++) {
    NSString *punktoderstrich = [string substringWithRange:NSMakeRange(d, 1)];
    if ([punktoderstrich isEqualToString:@"."]) {
        needTime = needTime + 0.4f;
        [self performSelector:@selector(playpunkt) withObject:nil afterDelay:needTime];
    }
    if ([punktoderstrich isEqualToString:@"-"]) {
        needTime = needTime + 1.0f;
        [self performSelector:@selector(playstrich) withObject:nil afterDelay:needTime];
    }
    if ([punktoderstrich isEqualToString:@" "]) {
        needTime = needTime + 0.4f;
        [self performSelector:@selector(playpause) withObject:nil afterDelay:needTime];

    }
    if ([punktoderstrich isEqualToString:@"/"]) {
        needTime = needTime + 0.3f;
        [self performSelector:@selector(playpause) withObject:nil afterDelay:needTime];

    }
}

- (void)torchAn {
[captureDevice lockForConfiguration:nil];
[captureDevice setTorchMode:AVCaptureTorchModeOn];
[captureDevice setFlashMode:AVCaptureFlashModeOn];
[captureDevice unlockForConfiguration];
}
- (void)torchAus {
[captureDevice lockForConfiguration:nil];
[captureDevice setTorchMode:AVCaptureTorchModeOff];
[captureDevice setFlashMode:AVCaptureFlashModeOff];
[captureDevice unlockForConfiguration];
}
-(void)playstrich{
// AudioServicesPlaySystemSound (outSystemSoundID2);
[self torchAn];
//[self performSelector:@selector(torchAus) withObject:nil afterDelay:0.8f];
}

-(void)playpunkt{
//AudioServicesPlaySystemSound (outSystemSoundID1);
[self torchAn];
//[self performSelector:@selector(torchAus) withObject:nil afterDelay:0.4f];
}

- (void)playpause{
// AudioServicesPlaySystemSound (outSystemSoundID3);
[self performSelector:@selector(torchAus) /*withObject:nil afterDelay:0.4f*/];
}

就像你看,我还进口了声音文件(短期和长期),但主要目标是给一个正确的光信号输出。

我的问题:

短灯大多是好的,exept首当指示灯闪烁首先。 龙光信号是不是真的不再。 有时候,我得到平等的结果,当我记录他们。

和长光后应该亮起以下短的人并不短,正常.. HM ..

我曾评论与声音出来后的部分,整个过程变得更加稳定。 我也感动的部分(打开LED OFF)从签字确认自我的突破。

我希望有人可以给我一些窍门或如此:)

来自德国的问候!

PS:我divice是一个iPhone 4S(火炬^^)

Answer 1:

像布拉德说iPhone的闪光灯需要几毫秒开启。 如果你仍然想使用它的唯一可能性是(在我眼里)更改协议,并给单信号更多的时间。

这会减慢你的传输,但在接收端,你可以定义一些置信区间(如正负2秒)。 也许人类beeing想不明白你的莫尔斯电码,因为它可能是太慢了(但也许他们会),一台机器像iPhone的接收器将完全能够理解。

你要玩的时间间隔找到正在工作的最短的。

从GER问候。



文章来源: Morse Code via iPhone LED