- 追加された行はこの色です。
- 削除された行はこの色です。
目次
#contents
#hr
*図1 (簡単ボット) [#a666b1bd]
#ref(ciec-pcc-2006/ciec-2006-1.pdf);
*図2 (プログラム例) 黒い線に沿って動くロボット [#u710031b]
#ref(ciec-pcc-2006/ciec-2006-2.pdf);
**光センサを一つ使用した場合 [#w3990fa1]
#define THRESHOLD 40 // 黒と白の閾値を設定
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); // センサ1は光センサ
while(true){ // 無限ループ
if (SENSOR_1<THRESHOLD){ // 光センサが黒線上にあるときは
OnFwd(OUT_A); // 右にターン
Off(OUT_C);
} else { // 光センサが黒線上にないときは
OnFwd(OUT_C); // 左にターン
Off(OUT_A);
}
/}
}
}
** 光センサを2個使用した場合 [#ofe4104d]
#define THRESHOLD 40 // 黒と白の閾値を設定
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); // センサ1(左)は光センサ
SetSensor(SENSOR_3,SENSOR_LIGHT); // センサ3(右)も光センサ
while(true){ // 無限ループ
if (SENSOR_1<THRESHOLD){
if (SENSOR_3<THRESHOLD){ // 光センサが2個とも黒線上
OnFwd(OUT_A); // にある場合は直進
OnFwd(OUT_C);
} else { // 左だけ黒線上の場合は
Off(OUT_A); // 左にターン
OnFwd(OUT_C);
}
} else {
if (SENSOR_3<THRESHOLD){ // 右だけ黒線上の場合は
OnFwd(OUT_A); // 右にターン
Off(OUT_C);
} else { // 2個とも黒線上にない
Off(OUT_A); // 場合には停止
Off(OUT_C);
}
}
}
}
*授業工程表の例 [#k7e29e57]
:図形や文字を書くロボット (センサは使用しない)|
--プログラム作成→コンパイル→プログラム転送までの基本操作
--モータを回転させるための基本的なAPI
(Application Programming Interface)の利用方法
--定数や変数の使用
--手続きの抽象化を理解する(サブルーチンや関数の使用)
--チーム内の交流を深める
:机の縁で方向を変えて動きまわるロボット(or 障害物を避けるロボット) (タッチセンサを使用)|
--論理式や制御構文についての基礎を学習する
--『押されている(1)』『押されていない(0)』という2値を取る
タッチセンサをロボットに取り付け,if文やwhile文などを
使ったプログラムを作成する。
--論理積や論理和といった論理演算についての学習
:黒いラインに沿って走るロボット (光センサを使用)|
--この課題では多段階の値を与える光センサを使用する
--光センサを1個使った場合,2個使った場合,
モータを1個使った場合,2個使った場合など
種々のロボットを製作してスピードや確実性をアップさせる
:光を追いかけるロボット|
--最大値を求めたり,近傍での明るさの差分を取って比較して進むなど
これまでよりも多少複雑なアルゴリズムを考える。
--タイマ(時間センサと考えてもよい)の活用
--ウェブ上での実習報告
:曲を演奏しながら動くロボット|
--曲を演奏しながら光センサとタッチセンサの両方を監視して行動する,
--複数のタスクを並列で実行させる。
割り込み処理やリソース(モータ)へのアクセス権についての学習。
--ウェブ上での実習報告
:簡単なロボット・コンテストの開催
--空き缶を集めてきて積み上げるロボットや,
紙パックを運搬して所定のカゴに投げ込むロボットなど
--キットを2セット使うことで,より複雑な作業を必要とする
--通信機能を用いる(原始的なプロトコルを設計)
--チームの人数も増えるため,作業分担を上手に行うことも重要である。
--ウェブ上での実習報告