シリアル通信でセンサー値をPCのモニターに出力しよう!:マイクロマウスで始める組み込み開発入門(11)(3/3 ページ)
市販の組み立てキットを用い、小さくて賢いロボット「マイクロマウス」の開発に取り掛かった北上くんとえみちゃんは、サンプルのソースコードに頼らない、オリジナルプログラムを作成中。今回は、前回取得したセンサーの値を「シリアル通信」でPCのモニターに表示させる。
これで、通信処理ができるようになりました。
前回作成したモード2の処理に、文字列送信処理を追加します(ソースコード10)。
/************************************************/ /* モード2の処理 (app_mode2) */ /************************************************/ /* センサーの値をPC側に送信する */ /************************************************/ void app_mode2(void) { //センサーの値をPC側に送信する int r; //右センサーの値 int fr; //前右センサーの値 int fl; //前左センサーの値 int l; //左センサーの値 unsigned char sw_r; //右スイッチの状態 unsigned char sw_c; //中スイッチの状態 unsigned char sw_l; //左スイッチの状態 // while(1) { //センサー値取得 r = ctrl_adc_r(); //右 fr = ctrl_adc_fr(); //前右 fl = ctrl_adc_fl(); //前左 l = ctrl_adc_l(); //左 //文字列 送信 ctrl_com_send("\rR:",r); ctrl_com_send(", FR:",fr); ctrl_com_send(", FL:",fl); ctrl_com_send(", L:",l); //全てのスイッチの値を取得する ctrl_sw_all(&sw_r, &sw_c, &sw_l); //スイッチの値をチェック if(sw_r == SW_ON || sw_c == SW_ON || sw_l == SW_ON) { //どれかのスイッチが押されたらブザーを鳴らし、終了する ctrl_bz(BZ_FREQ_DO, 100); //ブザー鳴動(ド) break; } } }
>>ソースコード(Mouse201303.lzh)のダウンロードはこちら
では、プログラムをビルドして、Pi:Co Classicの動作を確認してみましょう(動画1)。
やった〜。ちゃんとセンサーの値が表示されましたよ!
それにしても、A/D変換やシリアル通信って、ちょっとつかみどころがなくって、正直難しかったです。
確かに、そうかもしれないね。
それに、データシートなんて、見ているだけで頭痛くなっちゃいますし(汗)。
ハハハッ。その気持ちはよく分かるな〜。ボクも最初のころは、辛かったよ。少しずつ慣れてきたけどね。
私も、ちょっとずつ自分で読めるようになりたいです。だけど、それはまたおいおいということで……。今日はこの辺にして、ご飯でも食べに行きませんか?
そうだね。えみちゃん、何か食べたいものあるかい?
え!? あっ、駅前の洋食屋さん! あそこでオムライスを食べたいです。
じゃあ、そこにしよう!!
ようやく、取得したセンサー値をシリアル通信でPCのモニターに出力させることに成功しました。
マイコン制御プログラミングを行うには、データシートの中身を理解する必要があります。ついサンプルのソースコードをコピー&ペーストして、「動いているから大丈夫」と逃げてしまいがちですが、それではいつまでたっても自分が書いたソースコードに自信を持つことができません。慣れないうちは、データシートを読むと思うだけで、尻込みしてしまうかもしれませんが、目をそらさずに、一度じっくりと取り組むことをおススメします。まずは、自分が必要とするところから、データシートを読んでみてください。次第に、苦手意識が払拭(ふっしょく)されるはずです。
次回は、「モータ」を扱います。お楽しみに! (次回に続く)
ロボット開発の最前線
Copyright © ITmedia, Inc. All Rights Reserved.