Arduino(8) Tone()関数を使って割り込み制御


 近くの本屋さんで本を見ていたら、「ふ!と気がついた」 。本当にArduinoには、時間待ち関数は有るが、周期的イベントを発生するタイマ関数はないのか?
 Arduinoの本当の姿は、ただのマイコンだ!ただ、使いやすくするために関数でラッピングされている。プログラムと言わず、スケッチと云っている。タイマは、なんと云ってるのか?PWMか?Toneか?言葉に目くらませされている。

 と云うことで、考えました。

 PWMは、頻繁にプログラムの介入がいる。Toneは、出力時間を指定する引数はオプションだ。付けなければ連続に出力すると解説書にはあるので、早速実験です。


●実験の概要

 実験の構成と発振波形を次に示します。
 Tone()の出力信号は、100Hzで、Arduinoのディジタル2に接続しました。











●試験結果とスケッチ

 動作は、1秒間の割り込み回数をカウントして、プリントアウトする様にしました。
 結果は、次の様に100〜101カウントで、シンクロスコープで確認した値と一致します。

 下に示すスケッチの内容は、Setup()関数に 「tone(3, 100);」を追加しました。
 割り込み関数ではカウントだけをしています。
 LOOP()では、カウンタをクリアしたら、1秒間停止した後カウント値をプリントアウトしています。












ホームへ戻る