- 追加された行はこの色です。
- 削除された行はこの色です。
[[ロボティクス入門ゼミ]]
* 1. ハート形を描くロボット(必須) [#hd992a47]
ロボットにペンを取り付けA3用紙にハート型を描くロボットを作成しなさい。
#define gostraight OnFwd(OUT_A+OUT_C);Wait(135);Off(OUT_A+OUT_C);//まっすぐ進みます。(それだけ)
#define turn OnFwd(OUT_A);OnRev(OUT_C);Wait(400);Off(OUT_A+OUT_C);//その場で回転して向きを変えます。
#define left OnFwd(OUT_A);Wait(1500);Off(OUT_A);//右のタイヤだけ動かして左向きに回ります。
task main()
{
SetPower(OUT_A,5);
SetPower(OUT_C,5);
left;
left;/まずはハートの上のとこから半円を描きます。
Wait(100);
OnFwd(OUT_A);
Wait(10);
Float(OUT_A);
gostraight;
turn;
gostraight;
gostraight;/一度止めてまっすぐ進み、
turn;/その場で回転します。
gostraight;/またまっすぐ進んで、
Wait(100);
left;
left;/半円を書いて完成。
}
* 2. 台から落ちないロボット(必須) [#m6720385]
机の上で動き回るロボットを作成しなさい。 ただし方向変換は机の端に来たときに行うこと。
task main()
{ SetSensor(SENSOR_3,SENSOR_TOUCH);
SetSensor(SENSOR_1,SENSOR_TOUCH);
while(true)
{OnFwd(OUT_A+OUT_C);
until((SENSOR_3==1)||(SENSOR_1==1));
Off(OUT_A+OUT_C);
OnRev(OUT_A+OUT_C);
Wait(100);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(100);} }
* 3. ライントレースをするロボット(必須) [#oec24ec0]
できるだけ速いロボットを作成すること
#define THRESHOLD 39 // 閾値
#define RUN_TIME 150 // トレースする時間(単位 1/10 秒)
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
while ( true ) {
if (SENSOR_1 < THRESHOLD) {
OnFwd(OUT_A+OUT_C);
}
else {
OnRev(OUT_A);
OnFwd(OUT_C);
Wait(50);
}
if (SENSOR_1 < THRESHOLD){
OnFwd(OUT_A+OUT_C);
}
else {OnRev(OUT_C);
OnFwd(OUT_A);
Wait(100);
}
}
}
* 4. 光を追いかけるロボット(必須) [#k34b2e3b]
まず最初に一回転してもっとも明るい方向(懐中電灯の方向)を探し、次に懐中電灯の光を追いかけて進むようなロボットを作成しなさい。
* 5. 演奏ロボット(必須) [#o57ee827]
インストラクション(説明書)の最後にある「Top Secret」を参考に、音楽を演奏しながら前進し障害物にぶつかったら(あるいは明るい光にあたったら)後退しながら方向を変えるロボットを作成しなさい。ただし移動のためのモータはひとつだけ使うものとし、また前進しているときと後進している時で違う音楽を演奏すること。
#define Do 523
#define Re 587
#define Mi 659
#define Fa 698
#define So 784
task music1()
{ while(true){
PlayTone(Do,15); Wait(20); // Wait の時間の方を少し長くして
PlayTone(Mi,15); Wait(20); // 同じ音を続けて鳴らす場合にも
PlayTone(Fa,15); Wait(20); // 一つの音にならないようにしている
PlayTone(So,60); Wait(20);
PlayTone(Do,15); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Fa,15); Wait(20);
PlayTone(So,60); Wait(20);
PlayTone(Do,15); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Fa,15); Wait(20);
PlayTone(So,30); Wait(20);
PlayTone(Mi,30); Wait(20);
PlayTone(Do,30); Wait(20);
PlayTone(Re,30); Wait(20);
PlayTone(Do,60); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Re,15); Wait(20);
PlayTone(Do,35); Wait(20);
PlayTone(Do,5); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(So,15); Wait(20);
PlayTone(So,15); Wait(20);
PlayTone(Fa,60); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Fa,15); Wait(20);
PlayTone(So,30); Wait(20);
PlayTone(Mi,30); Wait(20);
PlayTone(Do,30); Wait(20);
PlayTone(Re,30); Wait(20);
PlayTone(Do,65); Wait(20);
}
task music2()
{
while(true){
PlayTone(Mi,15); Wait(20); // Wait の時間の方を少し長くして
PlayTone(Mi,15); Wait(20); // 同じ音を続けて鳴らす場合にも
PlayTone(Fa,15); Wait(20); // 一つの音にならないようにしている
PlayTone(So,15); Wait(20);
PlayTone(So,15); Wait(20);
PlayTone(Fa,15); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Re,15); Wait(20);
PlayTone(Do,15); Wait(20);
PlayTone(Do,15); Wait(20);
PlayTone(Re,15); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Mi,22); Wait(20);
PlayTone(Re,8); Wait(20);
PlayTone(Re,15); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Fa,15); Wait(20);
PlayTone(So,15); Wait(20);
PlayTone(So,15); Wait(20);
PlayTone(Fa,15); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Re,15); Wait(20);
PlayTone(Do,15); Wait(20);
PlayTone(Do,15); Wait(20);
PlayTone(Re,15); Wait(20);
PlayTone(Mi,15); Wait(20);
PlayTone(Re,22); Wait(20);
PlayTone(Do,7); Wait(20);
PlayTone(Do,30); Wait(20);
task main()
{
start music1; Wait(500);
OnFwd(OUT_A+OUT_C); Wait(300);
Off(OUT_A+OUT_C); Wait(200);
stop music1;
start music2; Wait(600);
OnRev(OUT_A+OUT_C); Wait(600);
}
* 6. 二足歩行ロボット(自由) [#a980f986]
* 7. その他(自由) [#x46555d3]