[H8-ML(2835)] Re: Cソースを載せます。ごめんなさい。
From: "Masanobu Suzuki" <signas@xxxxxxxxxxxxxxx>
Date: 2003年02月22日(土)12時52分58秒
ライントレースということですから、マイクロマウスのようなもの
でしょうか? 床面に貼られた反射テープなどをアナログの光
センサでテープ左右のエッジを検出し、2つの光センサの値が
うまくバランスさせるように走行させようと思われているのかと
思います。(マイクロマウスって今は死語?かな)

始めて読まれる方もいるので、装置の概要と動作原理などを
記してくれれば皆さんレスしやすいかと思います。

ソースはざっと見ました。見たと言ってもレジスタの設定値を一つ
一つ追っかけて見ている訳ではありません。全体の流れと、コメン
トを中心に眺めているだけです。

締め切りが迫ってくると、視野が狭くなり自分で作ったプログラム
が見えなくなるものです。これは経験豊富です(^^;;
そんなときは、自分の考えていることを他人に説明してみて下さい。
大抵の場合説明の途中で自分の勘違いに気付くことが多いです。

気のついた点として、

1)for文中で1000回ループさせていますが、その中に1度設定すれ
 ば良いレジスタが幾つか含まれていますが、繰り返し設定をする
 必要はありますか?(間違いではないが、無駄かと思います)

2)同様に同じ設定を連続で繰り返す部分があるが誤記?

3)1000回のfor文を抜けた後、無限ループになっているが、デバッグ
のため?

4)ざっと見た限りでは後半のif〜else文のところで、条件不足なので
はないか?

>AN0が20より小さかったら右モータを早く回転させ、
>AN2が20より小さかったら左モータを早く回転させ、
>AN1が20より小さかったら二つのモータを同じ回転数で回すという

作ったif文が、その他に起こり得る条件を全て満たしていますか?
一番簡単なデバッグ方法として、評価したい変数AN0,AN2,AN1の
条件をA/D変換の値を使わずにプログラムに固定して、そのときに
どのif文が実行され最終的な値がどうなるかをprintfで吐き出させて
見て下さい。
このような複雑な条件を処理するばあいは、switch文の方が判り
易いかと思います。

鈴木

スレッド概略
[2832(R)](起点)
 └[表示中]
   ├[2836(1)]
   └[2837(2)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]