【问题标题】:Morse Code via iPhone LED通过 iPhone LED 的摩尔斯电码
【发布时间】:2013-01-25 18:20:55
【问题描述】:

我编写了一个可以转换普通文本的应用程序,例如:“Hello my Name is XY”

分为点和笔画(..-. ; --.- ; . ; - ; 等等)

现在我想将这些点和笔画转换为闪光,点的长度为 0.3 秒,笔画的长度为 0.6 秒。在每个点或笔划之后还有一个点长度的停顿,每个单词之后有一个双停顿,每个句子之后有一个三重停顿/中断。

我的代码中也隐含了中断。

现在的问题是轻描边不够不同。

因为它背后的想法是通过 Arduino Duo 和 fototransistor 将 Light 闪烁转换回 Text。

这是光转换过程的代码片段:

- (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*/];
}

如您所见,我还导入了声音文件(短和长),但主要目标是发出正确的灯光信号。

我的问题:

短灯大多是可以的,除了 LED 首次闪烁时的第一个灯。 长光信号实际上并不长。有时我在录制它们时会得到相同的结果。

并且在长灯之后应该亮起以下短灯不正常短..嗯..

在我注释掉声音的部分后,整个过程变得更加稳定。 我还将部件(关闭 LED)从它自己的标志移到了休息处。

我希望有人能给我一些小费左右:)

来自德国的问候!

P.S.:我的设备是 iPhone 4s(带手电筒 ^^)

【问题讨论】:

  • 手电筒并不是真的要以这种方式快速打开和关闭,因此对于这些短脉冲,它可能永远不会具有您想要的那种精度。您是否考虑过使用 iPhone 屏幕,并在全白和全黑之间闪烁?这可能仍然会为您的传感器提供足够的照明来检测。
  • 传感器的检测值介于 0 到 1024 之间。当我直接握住手电筒时,我得到的值在 180 到 280 之间。当我只使用全光显示器时,我只能得到 13- 17 太少了。因为如果您所在的房间已经有杂散光,则该值已经高于此值。所以我会得到很多错误的解密..但是感谢您的意见! :)

标签: iphone led morse-code


【解决方案1】:

就像布拉德说的那样,iPhone 闪光灯需要几毫秒才能打开。如果您仍然想使用它,唯一的可能性是(在我看来)更改您的协议并给单个信号更多时间。

这会减慢您的传输速度,但在接收方,您可以定义一些置信区间(例如加减 2 秒)。也许人类无法理解你的摩尔斯电码,因为它可能太慢了(但也许他们会),像 iPhone 这样的机器作为接收器将完全能够理解它。

您必须调整时间间隔才能找到最短的有效时间间隔。

来自德国的问候。

【讨论】:

  • 谢谢你们俩。我现在玩了一点间隔,并认出了两件事。第一个标志只有一半,因为我需要打开手电筒。也许我在那里添加了一个长符号(比笔画长)来表示我现在开始的对面并初始化手电筒。在那之后,在停顿或长期强势之后,空头迹象也能完美发挥作用。真正的问题是从一点到另一笔……因为像“ - - - ”这样的笔画只有“ . - ”才能完美地工作。 - 开始之前的休息时间太长了,并且从笔画中“钢化”了时间!
  • 再次延长间隔开始调试! ( > 5 秒)
  • 就像我认为问题仍然存在。我将点设置为 1 秒,将行程设置为 2 秒,将休息时间设置为 1 秒。中风仍然存在描述的问题,我不知道如何解决它..
  • 尝试将休息时间设置得比其他时间长很多(比如 5 秒)!
猜你喜欢
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多