進み、回転し、パックを離し、後退し、回転し、通常運転に戻る。//一度前進プログラムを動かすたびに変数wlcntに+1する。†ピーチクパーチク:ただライントレースさせればいいだけだ、と簡単に思っていたが、さまざまな問題点が浮き彫りになってとても苦労した。他グループのメンバーにも多少なり手伝っていただいたので、ここでお礼を申し上げておきます。ありがとうございました。タイラー:もしもう一度このロボットを作る機会があったら、もっといいものが作れたと思う。†ロボットとコースの説明はとてもよくできています。プログラムについて、taskを分割したということですが、どのようなときに、どのtaskが同時に実行されるのでしょうか?「このtaskはこんなときに起動、○○しながら××する」のような説明を入れてみてください。23:10:54全体としてプログラムの説明不足です。05:32:28Timer()を初期化せずに使用していることが気にかかります...。プログラムのパーツごとの動きは説明でわかるのですが、全体としてどのような流れなのかがあまりつかめません。ソースの中に説明を入れる以外に、フローチャートなどを用いていただくと分かりやすくなると思います。Timer(1)が初期化されていないような...?タイマーは初期化をしないと特に意味のないランダムな数値が入った状態で使うことになってしまうので、予期せぬバグを呼びます(経過時間を計るタイマーなのにマイナスの値になってしまったりする可能性もあります)。03:48:39タイマーの初期化はOKです。タイマーの使い方が気になります。100)は、「if文に到達したときに」タイマーが10秒以内ならカッコの中の処理を行う命令ですので、カッコの中の処理が10秒以内に終わるという保障はありません。この流れだと、直前でタイマー1を初期化していますから、必ず0が入っていて、必ずif文の内容が実行されます。0)について、タイマーは0をスタートし以降増え続けるので、これも必ず実行されるif文です。これらの箇所がifである意味はなんなのでしょうか...?説明を入れてください。21:35:41確かに、プログラムを見直すとif文である意味がありませんでした。if文を削ってみました。理論上は動くはずですが......。02:14:09プログラムを頑張っているようで、時間をかけて頑張っていることがうかがえます。半転の方法等工夫していると思います。(ifを使わないでまとめる方法については全体へのコメント参照)ですが、長いためミスではないかと思う点がいくつかあります。プログラム2の真ん中あたりので2.5秒を25としたり、openとcloseの名前が逆じゃないかなどです。大きな問題は、全体whileの中にライントレースのwhileが入っているわけですが、中のwhileでbreakしても全体のwhileは抜け出せません。OnRev(OUT_B);が実行され続けるのではないかということです。07:13:41プログラム2を更新しました。2.5秒を25と設定した件について、Timer()内では時間を1/10単位で測定するのでミスではないです。一応、1/100単位のFastTimer()に置き換えておきました。全体のwhileから脱する方法について、新たに変数yを導入し、これを全体whileのスイッチとしました。最後に、openとcloseはこれで正しいです。元のレーンに戻るときに、アームを閉じていないと牛乳パックに触れてしまうからです。01:16:30訂正確認しました。Timerの件は見落としてました。closeは使いどころがおかしいとかという意味ではなく、プログラム1と2で逆に定義されているのでまぎらわしいという意味です。05:11:58謎のタイマー問題も解決し、多少冗長ではありますが、よくできたプログラムになったと思います。