• ベストアンサー

モールス信号をLEDで光らせるプログラムです

プログラムの問題の回答、ヒントを教えてください。 モールス信号をLEDで光らせる問題です。 使用する関数は、void dit()、void dah()、void br()、void morse(char ch)です。 Switch-case文を用いて実装します。 送る文字は、A・B・O・S・Tです。 モールス符号は、 A(・ー) B(ー・・・) O(---) S(・・・) T(ー) です。(点灯の速度は、・ーの差が表せれば時間や間隔は自由です)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>ditが短で、dahが長ですね. あとBRが、とんつーの境界なのか、 1セットを終わった後の境界なのかが、わかりませんが。 適度に突っ込めば、一応OKじゃないでしょうか。。 実際には、Switchなんて本気なら使いませんがね。 テーブルと言って、一か所に集めて一気に送り出すほうが、 効率はいいとは思いますが。 あくまで「テスト」系問題なのかな?という意味での回答です。 後は、すきに、いじくってみてください。

omae_sutekiyan
質問者

お礼

回答ありがとうございます。 返答遅れてしまってすみません。 なるほど。参考にさせていただきます。

その他の回答 (1)

回答No.1

>使用する関数は、void dit()、void dah()、void br()、void morse(char ch)です。 この関数の中身がわからないので、何とも言えないのですが。 void morse(char ch) こいつが恐らく受け関数でしょうね。 問題はこいつ・・・ void dit()、void dah()、void br() ditとdahのどっちが、長と短なのか、わからないですよね。。 brがブランキングの意味なら、各caseの最後に入れればOKでしょう。 なので、 void morse(char ch) { switch(ch) { case 'A':dit();dah();br(); break; case 'B':dah();dit();dit();dit();br(); break; case 'O':dah();dah();dah();br(); break; case 'S':dit();dit();dit();br(); break; case 'T':dah();br(); break; default:/*何もしない*/ break; } ditとdahが逆なら、入れ替えてください。 大雑把、こんな感じじゃないですか?

omae_sutekiyan
質問者

お礼

回答ありがとうございます。ditが短で、dahが長ですね...(説明不足でした、すみません...。) とても参考になりました。

関連するQ&A