先日作ったモータードライブ基板では、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関係が入れ忘れられている様だった。
以上でテストコードは無事コンパイルでき、RCサーボがシャコシャコ動作する事が確認できた。

