第7回Arduino同好会
みなさんこんばんは、松です。
自宅に使っていないMake本は着々と増え続けているのに、スキルは遅々として向上していません。
今月もまたアナログシンセ自作本を買ってしまいました。
O'Reilly Japan - Make: Analog Synthesizers
お盆の長期休みに実家に持って帰って取り組みますかね。
Arduino同好会は今月も活動を行いました。
今回は、超音波センサHC-SR04と、サーボモータを同時に動かすことに挑戦しました。
まずは、今回の成果物をご覧ください。
※動画の最後に音が出ます。ご注意ください。
動作を文章にすると下記のようになります。
1.超音波センサが前方にある障害物との距離を測定する
2.距離が一定以下になるとサーボが動作して首を振る
3.超音波センサが周囲の障害物との距離を測定する
動画では手で物を動かして、超音波センサに近づけています。
物が一定距離まで超音波センサに近づくと、サーボモータが首を振っています。
この一連の動作を行うモジュールを、自走式車両に搭載することで、
前進→前方に障害物検知→停止→障害物がない方向に向きを変える→前進
という動作を実現させます。
超音波センサとサーボモータ、それぞれ単独での動作は、
前回までの活動で実現させていたのですが、
今回ポイントとなったのは、超音波センサとサーボを同時に動かすことでした。
特にサーボが首を振っている間に、超音波センサはある程度の周期で動作して、
周囲の障害物との距離を測定しなければなりません。
いわゆるマルチタスクですね。
実装のために、今回は割込み処理について学びました。
情報としては、下記のサイトを参考にしました。
500[ms]周期で超音波センサが前方障害物との距離を測定しつつ、
障害物との距離が一定以下になったら、サーボが動作するという流れで前述の処理を実装しました。
次回からは、これに加えて車両を走らせるためのモータも絡んできます。
文章にすると単純な動作でも、実装してみると難しいものですね。
今回、印象的だったのは自分と、(本)さん(塩)くんとで、
考えていた超音波センサ&サーボの動作が異なっていたことです。
自分は当初、サーボが常に動き続ける物と想定していたのですが、
(本)さんと(塩)くんは、今回実装した動作を想定していました。
要件定義やプロジェクト管理の本では、要件定義に時間をかける重要性が説かれていることが多いですが、
こういった齟齬は容易に発生して、それを防ぐことが、スムーズに開発を進める上でのキモであるということなのだなと思いました。
次回は、8月の長期休み期間での活動を予定しています。
全モジュールが合体する往年の子供向けロボットアニメではまさに山場。
せっかくの長期休み、事前準備もしっかり行って、
次回は走ってる姿をお見せできるようにがんばっていきたいと思います。