PWM波を発生する周期関数を使ってスピーカから音を出します。
タイマとして使いたいので、経過時間が指定値を超えたら音の発生を有効にします。

ソースコードやプロジェクトファイルのダウンロードはこちら →beep.zip

ブロック図
プログラム
proc
{
    time = currTime();                  // 経過時間が
    amp = time > (60*min + sec);        // 設定を超えると amp=1 となる

    beep = w_pwm( 0.5, 1/fB, 0, 1 )     // 周波数 fB のビープ音を
         * w_pwm( 0.2, 1/fI, 0, amp );  // 毎秒 fI 回発生させる

    Dout( 0, 0.5, beep );               // デジタル出力
}
説明

PWM波発生関数を2つ使って、ビープ音を間歇的に発生させます。 2つのPWMのうち一方の振幅を信号 amp で与えます。amp の初期値は 0 ですが、 パラメータ min と sec で指定した時間を超えると 1 になり、ビープ音を繰り返し発生します。

以下の関数、信号、パラメータを使っています。

関数
(予約語)
 w_pwm PWM波を発生させる関数です。
 currTime 運転開始からの時刻を与える関数です。
 Dout デジタル出力ポートへ電圧を発生させる関数です。
信号  time運転開始からの経過時間です(単位は秒)
 amp発生させるPWM信号の振幅です
amp>(60*min+sec) なら amp=1、それ以外で amp=0 になります
 beep発生音の信号です
パラメータ  min, secタイマの設定時間を「分」+「秒」で与えます
 fBビープ音の周波数[Hz]です
 fI間歇的に音を出す周波数[Hz]です

設定例 運転開始10秒後にビープ音を発生させます。

作成:2015年1月29日