「こんにちは、私の名前は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 (トーチ付き ^^)