if (divider !== 0 && (divider & (divider – 1)) !== 0)

nodeはnpmで提供されているパッケージが豊富なのが魅力ですが、メンテされていなくて現状では使えないものも多いです。GPIO割り込みとハードウェアPWMも対応を謳っているパッケージがそれぞれいくつかあります。が、いろいろ試して見ていずれも事実上一択状態でした。GPIO割り込みが使えそうなのは、pidriver、onoff、rpi-gpioです。試して見たところ、pidriverはコンパイル失敗、rpi-gpioは動くには動くけれどもドキュメントが意味不明でした。onoffはちゃんと動作するし、ドキュメントもわかりやすいです。APIも使いやすそうなのでこれで行こうと思います。onoffハードウェアPWMが使えそうなパッケージは沢山ありましたが、インストールできた、サンプルコードで動いたのがrpioのみでした。WiringPiの設定を踏襲しているので、CでWiringPiを使った経験があるのであれば、移行もスムーズだと思います。rpioちなみにClockDividerの設定で2の累乗以外を設定すると怒られるのですが、WiringPiで使用していた時に2の累乗以外でもちゃんと動いていて、正確な周波数になっていました。圧電ブザーの発振に使いたいので、正確な音程を出すためには中途半端な数を設定したいです。そこでrpioのコードを修正して、引数のチェックを外しました。node_modules/rpio/lib/rpio.jsの516行目あたりです。

rpio.prototype.pwmSetClockDivider = function (divider){/*"

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です