1

「こんにちは、私の名前はXYです」のような通常のテキストを変換できるアプリをコーディングしました。

ポイントとストローク ( ..-. ; --.- ; . ; - ; など)

次に、これらのポイントとストロークを、ポイントの場合は 0.3 秒、ストロークの場合は 0.6 秒の長さのライト フラッシュに変換します。また、各ポイントまたはストロークの後にポイントの長さの一時停止、各単語の後に 2 回の一時停止、各文の後に 3 回の一時停止/ブレークがあります。

休憩は私のコードにも含まれています。

問題は、軽いストロークが十分に異なっていないことです。

その背後にあるアイデアは、Arduino Duoとフォトトランジスタを介してライトフラッシュをテキストに変換することです。

光変換プロセスのコード パッセージは次のとおりです。

- (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 をオフにする) をサイン自体からブレークに移動しました。

誰かが私にいくつかのヒントを教えてくれることを願っています:)

ドイツからご挨拶!

PS: 私のデバイスは iPhone 4s (トーチ付き ^^)

4

1 に答える 1

1

ブラッドが言ったように、iPhoneのフラッシュをオンにするには数ミリ秒かかります。それでも使用したい場合は、(私の目には)プロトコルを変更して単一の信号にもっと時間を与えることが唯一の可能性です。

これにより送信速度が低下しますが、受信側では、信頼区間(プラスマイナス2秒など)を定義できます。おそらく人間の蜂はあなたのモールス信号を理解できないでしょう。なぜならそれは遅すぎるかもしれないからです(しかしおそらく彼らはそうするでしょう)、受信機としてのiPhoneのようなマシンはそれを完全に理解することができます。

動作している最短のものを見つけるために、時間間隔をいじくり回さなければなりません。

GERからのご挨拶。

于 2013-01-26T10:12:45.177 に答える