- 追加された行はこの色です。
- 削除された行はこの色です。
*目次 [#b25d0539]
#contents
*最初のプログラム [#ofa238ac]
**課題:三角形に動くロボット [#ic250380]
task main()
{
OnFwd(OUT_C);
OnFwd(OUT_A);
Wait(300);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(88);
OnFwd(OUT_C);
OnFwd(OUT_A);
Wait(300);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(88);
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(300);
Off(OUT_A+OUT_C);
}
感想:これではちゃんとした三角形にならなかった。
回転する長さを考慮する必要がある。
**課題:三角形に動くロボット(改) [#sb42391c]
#define x 300
#define y 88
task main()
{
repeat(2){
OnFwd(OUT_C);
OnFwd(OUT_A);
Wait(x);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(y);
}
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(x);
Off(OUT_A+OUT_C);
}
感想:定義を使用。ちょっとだけ見やすくなったと思う。
*書道ロボット [#pf7fc2d4]
**課題:「左」を書く、書道ロボット [#j7ad21aa]
**課題:「左」を書く書道ロボット [#j7ad21aa]
task main()
{
OnRev(OUT_B);
Wait(50);
//ペンを下げる
OnFwd(OUT_C);
OnFwd(OUT_A);
Wait(75);
Off(OUT_C+OUT_A);
//1画目
OnFwd(OUT_B);
Wait(50);
Off(OUT_B);
//ペンを上げる
OnRev(OUT_C);
OnRev(OUT_A);
Wait(120);
Off(OUT_C+OUT_A);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(115);
Off(OUT_C+OUT_A);
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(30);
Off(OUT_C+OUT_A);
//2画目へ移動
OnRev(OUT_B);
Wait(50);
//ペンを下げる
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(90);
Off(OUT_A+OUT_C);
//2画目
OnFwd(OUT_B);
Wait(50);
Off(OUT_B);
//ペンを上げる
OnRev(OUT_C);
OnRev(OUT_A);
Wait(95);
Off(OUT_C+OUT_A);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(108);
Off(OUT_C+OUT_A);
OnFwd(OUT_C);
OnFwd(OUT_A);
Wait(75);
Off(OUT_C+OUT_A);
//3画目へ移動
OnRev(OUT_B);
Wait(50);
//ペンを下げる
OnFwd(OUT_C);
OnFwd(OUT_A);
Wait(40);
Off(OUT_C+OUT_A);
//3画目
OnFwd(OUT_B);
Wait(50);
Off(OUT_B);
//ペンを上げる
OnRev(OUT_C);
OnRev(OUT_A);
Wait(85);
Off(OUT_C+OUT_A);
OnRev(OUT_C);
OnFwd(OUT_A);
Wait(107);
Off(OUT_C+OUT_A);
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(61);
Off(OUT_C+OUT_A);
//4画目へ移動
OnRev(OUT_B);
Wait(50);
//ペンを下げる
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(35);
Off(OUT_C+OUT_A);
//4画目
OnFwd(OUT_B);
Wait(50);
Off(OUT_B);
//ペンを上げる
OnRev(OUT_C);
OnRev(OUT_A);
Wait(65);
Off(OUT_C+OUT_A);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(102);
Off(OUT_C+OUT_A);
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(40);
Off(OUT_C+OUT_A);
//5画目へ移動
OnRev(OUT_B);
Wait(50);
//ペンを下げる
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(60);
Off(OUT_C+OUT_A);
//5画目
OnFwd(OUT_B);
Wait(50);
Off(OUT_B);
//ペンを上げる
}
感想:1度はFloatを使おうとしたけど妥協。
サブルーチンや変数、定数を使わなかったので、かなり長いプログラムに
なってしまった。
紙に書いてみても、バランスの悪いものとなってしまった。
**課題「左」を書く書道ロボット(改) [#wb02f990]
*タッチセンサー [#qa6c36cc]
**課題:机の周りを沿って進むロボット~失敗編~ [#r625d3cb]
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
while(true)
{
if (SENSOR_3 == 1 )
{
OnFwd(OUT_A+OUT_C);
}
if (SENSOR_3 == 0 )
{
while(true){
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(30);
OnFwd(OUT_A+OUT_C);
Wait(30);
}
until((SENSOR_1 == 1 )&&(SENSOR_3 == 0 ))
if ((SENSOR_1 == 1 )&&(SENSOR_3 == 0 ))
{
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(90);
}
}
}}
感想:2つ目のifを繰り返してしまう。whileの使い方を間違ってるみたい。
**課題:机の周りを沿って進むロボット~成功編~ [#raa3e593]
*光センサー [#y3481636]
**ライントレースするロボット~光センサー1個使用~ [#c6ba4b0e]
#define T 40
task main ()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
while (true) {
if (SENSOR_2 < T) { //センサーが線の上にある条件
OnFwd(OUT_A);
Off(OUT_C);
} else { //それ以外の条件
Off(OUT_A);
OnFwd(OUT_C);
}
}
}
感想:うまくライントレースしてくれた。モーターはタイヤ。
**ライントレースするロボット~光センサー2個使用(前後に設置)~ [#i482f782]
#define T 40
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
while (true) {
if ((SENSOR_1 < T) &&(SENSOR_3 < T)){
//前後のセンサーが線の上にある条件
OnFwd(OUT_A);
OnFwd(OUT_C);
} if (SENSOR_1 < T){ //前のセンサーのみ線の上にある条件
OnFwd(OUT_A);
Off(OUT_C);
} if (SENSER_1 < T){ //後のセンサーのみ線の上にある条件
Off(OUT_A);
OnFwd(OUT_C);
}
}
}
感想:うまくライントレースしなかった。
両方のセンサーが線から離れないと曲がらないようにしたため、
車体の長さの分、線からはみ出すまで進んだ。
結果、ズルをしたり、線から離れるロボットとなった。