マイクロマウスの地方大会連荘+読売工学フォーラム講演であっちこっち飛び回っているyukiです。
スタッフが新しいキットのデモをしたいとのことでお願いにきました。
それで、Raspberry Piのキット用デモ3種を作らせていただきました。
作ったのは前にも書いたスイッチと、LEDの明滅、そして、RCサーボを動かすデモです。
今回は、RCサーボでどっぱまりだったので、その顛末をRPG風に書こうとおもいます。
まぁ、聞いてくださいよ。
明日、デモをやりたいと言うので、まぁ、1時間くらいで書いて確認までいけると思い、会社の帰り際に新しいSDカードをおろして確認したところ、起動してエラーが出まくる。
えええ、デモ用これしかないのにぃ。
何も入れてないのにアップデートすらできないということで、とりあえず原因究明をしようと自宅に持って帰りました。
家に帰って、どらどら、何が起きているのじゃ?とRaspberry Piを起動し、原因をさぐるとどうやらSDのフォーマットエラーっぽいかんじ。
SDのサイズを見るとなんと57MBしかないとおっしゃる。
4GBのSDをつかっていたのです。
ディスクのあまりが57MBぢゃないですよ?使用領域が57MBですよ?
いやーな予感の幕開けです。
しょうがないなぁと、おもむろにSDを軽くフォーマット。
ここまでが1時ごろ。
SDのフォーマットは普通のWindowsのフォーマットじゃなくて、専用のフォーマッターを使います。
簡単にイレースフォーマットして、再度インストールしたらやはりエラー。
何じゃこりゃーとイレースフォーマット、上書きフォーマットとまっさらにして、再度インストール。
やっと動きましたわ。ほっ。
そして、キーボードの設定をし、アップデートをかけ、RCサーボを使うには、wiringPiを使いますからgitをインストールしました。
wiringPiをgitからもらってきて、buildし、インストール完了。
そしてプログラムを書いて、眠い目をこすりながら、gcc -o servo servo.c -lwiringPiとしてコンパイルしたところ。
なんと、コンパイルが通らぬ。
なんだとー!と夜中の2時に自宅で叫び。
#自分の書いたプログラムが間違っているとはちっともおもわないyukiでした。
ここからはRPG風に書いてみます。
コンパイラ様は、こんなことをおっしゃった。
#include <wiringPi.h>はとおす。 #include <softServo.h>なんてもんはないのぢゃ。
「ぐぬぬ、もしやincludeのpathが通ってないのか?」とユーザーyukiは思った。
ユーザーyukiはpathを通す呪文を加えて唱えた。
gcc -o servo servo.c -lwiringPi -I/usr/local/include
やはり、コンパイラ様は、こんなことをおっしゃった。
#include <wiringPi.h>はとおす。 #include <softServo.h>なんてもんはないのぢゃ。
ユーザーyukiは、「なにぃ!」と叫んだ。
そして、ユーザーyukiは呪文を唱えた。(ファイルが存在するかどうかを探すコマンドです。)
find /usr/local/include -name “softServo.h” -print
しーん
ファイルが出てこない。
たしかにないようだ。
「wiringPiは普通にインストールできたはず。
そもそもこのバージョンからはsoftServoライブラリはサポートされていないのか?」
とユーザーyukiはおもった。
ユーザーyukiは、ディレクトリ/home/wiringPiに移動した。
ユーザーyukiは、調べる呪文を唱えた。
vi ./build
「むむ、ここにはそれらしき記述はないようだ。」
そして次にユーザーyukiは、ディレクトリ /home/wiringPi/wiringPiに移動した。
ユーザーyukiは、lsの呪文を唱えた。
ファイルの一覧が表示された。
「あれ?softServo.cはある。」ユーザーyukiはつぶやいた。
「これはもしや。」
ユーザーyukiは呪文をとなえた。
vi ./Makefile
ユーザーyukiは気づいた。
「あれれ?softServo.cをコンパイルする記述が一個もない。これか。」
ユーザーyukiは、切った貼ったをし(≒記述を追加し)、:wqでファイルを閉じた。
ユーザーyukiは、/home/wiringPiに移動した。
ユーザーyukiは、呪文をとなえた。
./build
コンパイルがたんたんと進む。
そのうちにsoftServo.cをコンパイルする表示も現れた。
ユーザーyukiはラスボスが倒されるのを見届けて、/homeにもどった。
gcc -o servo servo.c -lwiringPi
コンパイルは一瞬でおわった。
ラスボスは倒されたようだ。
ユーザーyukiは満足そうに呪文を唱えた。
sudo ./servo
サーボは無事動いた。
これでこのRPGは終わる。ちゃんちゃらんらーん。
夜が白々と明け始めていた。
なぜだ。
こんなはずではなかったのに。
途中で30分くらい、いや、もっとか?寝オチしてたのは内緒だ。(ここに書いたら内緒ぢゃないぢゃないか。)
実際、ソフト部分は1本書くのに回路も含めて10分かからんかったですよ。
それなのに、なんという罠が仕込まれていたのか…
wiringPiでRCサーボを動かそうとおもった諸君、今のバージョンではデフォルトで入ってないので要注意ですよ。
(ちなみに、前のバージョンではデフォルトで入ってました。なので、下記の本には追加の方法は書いてないですよ。)
え?どこを直したかって?
眠くて、Makefileをこぴってないので、それはまた後日サルベージしてきます。
ではでは
Raspberry PiタイプB OS入りSDカード付 wiringPi入れてないけど。 |
今回使った基本のキット |
今回使ったサーボのキット |