前回の記事でRaspberryPiのサーボモータを無事動かすことができました。でもどうせなら計算式などを理解して自分でパラメータを変えたい!とか思ってかなり試行錯誤してみたのですが、内容を理解するのには苦労しました。

そこで、もっと簡単に表現できないかと悩んだ結果、PWMの計算結果を配列に格納しておいて、そこから値を取得するようにしました!

ずるい!w とは思いますが、結果思い通りに動かせればそれで今のところはOKとします。

スクリプトファイルは以下のようにしました。

簡単に解説します。ブラウザのスライダーが操作されるとマクロが呼ばれて「setHwPWMforPan(duty)」に渡されます。

スライダーの値は配列「val2」の中身に変換されてリターンされてきます。はい、これだけです。

なんなら、スライダーの値を直接「GPIO.softPwmWrite」に渡してあげても動くかもしれません。

なぜこの28~0になるのか?というところは前回の記事の計算を行ってみるとそうなります。範囲を調整したい場合は配列に格納する値を「26~2」にしてみるとか、そのように変更してみるとよいと思います。

上記のスクリプトに対応したHTMLファイルがこちらです。

前回の記事と比較してもらえるとわかりますが、今回はスライダーの値(0~28)をそのまま引数として渡しています。こっちのほうが計算が少なくて分かりやすいと思います。

今回はソフトウェアPWMを使用しており、実行するとサーボがガタガタと振動していまいました。ですので、次回はハードウェアPWMを使用してサーボの振動をなくしてみたいと思います。

ブラウザのスライダーでRaspberryPiのサーボモータを動かす(ハードウェアPWM)

ご参考になればと思います。