Article header library 129757  1

[お掃除ロボ/たぼ] 第4話 マイコンは非情さ、、、。

こんにちは!たぼ です!

前回の [お掃除ロボ/たぼ] 第3話 こいつ、動かないぞ!?では、ハード部分のデバッグの様子をご紹介しました。

ついにこのブログも半分を過ぎ、残すところ2話になりました。今回は、第4話です!

ハード製作も終わり、後はソフト設計を終わらせるだけだ!と、テンションが高い状態でソフト設計に移りました。しかし、この後私は、ポジティブな性格を打ち砕かれることとなりました。

今回は、そのソフト設計で苦戦する様子をご紹介いたします!どうぞご覧下さい!

ソフト設計の魔の手「A/Dコンバータ」

これまでの話で触れてきましたが、ソフト設計でまず取り組んだことは、A/Dコンバータの設定です。

壁との距離情報を出力する赤外線センサはアナログ出力、その情報を受け取るマイコンはデジタル出力でなければ受け取れません。したがって、センサとマイコンの間にA/Dコンバータが必要です。

今回使用するマイコンは、プログラミングすることでA/Dコンバータの機能を設定することができます。実際にそれを使うことにいたしました。

赤外線センサからは0~2.5Vが出力され、A/Dコンバータを使用することで、その電圧値を12bitの2進数(10進数にすると、0~4095)に変換します。

Article header library 129757 pic01  1

センサーからマイコンへの信号のやり取り

今回の方針としてはサンプルプログラミングを解読し、自分の使いたいようにプログラミングを書き換えるということにしました。

単入力は簡単!

まずは赤外線センサ1つに対して、A/D変換できるかを確認します。

これに関しては、時間はかかりましたがなんとか実現することができました。
(下記写真は、1つのセンサのセンシング距離を、マイコンキットに搭載されている液晶画面に表示させる設定のもとでの結果)

Article header library 129757 pic02  1

マイコン A/Dコンバータ 単入力処理

複数入力も簡単??

単入力に対しての処理は、簡単に終わらせることができました。
しかし、設計上センサは8つ使用しますので8つの入力に対する処理をしなければなりません。
そこで、単入力のプログラミングを複数入力に対してもA/D変換できるように設定することにしました。

私の苦悩はここから始まりました。

どうやれば複数入力に対応させることができるかを、ひたすら調べたり記述を変えたりしました。
しかし、私のあらゆるチャレンジはうまくいくことはありません。
ここまで絶望を味わうことになるとは思ってもいませんでした。

単入力が簡単だったので、複数入力でも簡単にいくと思っていた私が愚かでした、、、。

見えた!希望の光!!

まるで、嫌いな食べ物をひたすら食べさせられるのに似た心境です。
しかし、食べ物を食べなければ生きてはいけません。

絶望に打ちひしがれながら毎日毎日、複数入力のA/D変換をクリアするために試行錯誤を繰り返していました。

するとある日、ついにこの迷宮の中から抜け出せるときがきました!
なんと、使用するマイコンとは異なるマイコンのサンプルコードの中に、複数入力に対応するサンプルプログラミングがあったのです!
これを調整することで、ついに実現することができました。

下の写真は、成功したときの結果です。

Article header library 129757 pic03  1

マイコン A/Dコンバータ 複数入力処理

表の中の、samples[0]~[7]はそれぞれ、写真の左から順に並んでいるセンサの読み値です。
距離と読み値は比例していて、対象物の距離が近いsamples[0]~[3]は読み値が比較的大きくなっています。
このプログラミングを使用していこうと思います。

第2の魔の手「タイマー」

A/Dコンバータの設定が終了したので、次のソフト設計に移ります。
次のステップとしては、仕様検討で挙げた「動作開始から3分経過後、動作ストップ」を実現するための3分タイマーの設定です。

ここでも同様に、何度も絶望を味わいました。
絶望を味わったコンテンツをご紹介しましょう。

  • TIMERの設定がわからない
  • TIMER設定に成功したライバルと同じプログラミングをするも、動作せず
  • RTCがA/Dコンバータの設定と重複し、動作せず

これだけ、うまくいかなかったので本当に泣きそうになりました。

恥ずかしがり屋の希望コンテンツ

絶望コンテンツに面くらった私は、正直あきらめそうになりました。
しかし、「これだけやっているのだから神様は見放さないよね」と、ポジティブシンキングをしました!
私はアンテナを張りめぐらせて、ほかに3分タイマーを達成する方法はないか探しまくりました。

あきらめないマインドが神様に響いたのか、活路を見出すことができました!マイコンのデーターシートを本当に隅々まで読んでいると、まるで恥ずかしがり屋の子供のように姿を隠していた「BURTC(Back Up RTC)」という機能があることがわかりました。

詳細は省略しますが、この機能はRTCとほとんど同じなのです。
これを実際に使用することで、スイッチONしてから約3分後にごみあつめーる君が動作を停止しました。

苦悶の日々についに終止符が?

ついに何度も苦しめられたソフト設計を終了させることができました。
ハード製作はライバルたちより2週間早く終了しましたが、ソフト設計はその2週間を埋められてしまうほど時間がかかりました。
何事も、初めてのことに挑戦するときは苦しいものです。
わかってはいましたが辛く、ゴールが見えない毎日でした。

しかし、それも終わりました。残すところは、本番のみです。
その本番で、更なる絶望が待ち受けることは、次のお話までのお楽しみ、、、。

次回の最終話では、お掃除バトルを繰り広げるフィールドの作製、本番の様子をご紹介していきたいと思います!
[お掃除ロボ/たぼ] 第5話 ごみあつめーる君よ、私を導いてくれ。

残り1話となりました!是非ご覧ください!

この記事で使用した商品はこちら

2018年度 翔け新人!エンジニア奮闘記はこちら

翔け!エンジニア奮闘記とは?

マクニカのエンジニアが新人時代に研修中に感じた疑問、制作実習での奮闘、発生したトラブルを解決するまでのフローなど紹介します。個性あふれる新人たちが奮闘から会得した実用的なノウハウを業務にご活用ください。

翔け新人!エンジニア奮闘記 著者紹介はこちら

関連タグ