Raspberry PiでRCサーボ制御 ~Wiring PiのsoftServo機能インストール~

先日作ったモータードライブ基板では、RCサーボを2個まで接続できる端子を設けた。
動作確認の際、WiringPiのsoftServo機能を使ったCのプログラムをコンパイルすると、”softServo.h”が見つからないというエラーが出た。

WiringPi関係のヘッダ類は/usr/local/include下にインストールされている様だが、softServo.hだけは見当たら ない。 そこでsoftServo.hをソースディレクトリから/usr/local/includeにコピーしてみた。 そして再びコンパイルするとヘッダは見つかった様だが、今度 は”softServoSetup”等の関数がリンクできないというエラーが出た。

ライブラリ関係は”/usr/local/lib/libwiringPi.so”としてインストールされているが、
’$ nm libwiringPi.so | grep Servo’ コマンドを実行してみても何も出ないので、どうやらこのライブラリ内にsoftServo関係が含まれていない様だ。

そこでソースディレクトリ内の Makefileを見ると、諸々のCソース類やその他の記述がある中、sortServo関係だけは記述されていない様にみえる。 そこでMakefileを次の様に 変更した上で再インストールすると、ライブラリにsoftServo関連の関数が含まれた状態でインストールされた。

pi@raspberrypi ~/wiringPi/wiringPi $ diff -C 1 Makefile.ORG Makefile
*** Makefile.ORG        2013-08-29 12:13:07.683625400 +0000
--- Makefile    2013-09-11 13:41:09.297999252 +0000
***************
*** 49,51 ****
wiringPiSPI.c wiringPiI2C.c                             \
!               softPwm.c softTone.c                                    \
mcp23008.c mcp23016.c mcp23017.c                        \
--- 49,51 ----
wiringPiSPI.c wiringPiI2C.c                             \
!               softPwm.c softServo.c softTone.c                        \
mcp23008.c mcp23016.c mcp23017.c                        \
***************
*** 99,100 ****
--- 99,101 ----
@install -m 0644 softTone.h             $(DESTDIR)$(PREFIX)/include
+       @install -m 0644 softServo.h            $(DESTDIR)$(PREFIX)/include
@install -m 0644 wiringPiSPI.h          $(DESTDIR)$(PREFIX)/include
***************
*** 140,141 ****
--- 141,143 ----
@rm -f $(DESTDIR)$(PREFIX)/include/softTone.h
+       @rm -f $(DESTDIR)$(PREFIX)/include/softServo.h
@rm -f $(DESTDIR)$(PREFIX)/include/wiringPiSPI.h
***************
*** 176,177 ****
--- 178,180 ----
softPwm.o: wiringPi.h softPwm.h
+ softServo.o: wiringPi.h softServo.h
softTone.o: wiringPi.h softTone.h

WiringPiのインストールはこの本を参考にインストールしたのだが、本の例ではWiringPiのバージョンが1.12であるのに対し、実際にインストールしたのは2.13で、どうやらこのバージョンではMakefile内にsoftServo関係が入れ忘れられている様だった。

Raspberry Piで遊ぼう

Raspberry Piで遊ぼう (ラトルズ刊)

以上でテストコードは無事コンパイルでき、RCサーボがシャコシャコ動作する事が確認できた。

Leave a Reply

Your email address will not be published. Required fields are marked *


*