2006a/A7/課題2左
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
課題2:黒い線に沿って動くロボットを作成せよ。そして一つの周回コースを2台のロボットが走行すること想定し、以下の2種類のプログラムを作成せよ。
+ 前方のロボットに接触したら反転して進む
+ 前方のロボットに接触したらそのロボットを右側から避けて通り、再びライン上に戻って進む
☆目次☆
#contents
*プログラム(反転バージョン1) [#af7eab9b]
#define THRESHOLD 47
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーとする
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーとする
while(true){
if (SENSOR_1< THRESHOLD){ //センサー1が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_C); //左に少し旋回
OnRev(OUT_A);
Wait(4);}
if (SENSOR_3< THRESHOLD){ //センサー3が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_A); //少し右に旋回
OnRev(OUT_C);
Wait(4);}
else { //どちらのセンサーも線の上になければ
OnFwd(OUT_A+OUT_C);} //直進する
if(SENSOR_2==1){ //センサ−2が反応すると
OnRev(OUT_C); //反転して直進
Wait(180);
OnFwd(OUT_C); }
}
}
制作者:ガリ、メソ
*プログラム(反転バージョン2) [#m7657726]
#define THRESHOLD 45
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーとする
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーとする
while(true){
if (SENSOR_1< THRESHOLD){ //センサ−1が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_C); //左に少し旋回
OnRev(OUT_A);
Wait(6);}
if (SENSOR_3< THRESHOLD){ //センサー2が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_A); //右に少し旋回
OnRev(OUT_C);
Wait(6);}
else { //センサー1,2のどちらも反応していないとき
OnFwd(OUT_A+OUT_C);} //直進する
if(SENSOR_2==1){ //センサー2が反応しているとき
OnRev(OUT_C); //右回りに旋回し反転
Wait(185);
OnFwd(OUT_C); }
}
}
制作者:アナクスナムゥン
*プログラム(避けるバージョン1) [#dca7ed76]
#define THRESHOLD 47
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーとする
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーとする
while(true){
if (SENSOR_1< THRESHOLD){ //センサ−1が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_C); //左に少し旋回
OnRev(OUT_A);
Wait(4);}
if (SENSOR_3< THRESHOLD){ //センサ−3が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_A); //右に少し旋回
OnRev(OUT_C);
Wait(4);}
else { //センサー1,2のどちらも反応していないとき
OnFwd(OUT_A+OUT_C);} //直進する
if(SENSOR_2==1){ //センサー2が反応しているとき
OnRev(OUT_C); //右に0.9秒旋回
Wait(90);
OnFwd(OUT_C); //1.2秒直進
Wait(120);
OnRev(OUT_A); //左に1.3秒旋回
Wait(130);
OnFwd(OUT_A); } //直進しコースに戻る
}
}
制作者:ガリ、メソ
*プログラム(避けるバージョン2) [#m766c83a]
#define THRESHOLD 47
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーとする
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーとする
while(true){
if (SENSOR_1< THRESHOLD){ //センサ−1が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_C); //左に少し旋回
OnRev(OUT_A);
Wait(4);}
if (SENSOR_3< THRESHOLD){ //センサ−3が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_A); //右に少し旋回
OnRev(OUT_C);
Wait(4);}
else { //センサー1,2のどちらも反応していないとき
OnFwd(OUT_A+OUT_C);} //直進
if(SENSOR_2==1){ //センサー2が反応しているとき
OnRev(OUT_C); //右に0.9秒旋回
Wait(90);
OnFwd(OUT_C); //1.0秒直進する
Wait(100);
OnRev(OUT_A); //左に1.0秒旋回
Wait(100);
OnFwd(OUT_A); } //直進しコースに戻る
}
}
制作者:アナクスナムゥン
*コース [#g1c71324]
#ref(2006a/A7/課題2左/dscn2607_Medium.jpg,100%,スヌーピー)
他の班とかぶらないようにスヌーピーにしてみました。
*工夫した点 [#z85b009f]
+光センサーがなかなか敏感で、ちょうどいい感度にさせた所。あと、2つの光センサーの幅を絶妙な間隔に調整したことでほとんどすべてのカーブに対応したマシンの製作ができた。
+光センサーの高さを地面すれすれにすることにより、ラインの位置をより正確に読み取ることに成功した。
*うまくいかなかったこと [#t9681fde]
+車体が振動してスムーズに進まなかった。センサーの感度、プログラミングに改良の余地あり(ガリ)
→改善完了しました。
+課題内容を把握していなくて、やってきていませんでした。→完成しました(6/21)
*感想 [#h49153a0]
+アナクスナムゥン:今回は、夜中までみんなでやったりして、大変だった。
+ガリ:ホント遅くまでやったね。眠気覚ましに塩コショウを食ったりね。ロボットは基本をモデルにしたからやりやすかったけど、プログラミングは苦労したね。
+メソ:今回は、いろいろ不手際があって遅れちゃったけど、なんとか完成できて良かったよ、ホント塩コショウは眠気に効くよね♪
*皆さんのコメント [#e8f9f3f9]
みんな恥ずかしがらずに書き込んでね!!
-写真が1枚も貼ってないじゃん! -- [[怒羅江門]] &new{2006-06-23 (金) 00:59:58};
-写真はったんだね! -- [[sin]] &new{2006-06-27 (火) 01:28:36};
#comment
終了行:
課題2:黒い線に沿って動くロボットを作成せよ。そして一つの周回コースを2台のロボットが走行すること想定し、以下の2種類のプログラムを作成せよ。
+ 前方のロボットに接触したら反転して進む
+ 前方のロボットに接触したらそのロボットを右側から避けて通り、再びライン上に戻って進む
☆目次☆
#contents
*プログラム(反転バージョン1) [#af7eab9b]
#define THRESHOLD 47
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーとする
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーとする
while(true){
if (SENSOR_1< THRESHOLD){ //センサー1が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_C); //左に少し旋回
OnRev(OUT_A);
Wait(4);}
if (SENSOR_3< THRESHOLD){ //センサー3が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_A); //少し右に旋回
OnRev(OUT_C);
Wait(4);}
else { //どちらのセンサーも線の上になければ
OnFwd(OUT_A+OUT_C);} //直進する
if(SENSOR_2==1){ //センサ−2が反応すると
OnRev(OUT_C); //反転して直進
Wait(180);
OnFwd(OUT_C); }
}
}
制作者:ガリ、メソ
*プログラム(反転バージョン2) [#m7657726]
#define THRESHOLD 45
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーとする
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーとする
while(true){
if (SENSOR_1< THRESHOLD){ //センサ−1が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_C); //左に少し旋回
OnRev(OUT_A);
Wait(6);}
if (SENSOR_3< THRESHOLD){ //センサー2が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_A); //右に少し旋回
OnRev(OUT_C);
Wait(6);}
else { //センサー1,2のどちらも反応していないとき
OnFwd(OUT_A+OUT_C);} //直進する
if(SENSOR_2==1){ //センサー2が反応しているとき
OnRev(OUT_C); //右回りに旋回し反転
Wait(185);
OnFwd(OUT_C); }
}
}
制作者:アナクスナムゥン
*プログラム(避けるバージョン1) [#dca7ed76]
#define THRESHOLD 47
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーとする
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーとする
while(true){
if (SENSOR_1< THRESHOLD){ //センサ−1が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_C); //左に少し旋回
OnRev(OUT_A);
Wait(4);}
if (SENSOR_3< THRESHOLD){ //センサ−3が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_A); //右に少し旋回
OnRev(OUT_C);
Wait(4);}
else { //センサー1,2のどちらも反応していないとき
OnFwd(OUT_A+OUT_C);} //直進する
if(SENSOR_2==1){ //センサー2が反応しているとき
OnRev(OUT_C); //右に0.9秒旋回
Wait(90);
OnFwd(OUT_C); //1.2秒直進
Wait(120);
OnRev(OUT_A); //左に1.3秒旋回
Wait(130);
OnFwd(OUT_A); } //直進しコースに戻る
}
}
制作者:ガリ、メソ
*プログラム(避けるバージョン2) [#m766c83a]
#define THRESHOLD 47
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーとする
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーとする
while(true){
if (SENSOR_1< THRESHOLD){ //センサ−1が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_C); //左に少し旋回
OnRev(OUT_A);
Wait(4);}
if (SENSOR_3< THRESHOLD){ //センサ−3が線の上にあるとき
Off(OUT_A+OUT_C);
OnFwd(OUT_A); //右に少し旋回
OnRev(OUT_C);
Wait(4);}
else { //センサー1,2のどちらも反応していないとき
OnFwd(OUT_A+OUT_C);} //直進
if(SENSOR_2==1){ //センサー2が反応しているとき
OnRev(OUT_C); //右に0.9秒旋回
Wait(90);
OnFwd(OUT_C); //1.0秒直進する
Wait(100);
OnRev(OUT_A); //左に1.0秒旋回
Wait(100);
OnFwd(OUT_A); } //直進しコースに戻る
}
}
制作者:アナクスナムゥン
*コース [#g1c71324]
#ref(2006a/A7/課題2左/dscn2607_Medium.jpg,100%,スヌーピー)
他の班とかぶらないようにスヌーピーにしてみました。
*工夫した点 [#z85b009f]
+光センサーがなかなか敏感で、ちょうどいい感度にさせた所。あと、2つの光センサーの幅を絶妙な間隔に調整したことでほとんどすべてのカーブに対応したマシンの製作ができた。
+光センサーの高さを地面すれすれにすることにより、ラインの位置をより正確に読み取ることに成功した。
*うまくいかなかったこと [#t9681fde]
+車体が振動してスムーズに進まなかった。センサーの感度、プログラミングに改良の余地あり(ガリ)
→改善完了しました。
+課題内容を把握していなくて、やってきていませんでした。→完成しました(6/21)
*感想 [#h49153a0]
+アナクスナムゥン:今回は、夜中までみんなでやったりして、大変だった。
+ガリ:ホント遅くまでやったね。眠気覚ましに塩コショウを食ったりね。ロボットは基本をモデルにしたからやりやすかったけど、プログラミングは苦労したね。
+メソ:今回は、いろいろ不手際があって遅れちゃったけど、なんとか完成できて良かったよ、ホント塩コショウは眠気に効くよね♪
*皆さんのコメント [#e8f9f3f9]
みんな恥ずかしがらずに書き込んでね!!
-写真が1枚も貼ってないじゃん! -- [[怒羅江門]] &new{2006-06-23 (金) 00:59:58};
-写真はったんだね! -- [[sin]] &new{2006-06-27 (火) 01:28:36};
#comment
ページ名: