Arduino MORSE DECODER Ver2

2016年7月9日 JH7UBC


Arduino nanoの互換機とLCD 2004を使ってモールス符号解読器を作ってみました。

Arduino nanoとLCD 2004との接続は、次のとおりです。

和文も解読可能です。[ホレ]を受信すると和文モードになり、LEDが点灯します。
和文モードで[ラタ]を受信すると欧文モードに戻ります。
ただ、[ラタ]は、訂正符号としても使われますので、和文交信中に訂正符号[ラタ]を受信すると欧文モードになってしまいます。
そこで、強制的に和文モードと欧文モードを切り替えるために、モード切り替えスイッチSWをつけました。

モールス符号解読のしくみを簡単に説明します。
入力ピンD2はプルアップされています。無信号時は1、信号があると0になります。

内部コードは、初期値をX=00000001(スタートビット)として
短点なら単に左に1ビットシフトします。(X=X<<1)
長点なら左に1ビットシフトし、1とORをとります。(X=X<<1; X=X|1;)
信号が入るたびにこれを繰り返すことで、モールス符号を内部コードに変換します。
例 A(・−)の場合、X=00000101になります。

あらかじめ、内部コードの値に対応する配列に文字のコード(アスキーコード、またはLCDのROMコード)を
格納してありますので、内部コードが分かれば、欧文コードまたは和文コードを得ることができます。
例 AsciiCode[X] またはWabunCode[X]
このコードをLCDに書き込めば目的のモールス符号に対応する文字を表示することができます。
なお、LCDの表示ルーチンは、OZ1HJM CW decoder1のスケッチを使わせていただきました。(TNX for OZ1HJM)

短点の長さをその都度取り込むことによって、モールスの速度の変化に対応するようにしました。
ただし、速い速度から急に遅い速度になるとTが連続的に表示され正しくデコードしません。
今後改良したいと思います。

参考までに、今回のスケッチはこちら(テキストファイル)

inserted by FC2 system