Software PWM ライブラリを作ってみた。

Arduino公式のSoftPWMを使ってみようと思って調べてみたら周波数が固定かつ低すぎる(60Hz)のとタイマー割込みを使ってるためボード依存があるのが気になったので全てのArduinoで使える汎用的なものを作ってみた。

波形は計算処理のみで作っているため最大周波数/分解能/精度などはCPUの処理能力に大きく依存する。また、パルス出力中はCPUを占有するため実用的ではないかもしれないが台形駆動もサポートしているため実験用として使うにはいいかもしれない。

armなどの32ビットCPUならまだしもさすがにavrなどの8ビットCPUにはかなり辛そうな計算処理ではあるが...それでもavr/16MHzで最大1KHz程度まで、samd21/48MHzなら5KHz程度までは使えそう。

【avr/16MHz-1KHzで台形駆動】

【サンプル・スケッチ】

【ライブラリ】