み〜た〜なぁ
#define GREEN_LINE 42 //緑の線は42以下 #define BLACK_LINE 37 //黒の線は37以下 #define WHITE 44 //白の紙は44以上 int back_time; //下がる時間の関数定義 sub turn1()
{
OnFwd(OUT_A); OnRev(OUT_C); Wait(125); Off(OUT_A+OUT_C);
} //Uターンの定義
sub turn_left() { OnFwd(OUT_C); OnRev(OUT_A); Wait(65); Off(OUT_A+OUT_C); } //左回り sub turn_right() { OnFwd(OUT_A); OnRev(OUT_C); Wait(65); Off(OUT_A+OUT_C); } //右回り
task main() {
SetSensor(SENSOR_3,SENSOR_TOUCH); SetSensor(SENSOR_2,SENSOR_LIGHT); SetSensor(SENSOR_1,SENSOR_LIGHT); back_time=500; OnFwd(OUT_A+OUT_C); Wait(40); //前から落下 turn_left(); //すかさず左 OnFwd(OUT_A+OUT_C); until(SENSOR_1<GREEN_LINE); //緑線まで前進 OnFwd(OUT_A); OnRev(OUT_C); Wait(10); while(SENSOR_1>BLACK_LINE){ if(BLACK_LINE<SENSOR_1<GREEN_LINE){ OnFwd(OUT_A); OnRev(OUT_C); } if(SENSOR_1>WHITE){ OnFwd(OUT_C); OnRev(OUT_A); } } Off(OUT_A+OUT_C);
OnFwd(OUT_A); OnRev(OUT_C); Wait(10);
while((SENSOR_1<BLACK_LINE)||(SENSOR_1>WHITE)){ if(SENSOR_1<BLACK_LINE){ OnFwd(OUT_A); OnRev(OUT_C); } if(SENSOR_1>WHITE){ OnFwd(OUT_C); OnRev(OUT_A); } } repeat(2){ while(SENSOR_1<BLACK_LINE){ if(BLACK_LINE<SENSOR_1<GREEN_LINE){ OnFwd(OUT_C); OnRev(OUT_A); } if(SENSOR_1>WHITE){ OnFwd(OUT_A); OnRev(OUT_C); } } OnFwd(OUT_A+OUT_C); Wait(50); }
OnFwd(OUT_A+OUT_C); until(SENSOR_2<BLACK_LINE); Off(OUT_A+OUT_C);
OnRev(OUT_A+OUT_C); Wait(back_time);//通信しながらバックさせる予定 turn_right();
OnFwd(OUT_A+OUT_C); Wait(300); //右旋回して前進 turn1(); //方向転換 OnFwd(OUT_A+OUT_C); Wait(250);
新型#include "spy.nqh"
#define l_Mi 330
#define l_Fa 349
#define l_Sol 392
#define l_Sol_ 415
#define l_La 440
#define l_Si 494
#define Do 523
#define Do_ 554
#define Re 587
#define Re_ 662
#define Mi 659
#define Fa 698
#define Fa_ 740
#define Sol 784
#define Sol_ 831
#define La 880
#define Si 988
#define h_Do 1047
#define A 50
#define A_ 48
#define B 25
#define B_ 23
#define C 17
#define C_ 15
#define D 12
#define D_ 10
#define E 150
#define E_ 148
/*猪木のテーマを流すプログラム*/ task music_inoki() { while(true) { PlayTone(Sol,E_); Wait(E); PlayTone(l_Sol,A_); Wait(A); PlayTone(l_Sol_,E_); Wait(E);
PlayTone(Sol,A_); Wait(A); PlayTone(Fa_,E_); Wait(E); PlayTone(l_La,A_); Wait(A); PlayTone(l_Si,E_); Wait(E); Wait(A);
PlayTone(Mi,E_); Wait(E); PlayTone(l_Mi,A_); Wait(A); PlayTone(l_Fa,E_); Wait(E);
PlayTone(Re,A_); Wait(A); PlayTone(Do_,E_); Wait(E); PlayTone(l_Mi,A_); Wait(A); PlayTone(l_Fa,E_); Wait(E); Wait(A);
} }
/*『バックします』の音楽を流すプログラム*/ task music_back() { while(true) { PlayTone(Sol,15);Wait(30); PlayTone(Re,15);Wait(20); PlayTone(Re,15);Wait(20); PlayTone(Re,15);Wait(20); Wait(80); PlayTone(Si,70); Wait(90); PlayTone(Si,70); Wait(90); PlayTone(Si,70); Wait(90); PlayTone(Si,70); Wait(90); Wait(100); } }
task main() {
while(1) {
start music_inoki; OnRev(OUT_A); OnRev(OUT_B); until (SENSOR_1 == 1) ; stop music_inoki; start music_back; Off(OUT_A+OUT_B); Wait(200);
OnFwd(OUT_A); OnFwd(OUT_B); until (SENSOR_2 < 20) ; Float(OUT_A+OUT_B); stop music_back; Wait(100); OnFwd(OUT_A); OnRev(OUT_B); // C 出力に接続されたモータを正回転させる Wait(100); // プログラムの実行を3秒待つ (単位は1/100秒) // この間 A と C のモータは回転したまま (現状維持) Off(OUT_A+OUT_B); // A と C 出力のモータを止める Wait(100); }
}
のぐ失敗プロ
#include "spy.nqh"
int touch;
int A;
sub turn_left(){
OnRev(OUT_A); OnFwd(OUT_C); Wait(100);
}
sub turn_right(){
OnFwd(OUT_A); OnRev(OUT_B); Wait(100);
}
sub go(){
OnRev(OUT_A); OnRev(OUT_B); }
sub go_back(){
OnFwd(OUT_A); OnFwd(OUT_B); }
task main() {
touch == 0 ;
go(); until(SENSOR_1 == 1) ; touch ++ ;
while(touch < 4){ go_back(); Wait(50); turn_right(); go(); until(SENSOR_1 == 1) ; touch ++ ; }
A == 0 ; while(A <= 3){
go_back(); until (SENSOR_2 < 10); A ++ ;
if(A < 3){ go(); Wait(200); turn_left(); } }
while(true){ Off(OUT_A+OUT_B); Wait(100);
touch == 0 ;
while(touch < 4){
go(); until(SENSOR_1 == 1) ; touch ++ ;
if(touch < 3){ go_back(); Wait(50); turn_right(); } }
A == 0 ; while(A < 4){
go_back(); until (SENSOR_2 < 10) ; A ++ ;
if(A < 3){ go(); Wait(200); turn_left(); } }
} }