- 追加された行はこの色です。
- 削除された行はこの色です。
[[2006a/A5]]
目次(ー。ー)v
#contents
*課題2 黒い線に沿って動くロボット [#k6cb2dcc]
**制作者 ドラ ヤマヒロ 和知 サット [#bc459e91]
**ロボット名 どすこい! [#f078b908]
&ref(2006a/A5/課題2右/P1010004.JPG,75%,どすこい!);
**経緯 [#u760fa18]
&ref(2006a/A5/課題2右/FB1AD085.jpg,75%,今回コースにしたデザイン);→→→→→→&ref(2006a/A5/課題2右/P1010005.JPG,75%,今回のコース);
今回のロボットはスピードを出さいないで、正確にライントレースするように
ギアによる4駆のマシンにしたよ♪
マシン自体の重さも軽くしてみた。若干重心が前のめりになっちゃったけど(;´口`)
ライントレースするマークは今回W杯のデザインにした。
そうしたら、ライントレース自体はプログラミングで簡単に成功した!!
しかぁし!!タッチセンサーのプログラミングが上手く起動しなかったのである
_
ガックシ... ○||_
**ロボットの頭の中その1♪(追い抜きプログラム) 制作者:ドラ&ヤマヒロ [#l7f8f8e9]
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
while(true)
{
if(SENSOR_1<50) //もし光センサ−1の感度
if
(SENSOR_1<50) //もし光センサ−1の感度
{ が50以下ならAが動いてC止まる
OnFwd(OUT_A);
Off(OUT_C);
}else
{
Off(OUT_A);
OnFwd(OUT_C);
}
if(SENSOR_3<45) //もし光センサー3の感度
if
(SENSOR_3<45) //もし光センサー3の感度
{ が45以下ならCが動いてA止まる
OnFwd(OUT_C);
Off(OUT_A);
}else
{
Off(OUT_C);
OnFwd(OUT_A);
}
if(SENSOR_2==1) //もしタッチセンサー2が
if
(SENSOR_2==1) //もしタッチセンサー2が
{ 感知したらバックして
右斜め方向にある程度進み、
その後にライントレースに戻
るように左斜めに進んで
追い抜く
OnRev(OUT_A+OUT_C);
Wait(150);
OnFwd(OUT_C);
Wait(40);
Off(OUT_C+OUT_A);
OnFwd(OUT_A+OUT_C);
Wait(150);
Off(OUT_C);Wait(100);
OnFwd(OUT_C);
Wait(100);
}
}
}
**制作者 サット&和知 [#rab04993]
**ロボットの頭の中その2♪(方向転換プログラム)制作者:ドラ&ヤマヒロ [#i6a5c4e3]
task main(){SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
while(true)
{
if
(SENSOR_1<45) //もし光センサ−1の感度
{ が45以下ならAが
OnFwd(OUT_A);
Off(OUT_C);
}else
{
Off(OUT_A);
OnFwd(OUT_C);
}
if
(SENSOR_3<50) //もし光センサー3の感度
{ が50以下ならCが動いてA止まる
OnFwd(OUT_C);
Off(OUT_A);
}else
{
Off(OUT_C);
OnFwd(OUT_A);
}
if
(SENSOR_2==1) //もしセンサー2が反応したら
{OnRev(OUT_A+OUT_C); 後ろに2秒後退する
Wait(200);
Off(OUT_A);
OnRev(OUT_C);
Wait(50);
OnFwd(OUT_C+OUT_A); //AとCが前進する
Wait(200);
Off(OUT_A); //Aが止まり、タイヤAを中心に
Wait(50); 0.5秒間左回転する、そして
On(OUT_A); 2秒間前進する
Wait(200);
}
}
}
**ロボットの頭の中その2♪(方向転換プログラム)制作者:ヤマヒロ&ドラ[#i6a5c4e3]
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
while(true)
{
if(SENSOR_1<50) //その1のプログラミングと同じでふ
if
(SENSOR_1<50) //その1のプログラミングと同じでふ
{ ↓
OnFwd(OUT_A); ↓
Off(OUT_C); ↓
}else ↓
{ ↓
Off(OUT_A); ↓
OnFwd(OUT_C); ↓
} ↓
if(SENSOR_3<45) ↓
if
(SENSOR_3<45) ↓
{ ↓
OnFwd(OUT_C); ↓
Off(OUT_A); ↓
}else ↓
{ ↓
Off(OUT_C); ↓
OnFwd(OUT_A); ↓
}
if(SENSOR_2==1) //もしタッチセンサー
if
(SENSOR_2==1) //もしタッチセンサー
が感知したら
{ AとCがそれぞれ逆回転して
OnFwd(OUT_A); 方向転換する
OnRev(OUT_C);
Wait(180);
}
}
}
**制作者 サット&和知 [#m4ce4ee4]
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
while(true)
{
if
(SENSOR_1< 45) //感度45以下を感知したら
{ 右回転か左回転。
OnFwd(OUT_A);
Off(OUT_C);
}else
{
Off(OUT_A);
OnFwd(OUT_C);
}
if
(SENSOR_3< 50)
{
OnFwd(OUT_C);
Off(OUT_A);
}else
{
Off(OUT_C);
OnFwd(OUT_A);
}
if
(SENSOR_2==1)
{
OnRev(OUT_A+OUT_C); //1秒間後退してその後
Wait(100); 1.8秒間右回転する。
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(180);
}
}
}
**問題点 [#r1708e43]
初め光センサーを1つだけしか使わなかったら、カーブのたびに脱線して暴走してしまった。。。
そこで、脱線しないように光センサーを2つ使ったら今度はタッチセンサーが
シングルバンパーになってしまった。
結果、棒状のバンパーだと正確に感知しないことがあった。
その上プログラミングがヘタレだったので
せっかく上手にライントレースしていたマシンが暴走し始めてしまった!!!
**工夫した点 [#t026ae5c]
&ref(2006a/A5/課題2右/P10100012.JPG,75%,どすこい!); & &ref(2006a/A5/課題2右/P1010003.JPG,75%,どすこい!);
光センサーは2つ接着するようにくっ付けて、広範囲で光を感知するようにした。
またシングルバンパーの棒を1枚の板にしてワンタッチでより正確に感知するようにした♪
<(`⌒´)> エヘン!!
**反省&感想 [#i1063d6b]
今回は早めに取り組んだことによって、思った以上に楽しんで課題に取り組むことができた。
しかし、プログラミングの内容がイマイチ上手くいかなくて苦労した。。。
本当はもっと急カーブのライントレースがしたかったが、スピードと光センサーの問題があって、
実現できなかったのが残念である。
(_´口`)ノあぁぁぁ。。。
これからもっとプログラミングのスキルをあげたい
**コメントしてくんれ [#xaa0329e]
-if や while のブロックは字下げして書くと、プログラムの構造が見やすくなります。 -- [[松本(教員)]] &new{2006-06-21 (水) 14:50:53};
-もう少し変化に富んだコースだと面白かったかもしれません。 -- [[松本(教員)]] &new{2006-06-21 (水) 14:51:29};
-もう二人の方が作ったプログラムも載せてください。 -- [[いまい(TA)]] &new{2006-06-23 (金) 13:31:38};
-もう二人の方が作ったプログラムをのせましたので評価お願いします。 -- [[A5]] &new{2006-07-05 (水) 18:17:32};
#comment
おねげぇします