Simulinkサポートパッケージを使ってArduinoUNOのモールス信号発信機を作ってみました。
これたった5分でできるのでぜひお試しください。
電鍵をArduinoの2番ポートにつなぎます、そして8番ポートに圧電サウンダをつなぎます。
Arduinoの内部処理としては常にパルスジェネレータで今回はduty50%で周波数を800Hzにしました。
そして電鍵が接触したときに回路が閉じられ2番ポートがHIGHレベルになるとパルスジェネレータの周波数が圧電
サウンダに出力されます。
回路がオープンの場合ハードウェアとしてはプルダウンしてあるので、0V(LOW)レベルになり、
出力としては0が出力されます。
直観的で簡単なのでわずか5分あればできますが、これがArduinoIDEを使ってコマンドで記述したときには
20分ほどかかりました。それもかなりいい加減なプログラムで・・・
しかしSimulinkサポートパッケージ使えばArduinoで簡単にできますが、ArduinoIDE使った場合とは決定的に
周波数出力の作り方が違い、Simulinkサポートパッケージを使ったプログラムのがこの場合は応用があまり聞かないし
音がきれいでないように思います。
それはサポートパッケージでは制御周期を決めてしまって、デジタルアウトプットポートは通常ならゆっくりとした信号、
例えばLEDのオン/オフの様なものには向いていても高速で特に周波数が変化するようなものには向きません。
ArduinoIDEの場合、Arduino内部タイマをうまいこと使って周波数をtoneという関数で発生させます。
音階としては幅広く扱うことができます。
一方Simulinkサポートパッケージを使った場合というのは、たぶんタイマを使わずに制御周期だけを決めてしまっています。
そのため周波数がゆっくりで固定的なものであれば制御周期とタイミング合わせてデジタルアウトプットポートをうごかすことができます。
しかし、周波数が可変する場合はマルチサンプレートでうまいこと制御周期を合わせないといけないし、
高温の場合はArduinoの制御周期が追いつかないために音がきれいになりません。
1kHzくらいの音で、モールス信号の様に特に周波数が可変しないものの場合はSimulinkサポートパッケージ使って
Arduinoに実装してもさほど問題ないのかなと思います。
この程度のプログラムでもArduinoIDEのがちょっと面倒なんです。
私の場合縦振れ電鍵使ってますが、これは押しボタンスイッチでもかまいません、スピーカーは圧電サウンダの
かなり小さいもの使ってて、たぶん何かのブザーとかそういった組込み用途に使うものだと思いますが、
もう少し大きめで能率の高いスピーカー使うと音はそこそこ大きく聞こえますよ。
ぜひお試しください。
ddd