今回は、Raspberry Pi(ラズパイ)で電波時計を合わせるためのプログラム「waveclock.c」を紹介していきましょう。40kHzの発振はすでに成功しているので、基本はその延長です。プログラムの先頭から順にリストを掲載します(本記事で登場する全ソースコードはここからダウンロードできます)。

 図5に示したgen_pulse()関数は、引数で指定したミリ秒だけ40kHzの信号を出す関数です。ループ1周で約24μ秒のパルス、つまりGPIOのオンオフを出すので、指定されたミリ秒に40を掛けた回数だけループを回しています。

図5●waveclock.cのgen_pulse()関数
[画像のクリックで拡大表示]

 例えば、gen_pulse(200);と呼び出すと、200ミリ秒の間、40kHzの信号を発生させます。

 図6に示したtransmit_timecode()は、引数に指定した整数配列の内容に従って電波時計のタイムコードを送信します。

図6●waveclock.cのtransmit_timecode()関数
[画像のクリックで拡大表示]

この先は会員の登録が必要です。有料会員(月額プラン)は申し込み初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら