- 追加された行はこの色です。
- 削除された行はこの色です。
*目次 [#ef45319a]
#contents
*課題 [#x8b1c317]
**お絵描きロボット [#o96ebfc0]
・A3用紙に相棒の似顔絵を書くロボットの製作
*使用したロボット [#mb1b44ca]
**課題を行うために必要な機能 [#o9868197]
・前進後進が可能~
・左右に方向転換、及びその場での回転が可能~
・ペンを装着し固定できる~
・モーターによってペンを上げ下げできる~
・ペンと紙との摩擦でペンがずれない~
・動作中に分解しない耐久性がある~
~
以上の点を満たすロボットを制作した
以上の点を満たすロボットを制作した~
** [#td9b1999]
**ロボットの説明 [#g781b7ed]
*プログラム [#s91e56ea]
**A [#ucc27b6f]
#define up OnRev(OUT_B);Wait(10);Off(OUT_B); //「up」でペンを上げる
#define down OnFwd(OUT_B);Wait(40);Off(OUT_B); //「down」でペンを下げる
#define matu Off(OUT_A+OUT_C);Wait(50); //「matu」で0.5秒間モーターA,Bの動作停止
void go(int t)
{
OnFwd(OUT_C+OUT_A);Wait(t); //「go(秒数)」で秒数分だけ前進
}
void back(int t)
{
OnRev(OUT_C+OUT_A);Wait(t); //「back(秒数)」で秒数分だけ後進
}
void right(int t)
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(t); //「right(秒数)」で秒数分だけ右回りに回転
}
void left(int t)
{
OnFwd(OUT_C);OnRev(OUT_A);Wait(t); //「left(秒数)」で秒数分だけ左回りに回転
}
task main()
{
left(40) //左の眉毛を書く
matu
down
right(80)
matu
up
matu
right(40)
matu
go(90) //右の眉毛に移動
matu
left(90)
matu
left(40) //右の眉毛を書く
matu
down
right(80)
matu
up
matu
right(40) //右目に移動
matu
back(30)
matu
down
matu
back(40) //右目を書く
matu
up
right(190) //180度回転と同時に左目の移動
matu
down //左目を書く
matu
back(40)
matu
go;(20) //顔の中心に移動
matu
up
matu
left(90) //左に90度回転
matu
down //鼻を書く
go(30)
up
matu
go(50) //口に移動
matu
left(40) //口を書く
matu
down
matu
right(80)
matu
Off(OUT_A+OUT_B+OUT_C); //停止
}
**B [#ia3e4da6]
*苦労した点 [#qda0b9ec]
**問題点 [#b79e5c23]
1:ペンを下げるときに出しすぎてしまい車体が浮いてしまう~
2:できる限り小さな円を描こうとした結果ロボットの重心が後方にずれてしまい急発進する際に後ろに浮き上がることがあった~
3:プログラムを書く際にOnFwd(OUT_A+OUT_C);Wait(300);・・・のように前進させるだけでも長い文を書かなければならず手間がかかるうえに解りずらい~
4:ペンが紙から離れる前に次の動作が動き出し紙に不要な線ができる
**解決策 [#xc6f855d]
1:ペンの構造を利用してブロックである一定以上にペンが出すぎるのを防いだ~
2:ロボットの後ろにストッパーをつけて浮き上がってもすぐに戻るようにした~
3:最初に前進、後進、方向転換を「go(300)」「back(300)」のように定義することで書きやすく分かりやすいプログラムを書いた~
4:ひとつの動作が終わるごとにすべてのタイヤのモーターを止めることで不要な線が書かれるのを防いだ~
*コメントをどうぞ [#m2bc11ac]
#comment