Arduino Dueのアナログ出力でちょっと遊んでみたと思います。
ファミコンの三角波を再現してみます。
この三角波は正確な三角波ではなく、16段階の階段状になっています。
音を鳴らすにはスピーカーが必要です。
Arduinoエントリーキットに入っているような圧電スピーカーが手軽です。
+極をArduino DueのDAC0へ、−極をGNDへ接続してください。
三角波を出力するソースです。
#define RANGE 4095 // 12 bits DAC // 16段階の三角波テーブル unsigned int buffer_tri[] = { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }; void setup() { // DAC解像度12bit analogWriteResolution(12); // 16段階の三角波テーブルをアナログ出力値に変換 for (int i = 0; i < 32; i++) { buffer_tri[i] = (unsigned int)(RANGE * (float)(buffer_tri[i] / 15.0f)); } } void loop() { // 実行開始からの経過時間で三角波テーブルの使う値を計算 int times_us_one = (int)((1000000 / 440) + 0.5); // 440Hz A(ラ)の周波数 int times_mod = micros() % times_us_one; int f_no = times_mod * 32 / times_us_one; // DAC0からアナログ電圧出力 analogWrite(DAC0, buffer_tri[f_no]); }
この出力結果の波形です。
(DSO203 ポケット デジタルオシロスコープでの計測結果)
きれいな階段状の三角波になっています。
これを応用すれば、自作のアナログシンセも作れそうです。
Arduino Dueは少々高価ですが、互換品も検討してみてください。
純正品とAliExpressから$15程で購入した互換品も全く同じ動作をしているので、問題はないと思います。
- 出版社/メーカー: TechShare(テックシェア)
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
HiLetgo DUE R3 ARM 32Bit AT91SAM3X8EA Arduino DUEと互換 ケーブル付き [並行輸入品]
- 出版社/メーカー: HiLetgo
- メディア:
- この商品を含むブログを見る
DSO203 ミニキット 72MHz 4-CH STM32 ポケット デジタル オシロスコープ メタルシェル
- 出版社/メーカー: サインソニック(SainSonic)
- メディア: エレクトロニクス
- この商品を含むブログを見る