質問: androidのイヤホン端子でモータを制御しようとしていて、イヤホン端子からPWMを出力する方法を探しています。 周波数はある程度高周波であればあまりこだわりません。
回答: 生成した音声バッファを直接再生できる android.media.AudioTrack はいかがでしょうか。 指定された長さ・周波数・デューティ比で矩形波を生成できるクラスを作成し、AudioTrack.OnPlaybackPositionUpdateListener 内の AudioTrack.onMarkerReached()が呼び出されるたびに波形を生成して流し込めるようにすればよいでしょう。 気をつけるべき事項 * 生成波の理論的最高周波数はサンプリングレートの1/2 例えばCDと同じ44.1[kHz]で波形を出力する場合は、標本化定理から22.05[kHz]での出力が最高の周波数になります。ただ、この周波数に近づくにつれて波は台形に近くなり、最終的に三角波になります。(数kHzで必要十分だとは思いますが) * 波形バッファの長さは周波数に合わせて変える ブラシレスモーター(特にステッピングモータ)の場合は、周波数が高くなると脱調しやすくなります。波形バッファが波長の整数倍でない場合、Listenerによってバッファを流し込む継ぎ目のところだけデューティ比が変わり、脱調を引き起こすかもしれません。 Androidでシンセサイザーやシグナルジェネレータを作っている人のサイトが多数存在するので、検索してみることをおすすめします。