前輪部分がなかなかうまくいかず試行錯誤の末、タイヤのゴムを外すことで解決した。
車体を伸ばし、ホイールを投げる構造と光センサーを前方に設置した。また光センサーを内側に向けるようにした。内側に向けることで課題3−2をプログラムする上で楽になった。
ディファレンシャルギア本体は説明書を見て楽に作れたが、左右のタイヤに伝えるギアの配置は悩んだ。はじめは先輩のロボットを真似ていたが、それではつまらないので試行錯誤して作成した。
#define THRESHOLD 60 //光の明るさを定義 #define throw OnFwd(OUT_A); Wait(20); Off(OUT_A); //投げる動作を定義 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); //光センサーを定義 while(true) { if(SENSOR_1<THRESHOLD) //定義した光よりも暗い場合 { OnFwd(OUT_C); //時計周りに回転する } else //定義した光よりも明るい場合 { Off(OUT_C); //タイヤの動きを止める throw; //ブロックを投げる } } }
先ほどのプログラムでは、ある程度の明るさに反応してブロックを投げてしまうので、一番明るい所に投げるとはいいがたい。 なので、このようなプログラムを改めて作ってみた。
#define throw OnFwd(OUT_A); Wait(20); Off(OUT_A); //投げる動作を定義する #define Time 400 //一回転する時間を定義する task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); int hikari = 0; //光の強さの値(初期値0) int mt; while (true) { ClearTimer(0); ClearTimer(1); hikari = 0; while (FastTimer(1) < Time)//一回転する { OnFwd(OUT_A);OnRev(OUT_C); if (SENSOR_1 > hikari) { hikari=SENSOR_1; mt = FastTimer(0);//一番光の強かったときの時間を記憶する } } int lt; lt = FastTimer(0); OnFwd(OUT_C);OnRev(OUT_A);Wait(lt - mt);//一番光の強い方向を向く throw; //ブロックをなげる } }
#define THRESHOLD 60 // 光の強さを定義 task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); while ( true ) { if ( SENSOR_1 < THRESHOLD ) { if ( SENSOR_3 < THRESHOLD ) { // 光センサー1,3無感知 OnFwd ( OUT_C ) ; // 光を探す Wait ( 30 ) ; Off ( OUT_C ) ; // 停止 } else { // 光センサー3が感知 OnRev ( OUT_C ) ; // 右に回転 Wait ( 30 ) ; Off ( OUT_C ) ; // 回転停止 } } else if ( SENSOR_3 < THRESHOLD ) { // 光センサー1が感知 OnRev ( OUT_C ) ; // 左に回転 Wait ( 30 ) ; Off ( OUT_C ) ; // 回転停止 } else { OnFwd ( OUT_A ) ; // ブロックを投げる Wait ( 20 ) ; } } } }
前輪が変な動きをする。 →タイヤのゴムを外し摩擦を減らした。
ディファレンシャルギアがうまく作動しない。 →4、5回作り変えて今の方になった。
光センサーが正しく感知してくれない。 →内側に向けた。
個性が足らない →車体前方を伸ばし、投擲機能と光センサーを取り付けた。
時間の都合で課題3−3ができなかった。
光源の距離によっては正しく作動しないときがある。
1回目 プログラムだけでも良いので、課題3をやって見てください。
2回目
ロボットやプログラムの説明、工夫した点など最低限書くべきことは書けています。
○になるには、3つめの課題のプログラムが必要です。
わからないことがあれば、過去のホームページ等を参考にしてみてください。
F.I.