../


Raspberry Pi でPWM を出力
 Raspberry PiのPWM機能ではサーボモータを制御できない。サーボモーターの制御にはServo Blasterを使う。といわれています。
本当にハードウェア機能でサーボモータ制御のパルスを出すことができないのでしょうか?
できます!

自分で作ったぞ。
証拠映像だ!

20ms周期2ms幅のパルスがでています。

C++で作ったプログラムです。
パルスの周波数は1.15Hzから4.8MHzまで対応しています。
パルス幅の指定は、

SetPwmByFreq(2.0, 50);
2.0Hz,duty 50%で指定する。

SetPwmByMilliSec(20, 1.5);// 0 deg
20msecの周期、1.5msecのパルス幅で指定する。

と直感的になっています。

ソースファイル
必要なファイル
gpio.h
gpio.cpp
です。

使い方は簡単です。
main.cpp

#include "unistd.h"
#include "gpio.h"
int main()
{
      Gpio gpio(0);
      gpio.SetPwmByMilliSec(20, 1);//-60 deg
      gpio.StartPwm();
      usleep(500000);
      gpio.SetPwmByMilliSec(20, 1.5);// 0 deg
      gpio.StartPwm();
      usleep(500000);
      gpio.SetPwmByMilliSec(20, 2);// 60 deg
      gpio.StartPwm();
      return 0;
}
実際、秋月さんで買ったサーボをつないでやってみると、安定して動作しました。