連載
» 2012年10月09日 09時55分 UPDATE

マイクロマウスで始める組み込み開発入門(6):階層構造を意識したLED点灯プログラムに挑戦しよう! (1/3)

マイクロマウスの市販組み立てキット「Pi:Co Classic」を完成させた北上くんとえみちゃん。向上心あふれる北上くんの開発方針により、階層構造を意識したオリジナルプログラムを作成することになった。今回からいよいよ【プログラミング編】に突入する!

[三月兎,MONOist]

前回のあらすじ

 組み込み技術者に要求される要素が“ギュッ”と詰まった「マイクロマウス」。北上くんと新入社員のえみちゃんは、スキルアップを兼ねてマイクロマウスの開発を始めることにしました。北上くんの指導の下、えみちゃんは何とかはんだ付けをこなし、市販の組み立てキット「Pi:Co Classic」の基板を完成させました。無事に動作確認も終え、このままサンプルプログラムを用いて、マイクロマウスを走らせたいところですが、はやる気持ちをグッとこらえ、階層構造を意識したオリジナルプログラムの開発に取り組むことになりました……(前回の記事へ)。


本連載の登場人物

ay_mouse01_man1.jpg
北上 篤人(きたがみ あつと)
26歳、男性。次期プロジェクトリーダーとして期待されている(と、本人は思っている)。専門は、ソフトウェア開発。電気回路やハードウェアに苦手意識を持っていて、いつか克服したいと考えている。

ay_mouse01_woman1.jpg
物江 えみ(ものえ えみ)
22歳、女性。この4月に入社したばかりの新入社員。C言語は大学の授業で学んだ程度なので、仕事についていけるかどうか不安を抱えている。性格は明るく、好奇心旺盛。早く一人前になりたいという強い熱意を持っている(ようだ)。


「自立」と「自律」について

※補足:本文中に「自立」と「自律」の2つの“じりつ”が用いられています。本連載では原則、マイクロマウス委員会の定義に従って使い分けています(以下)。

自立=selfcontained:動作に必要な機能を全て自分で持っていて移動できること。
自律=autonomouse:一切外部からの操縦などを行わずに自主的に行動できること。



デバッグ用LEDを制御するプログラムに挑戦!

――ピンポーン! (チャイムの音)

えみ

こんにちは……。


北上

いらっしゃい!

あれ? どうしたの。いつもの元気がないね?


えみ

この間、センパイから聞いたプログラムの階層構造化なんですが……。

ワタシ、ちゃんとできるか心配なんです。


北上

そんなに心配しなくても、大丈夫、大丈夫! 実際にソースコードを書いて動かしてみれば、すぐに分かるよ。

今日は、デバッグ用LEDを制御するプログラムに挑戦してみよう!


えみ

は、はいっ!


北上

まずは、ルネサス エレクトロニクスの統合開発環境「HEW(High-performance Embedded Workshop)」で新規プロジェクトを作るところから始めるよ。



新規プロジェクトワークスペース「Mouse2012」を作成する

 それでは、HEWを起動して、新規プロジェクトワークスペースを作成してみましょう。このワークスペース上に、これから作成していくプログラムを毎回追加していきます。そして、最終的にPi:Co Classicが迷路内を自律走行できる状態を目指します。本稿では、ワークスペース名を「Mouse2012」としました(画像1)。

新規プロジェクトワークスペースの作成 画像1 新規プロジェクトワークスペースの作成。1)初期画面(「ようこそ!」ダイアログ)で、「新規プロジェクトワークスペースの作成」にチェックを入れる。2)ワークスペース名の欄に「Mouse2012」と入力し、3)使用するCPUのシリーズとタイプを選択する(本稿では「SH-2」「SH7125」を選ぶ)、4)最後に[完了]ボタンを押下する

 自分で作成するプログラムと、HEWが自動生成したプログラムが混在していると、これからの作業が分かりづらくなるので、あらかじめメイン関数が入っている「Mouse2012.c」以外のファイルを別のディレクトリに振り分けておきましょう(画像2)。そして、HEWのメインメニューの[ファイル]―[新規作成]で、以下に列挙する空ファイルを作成し(画像2の1))、それらをショートカットメニューの[ファイルの追加]でプロジェクトツリーに追加(画像2の2))します。ヘッダーファイルと、ソースファイルがそれぞれのディレクトリに分かれて追加されます。

  • ヘッダーファイル 
    app.h 
    common.h 
    ctrl.h 
    drv.h 
    init.h
  • ソースファイル 
    app.c 
    ctrl.c 
    drv.c 
    init.c
プロジェクトツリー 画像2 緑色の部分が「HEW」ディレクトリに移動した自動生成ファイル。ピンク色の部分は新たに追加したファイル

LED点滅プログラムを作成する

 今回は、Pi:Co Classicの前方に4つ並んでいる“デバッグ用LED”を点灯/消灯させるプログラムを作成します。これらのLEDの点灯パターンによって、例えば、現在選択しているモードが何なのかを表したり、走行中のPi:Co Classicが周囲の壁をどのように認識しているのかを表示させたりできます(画像3)。

デバッグ用LED 画像3 デバッグ用LEDの点灯パターンで、Pi:Co Classicが何をしているのか「見える化」できる

 プログラミングを始める前に、あらかじめLEDを点灯/消灯させるために必要な情報を取得しておきましょう。Pi:Co Classicのマニュアルに記載されている「基板ポート一覧」を確認すると、デバッグ用LEDのポートは、PE0〜PE3に割り当てられていることが分かります(表1)。回路図も公開されているので、一緒にチェックしておきましょう(画像4)。

 こちらの回路図を見てみると、GNDとマイコンの間にLEDと抵抗が接続されていることが分かります。これは、マイコンの信号ピンに“1”を出力すると、LEDが点灯する「正論理」の回路です。つまり、該当するポートに“1”を書き込めば、5Vの電圧が出力されてLEDが点灯します。逆に“0”を書き込めば、0Vが出力されてLEDが消灯します。

基板ポート一覧 表1 基板ポート一覧(※Pi:Co Classic 取扱説明書_ver1.08.pdfより抜粋)
LED回路とSTK-7125回路 画像4 LED回路とSTK-7125回路。「モード選択用」とあるものがデバッグ用LEDに当たる


北上

ここまでの内容は理解できたかな?


えみ

えっと〜。分かったような気はするんですけど……。

でも、「じゃあ、説明してみてよ」と言われたらできません(ガクッ)。


北上

ふふっ、えみちゃんは正直だね。

初めてマイコンプログラミングに挑戦するんだから、説明を聞いただけじゃピンとこなくて当たり前だよ。


えみ

はぁ、そうですかねぇ……。


北上

プログラムを組んだ後に、もう一度、回路図を見たり、参考記事を読んだりすればきっと理解が深まるよ。とにかく、やってみよう!


えみ

はいっ!



       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.