これで、通信処理ができるようになりました。
前回作成したモード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.
組み込み開発の記事ランキング
コーナーリンク