測定や実験用の信号発生器(ファンクションジェネレーター)を自作しようとすると、専用ICや外付けDACが必要になりがちだ。しかしArduino Uno R4 WiFiには12ビットのDACとLEDマトリクスがオンボードで搭載されており、外付け部品なしに波形生成と表示を完結させられる。
制作者のRonFrteki氏がInstructablesで公開したプロジェクトは、その可能性を手軽な形にまとめたものだ。正弦波・方形波・三角波の3種類を出力できる波形ジェネレーターで、外付けハードウェアはロータリーエンコーダー1個だけで動作する。
Arduino Uno R4 WiFiのDACは12ビット分解能(0〜4095ステップ)を持ち、A0ピンから0Vから最大約3.3Vのアナログ電圧を出力する。エンコーダーを回すと周波数が変わり(0〜100の範囲)、ボタンを押すたびに波形の種類が切り替わる。現在の波形の種類は内蔵LEDマトリクス上にアイコンとして表示され、エンコーダーを回している間は周波数の数値も表示される。オシロスコープがあれば出力波形を直接確認できるが、なくても動作自体は問題ない。
プログラムにはArduinoのビジュアルプログラミング環境「Visuino」を使用しており、ロータリーエンコーダーセンサー・アナログMux・サイン/方形/三角の各波形ジェネレーターコンポーネントをGUI上で配線するだけでコードが自動生成される。回路側はエンコーダーのCLKをD3、DTをD4、SWをD2に接続するだけで完成だ。
完成したコードはVisuinoからそのままコンパイル・書き込みが可能で、Visuinoプロジェクトファイルも配布されている。波形アイコン用のビットマップ画像(正弦波・方形波・三角波)もLEDマトリクスのサイズに合わせて用意されている。
Uno R4の内蔵DACをここまでシンプルな構成で活かした作例は少なく、ボード単体の可能性を確認するプロトタイプとしても参考になる。