**プログラム解説 [#r10ac5dd] ここで同じようなプログラム[PlaySound(SOUND_CLICK);やOff(OUT_BC);Wait(500);]が使われています。これはある動作が完了したことを示すためにピッという音を鳴らし、各動作をはっきりさせるために一時停止をしています。また今回の課題に余り時間をかけられなかったので1個のコップの運搬までしかプログラミングが出来ていません。ご了承下さい。 コップは茶色のコップを使用し、白黒の着色で区別しました。 ^ **マスター(親機)のプログラム [#hb3ad0c4] #define black 36 #define speed 35 #define A 38 #define B 65 task main() { SetSensorLight(S1); SetSensorLight(S4); SetSensorLowspeed(S3); int msg; until(BluetoothStatus(1) == NO_ERR); RemotePlayTone(1,440,1000); Off(OUT_BC); Wait(1200); OnFwdSync(OUT_BC,speed,0); until(SENSOR_1 < black); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwdSync(OUT_BC,speed,0); Wait(400); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwdSync(OUT_BC,speed,0); until(SENSOR_1 < black); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwdSync(OUT_BC,speed,0); Wait(500); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwd(OUT_B,speed); OnRev(OUT_C,speed); until(SENSOR_1 < black); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(700); OnFwd(OUT_B,speed); OnRev(OUT_C,speed); Wait(180); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwdSync(OUT_BC,speed,0); Wait(1100); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwdSync(OUT_BC,speed,0); until(SENSOR_1 < black); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwdSync(OUT_BC,speed,0); Wait(500); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwdSync(OUT_BC,speed,0); until(SENSOR_1 < black); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwdSync(OUT_BC,speed,0); Wait(600); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwd(OUT_B,speed); OnRev(OUT_C,speed); until(SENSOR_1 < black); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnRevSync(OUT_BC,speed,0); Wait(2000); OnFwdSync(OUT_BC,speed,0); until(SensorUS(S3) <= 12); Off(OUT_BC); Wait(100); RemoteStartProgram(1,"z_slave.rxe"); while(msg != 11){ ReceiveRemoteNumber(MAILBOX1,true,msg); } PlaySound(SOUND_CLICK); if(SENSOR_4 < A){ OnFwdSync(OUT_BC,speed,0); until(SensorUS(S3) <= 18); Off(OUT_BC); Wait(100); RemoteStartProgram(1,"z_slave-2.rxe"); while(msg != 12){ ReceiveRemoteNumber(MAILBOX1,true,msg); } PlaySound(SOUND_CLICK); }else if(SENSOR_4 < B){ OnFwdSync(OUT_BC,speed,0); Wait(2000); PlaySound(SOUND_CLICK); Off(OUT_BC);Wait(500); OnFwd(OUT_B,speed); OnRev(OUT_C,speed); until(SensorUS(S3) < 18); PlaySound(SOUND_CLICK); Off(OUT_BC); Wait(100); RemoteStartProgram(1,"z_slave-2.rxe"); while(msg != 12){ ReceiveRemoteNumber(MAILBOX1,true,msg); } PlaySound(SOUND_CLICK); }else{ OnFwdSync(OUT_BC,speed,0); Wait(6000); OnFwd(OUT_B,speed); OnRev(OUT_C,speed); until(SensorUS(S3) < 30); PlaySound(SOUND_CLICK); Off(OUT_BC); Wait(100); OnFwdSync(OUT_BC,speed,0); until(SensorUS(S3) <= 18); Off(OUT_BC); Wait(100); RemoteStartProgram(1,"z_slave-2.rxe"); Off(OUT_BC); Wait(100); RemoteStartProgram(1,"z_slave-2.rxe"); while(msg != 12){ ReceiveRemoteNumber(MAILBOX1,true,msg); } PlaySound(SOUND_CLICK); } } **スラーブ(子機)のプログラム [#hf88096c] task main() { PlaySound(SOUND_CLICK); OnFwd(OUT_A,70);Wait(2800);Off(OUT_A); OnRev(OUT_C,20);Wait(800);Off(OUT_C); OnRev(OUT_A,60);Wait(2800);Off(OUT_A); SendResponseNumber(MAILBOX1,11); Wait(1000); PlaySound(SOUND_CLICK); } task main() { PlaySound(SOUND_CLICK); OnFwd(OUT_A,60);Wait(900);Off(OUT_A); OnFwd(OUT_C,20);Wait(700);Off(OUT_C); OnRev(OUT_A,80);Wait(1800);Off(OUT_A); SendResponseNumber(MAILBOX1,12); Wait(1000); PlaySound(SOUND_CLICK); }