2008a/A4/課題3右
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題3:懐中電灯に向かってブロックを投げるロボットの制作 [#rfd5163d]
以下の動きをするプログラムを作る。
その1、全方向から懐中電灯の方向を探しだし、懐中電灯に向かってブロックを投げる。(懐中電灯は動かさない。)
その2、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めるとブロックを投げる。
その3、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めると50cmの距離まで近づいてブロックを投げる。
**メンバー紹介 [#qb4d7279]
今回は、コリンとあやこで制作することになりました。女子2人でとっても不安でした・・・。
**使用するロボットについて [#e16a611b]
<条件>
使用できるモータは2つまで!
#ref(2008a/A4/課題3右/robo-right2.jpg,75%,全体像)
↑改良前の全体像
光センサの着き方がもろく、すぐ取れてしまいます。
#ref(2008a/A4/課題3右/robo-right.jpg,100%,全体像その2)
↑改良前の全体像その2
折角、写真を撮ったので載せてみました。
#ref(2008a/A4/課題3右/robo-right-kai.JPG,50%,全体像その3)
↑改良後の全体像
光センサが着くところを強化しました。これで、大丈夫!!
#ref(2008a/A4/課題3右/taiya-right.jpg,100%,補助輪)
↑補助輪
あえて、タイヤのゴムを付けないことでスムーズな動きが実現しました!!あと、なるべく小さくすることを心がけて作りました。付け根の部分は、自由に回転するようにしました。
#ref(2008a/A4/課題3右/stop-right.jpg,100%,ギアのストッパー)
↑ギアのストッパー
モータの回転を逆にした時に、反対のタイヤが動くようにするためにつけました。
*プログラムについて [#s6a177fb]
**その1 [#f1bddf0f]
***その1のその1 [#e3038772]
#define IKICHI 50 // 閾値を50に設定
task main()
{
SetSensor(SENSOR_1 , SENSOR_LIGHT); // センサ端子1に接続したセンサを光センサに設定
SetSensor(SENSOR_3 , SENSOR_LIGHT); // センサ端子3に接続したセンサを光センサに設定
SetPower(OUT_A+OUT_C,3); // モータの出力を3に設定
while((SENSOR_1 > IKICHI) || (SENSOR_3 < IKICHI)) // センサ端子1の光センサが閾値より大きく
{ // かつ、センサ端子3の光センサが閾値より小さい時
OnFwd(OUT_A); // 時計周りに回って、懐中電灯の光を探す
}
Off(OUT_A); // whileが成り立たなくなった時、A出力のモータを止める
Wait(100); // 1秒間停止した後、
OnRev(OUT_B); // アームを動かしてブロックを投げる
Wait(30); // アームを動かす時間は0,3秒に設定
Off(OUT_B); // B出力のモータを止める
}
***その1のその2 [#rb46cdc1]
**その2 [#sb4f76b1]
#define IKICHI 60 // 閾値を60に設定
task main()
{
SetSensor(SENSOR_1 , SENSOR_LIGHT); // センサ端子1に接続したセンサを光センサに設定
SetSensor(SENSOR_3 , SENSOR_LIGHT); // センサ端子3に接続したセンサを光センサに設定
SetPower(OUT_A+OUT_C,2); // モータの出力を2に設定
while(true){
if((SENSOR_1 >= IKICHI) && (SENSOR_3 >= IKICHI)) // センサ端子1の光センサが閾値以上、
{ // または、センサ端子3に光センサが閾値以上の時、
repeat(2) // 前進する行動(1回0,4秒)を2回繰り返す
{
OnFwd(OUT_A);
Wait(20);
OnRev(OUT_A);
Wait(20);
}
Off(OUT_A); // 繰り返した後、A出力のモータを止める
OnFwd(OUT_B); // アームを動かしてブロックを投げる
Wait(100); // アームを動かす時間は1秒
Off(OUT_B); // B出力のモータを止める
}
if((SENSOR_1 < IKICHI) && (SENSOR_3 > IKICHI)) // センサ端子1の光センサが閾値より小さい、
{ // または、センサ端子3の光センサが閾値より大きいとき
OnFwd(OUT_A); // 時計回りに回って懐中電灯の光に向かって進む
}
if((SENSOR_1 > IKICHI) && (SENSOR_3 < IKICHI)) // センサ端子1の光センサが閾値より大きい、
{ // または、センサ端子3の光センサが閾値より小さいとき
OnRev(OUT_A); // 反時計回りに回って懐中電灯の光に向かって進む
}
}
}
**その3 [#dd34d0fe]
#define IKICHI 60 // 閾値を60に設定
task main()
{
SetSensor(SENSOR_1 , SENSOR_LIGHT); // センサ端子1に接続したセンサを光センサに設定
SetSensor(SENSOR_3 , SENSOR_LIGHT); // センサ端子3に接続したセンサを光センサに設定
SetPower(OUT_A+OUT_C,2); // モータの出力を2に設定
while(true){
if((SENSOR_1 >= IKICHI) && (SENSOR_3 >= IKICHI)) // センサ端子1の光センサが閾値以上、
{ // または、センサ端子3に光センサが閾値以上の時、
repeat(2) // 前進する行動(1回0,4秒)を2回繰り返す
{
OnFwd(OUT_A);
Wait(20);
OnRev(OUT_A);
Wait(20);
}
repeat(8) // 前進する行動(1回0,4秒)を8回繰り返して
{ // 懐中電灯に近づく
OnFwd(OUT_A);
Wait(20);
OnRev(OUT_A);
Wait(20);
}
Off(OUT_A); // 繰り返した後、A出力のモータを止める
OnFwd(OUT_B); // アームを動かしてブロックを投げる
Wait(100); // アームを動かす時間は1秒
Off(OUT_B); // B出力のモータを止める
}
if((SENSOR_1 < IKICHI) && (SENSOR_3 > IKICHI)) // センサ端子1の光センサが閾値より小さい、
{ // または、センサ端子3の光センサが閾値より大きいとき
OnFwd(OUT_A); // 時計回りに回って懐中電灯の光に向かって進む
}
if((SENSOR_1 > IKICHI) && (SENSOR_3 < IKICHI)) // センサ端子1の光センサが閾値より大きい、
{ // または、センサ端子3の光センサが閾値より小さいとき
OnRev(OUT_A); // 反時計回りに回って懐中電灯の光に向かって進む
}
}
}
*制作してみての感想 [#tfc3c8b0]
<苦労した点>
全体的にプログラムを作るのが難しかった。特に、懐中電灯を追いかけるプログラムでは、光センサの感度が悪く、調整がうまくできなかったので大変だった。他にも、前進するときに、タイヤの着いてるモータを交互に少しずつ動かさなければいけないが、モータを動かす時間を調節することが難しかった。
<工夫した点>
ロボットを支える補助輪がスムーズに動くように、あえてタイヤにゴムを付けなかったところ。
ロボット全体をコンパクトにするように心がけた。
ブロックを投げるときに、遠くに飛ぶように、アームが動く途中にストッパーをつけた。また、アームが動く前の待機位置にもストッパーを付けた。
***コメントお願いします [#ucc60da5]
#comment
課題1では相対的に最も明るい方向を探せるプログラムにしてください。I
終了行:
#contents
*課題3:懐中電灯に向かってブロックを投げるロボットの制作 [#rfd5163d]
以下の動きをするプログラムを作る。
その1、全方向から懐中電灯の方向を探しだし、懐中電灯に向かってブロックを投げる。(懐中電灯は動かさない。)
その2、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めるとブロックを投げる。
その3、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めると50cmの距離まで近づいてブロックを投げる。
**メンバー紹介 [#qb4d7279]
今回は、コリンとあやこで制作することになりました。女子2人でとっても不安でした・・・。
**使用するロボットについて [#e16a611b]
<条件>
使用できるモータは2つまで!
#ref(2008a/A4/課題3右/robo-right2.jpg,75%,全体像)
↑改良前の全体像
光センサの着き方がもろく、すぐ取れてしまいます。
#ref(2008a/A4/課題3右/robo-right.jpg,100%,全体像その2)
↑改良前の全体像その2
折角、写真を撮ったので載せてみました。
#ref(2008a/A4/課題3右/robo-right-kai.JPG,50%,全体像その3)
↑改良後の全体像
光センサが着くところを強化しました。これで、大丈夫!!
#ref(2008a/A4/課題3右/taiya-right.jpg,100%,補助輪)
↑補助輪
あえて、タイヤのゴムを付けないことでスムーズな動きが実現しました!!あと、なるべく小さくすることを心がけて作りました。付け根の部分は、自由に回転するようにしました。
#ref(2008a/A4/課題3右/stop-right.jpg,100%,ギアのストッパー)
↑ギアのストッパー
モータの回転を逆にした時に、反対のタイヤが動くようにするためにつけました。
*プログラムについて [#s6a177fb]
**その1 [#f1bddf0f]
***その1のその1 [#e3038772]
#define IKICHI 50 // 閾値を50に設定
task main()
{
SetSensor(SENSOR_1 , SENSOR_LIGHT); // センサ端子1に接続したセンサを光センサに設定
SetSensor(SENSOR_3 , SENSOR_LIGHT); // センサ端子3に接続したセンサを光センサに設定
SetPower(OUT_A+OUT_C,3); // モータの出力を3に設定
while((SENSOR_1 > IKICHI) || (SENSOR_3 < IKICHI)) // センサ端子1の光センサが閾値より大きく
{ // かつ、センサ端子3の光センサが閾値より小さい時
OnFwd(OUT_A); // 時計周りに回って、懐中電灯の光を探す
}
Off(OUT_A); // whileが成り立たなくなった時、A出力のモータを止める
Wait(100); // 1秒間停止した後、
OnRev(OUT_B); // アームを動かしてブロックを投げる
Wait(30); // アームを動かす時間は0,3秒に設定
Off(OUT_B); // B出力のモータを止める
}
***その1のその2 [#rb46cdc1]
**その2 [#sb4f76b1]
#define IKICHI 60 // 閾値を60に設定
task main()
{
SetSensor(SENSOR_1 , SENSOR_LIGHT); // センサ端子1に接続したセンサを光センサに設定
SetSensor(SENSOR_3 , SENSOR_LIGHT); // センサ端子3に接続したセンサを光センサに設定
SetPower(OUT_A+OUT_C,2); // モータの出力を2に設定
while(true){
if((SENSOR_1 >= IKICHI) && (SENSOR_3 >= IKICHI)) // センサ端子1の光センサが閾値以上、
{ // または、センサ端子3に光センサが閾値以上の時、
repeat(2) // 前進する行動(1回0,4秒)を2回繰り返す
{
OnFwd(OUT_A);
Wait(20);
OnRev(OUT_A);
Wait(20);
}
Off(OUT_A); // 繰り返した後、A出力のモータを止める
OnFwd(OUT_B); // アームを動かしてブロックを投げる
Wait(100); // アームを動かす時間は1秒
Off(OUT_B); // B出力のモータを止める
}
if((SENSOR_1 < IKICHI) && (SENSOR_3 > IKICHI)) // センサ端子1の光センサが閾値より小さい、
{ // または、センサ端子3の光センサが閾値より大きいとき
OnFwd(OUT_A); // 時計回りに回って懐中電灯の光に向かって進む
}
if((SENSOR_1 > IKICHI) && (SENSOR_3 < IKICHI)) // センサ端子1の光センサが閾値より大きい、
{ // または、センサ端子3の光センサが閾値より小さいとき
OnRev(OUT_A); // 反時計回りに回って懐中電灯の光に向かって進む
}
}
}
**その3 [#dd34d0fe]
#define IKICHI 60 // 閾値を60に設定
task main()
{
SetSensor(SENSOR_1 , SENSOR_LIGHT); // センサ端子1に接続したセンサを光センサに設定
SetSensor(SENSOR_3 , SENSOR_LIGHT); // センサ端子3に接続したセンサを光センサに設定
SetPower(OUT_A+OUT_C,2); // モータの出力を2に設定
while(true){
if((SENSOR_1 >= IKICHI) && (SENSOR_3 >= IKICHI)) // センサ端子1の光センサが閾値以上、
{ // または、センサ端子3に光センサが閾値以上の時、
repeat(2) // 前進する行動(1回0,4秒)を2回繰り返す
{
OnFwd(OUT_A);
Wait(20);
OnRev(OUT_A);
Wait(20);
}
repeat(8) // 前進する行動(1回0,4秒)を8回繰り返して
{ // 懐中電灯に近づく
OnFwd(OUT_A);
Wait(20);
OnRev(OUT_A);
Wait(20);
}
Off(OUT_A); // 繰り返した後、A出力のモータを止める
OnFwd(OUT_B); // アームを動かしてブロックを投げる
Wait(100); // アームを動かす時間は1秒
Off(OUT_B); // B出力のモータを止める
}
if((SENSOR_1 < IKICHI) && (SENSOR_3 > IKICHI)) // センサ端子1の光センサが閾値より小さい、
{ // または、センサ端子3の光センサが閾値より大きいとき
OnFwd(OUT_A); // 時計回りに回って懐中電灯の光に向かって進む
}
if((SENSOR_1 > IKICHI) && (SENSOR_3 < IKICHI)) // センサ端子1の光センサが閾値より大きい、
{ // または、センサ端子3の光センサが閾値より小さいとき
OnRev(OUT_A); // 反時計回りに回って懐中電灯の光に向かって進む
}
}
}
*制作してみての感想 [#tfc3c8b0]
<苦労した点>
全体的にプログラムを作るのが難しかった。特に、懐中電灯を追いかけるプログラムでは、光センサの感度が悪く、調整がうまくできなかったので大変だった。他にも、前進するときに、タイヤの着いてるモータを交互に少しずつ動かさなければいけないが、モータを動かす時間を調節することが難しかった。
<工夫した点>
ロボットを支える補助輪がスムーズに動くように、あえてタイヤにゴムを付けなかったところ。
ロボット全体をコンパクトにするように心がけた。
ブロックを投げるときに、遠くに飛ぶように、アームが動く途中にストッパーをつけた。また、アームが動く前の待機位置にもストッパーを付けた。
***コメントお願いします [#ucc60da5]
#comment
課題1では相対的に最も明るい方向を探せるプログラムにしてください。I
ページ名: