チーム1667

課題名

明大カラオケ

研究者名

Maito Miyawaki
Masahiro Muraoka
Hiroki Inoue

概要

Enterキーを押すと校歌を歌詞付で演奏する。

詳細

UARTを利用し、画面にPress Enter to play musicという文字が表示された後、開始信号(Enter)を送るとTimer割り込みが開始しスピーカーから校歌を演奏する。
その際、Tera Termウインドウ上にメロディーと同期した歌詞を表示する。
演奏は、PWM16を4つ使用し、それらをEXORで合成することによって疑似的に和音を生成し、
1つのスピーカーから4和音を出力する。
この発想は、ラボlab2_pwm_lcdの ”デジタル的にうなり共振を発生させる” という項目から着想を得た。
かし.png

使用機器

  • PSoC基盤(29466) 1個
  • PSoC MiniProg 1個
  • スピーカー 1個
  • ストレート通信ケーブル 1本
  • ジャンパー線 5本

ソースコード

※900行超と長いコードになったため、畳んでいます +をクリックしてソースコードを表示します

...



考察

  • EXORで2つ以上のまったく同じデジタル信号を合成すると何も鳴らないと予想されたが、音量の大きい潰れたような音が鳴った。これは、PWMの信号が何度もEXORゲートを通過することによりわずかにずれが生じ、ハザードを引き起こして波形を出力しているため完全には打ち消しあわなかったためと予想した。
  • UARTを利用して、開始信号を'y'で送りたかったが、なぜか上手くいかなかったので、バッファ読み込みは行わず、単にポーリングを用いてコマンド終端文字(Enter)を検出することによって演奏を開始するようにした。結果的には解決できなかったが、受信バッファに文字が入っていなかったことが原因かと思われる。
  • Enterキーを何回か押さないとうまく演奏できない場合がある。これは、ポーリングとuartの周期がうまく合っていないためと考えられる。なお、uartは38400bpsで動き、ポーリングはCPU clock(24MHz)に準じた速度で動いている。
  • 可変抵抗を操作してボリュームを変更する機能を追加したかったが、Referenceを見たところPWMにおいて出力電圧を変える機能が見つからなかったため断念した。周期をかなり短くすることによって積分値を用いて音量を変更する手法もあるらしいが、今回は時間がとれないためできなかった。

  • 最終更新:2016-12-21 12:16:42

このWIKIを編集するにはパスワード入力が必要です

認証パスワード