if(  bmp_1 == 3)

            {

                drive( -80 ,0);

                wait( 0.200000 );

                stop();

                drive( 0 , 80);

                wait( 0.100000 );

                stop();

            }

        }

    }

    return;

}

void SubRoutine_2( )    /*趋光*/

{

    photo_1 =photo(1);

    photo_2 =photo(2);

    if(photo_1 < photo_2)

    {

        motor( 1 , 10 );

        motor( 2 , 80 );

    }

    else

    {

        if(photo_2 < photo_1)

        {

            motor( 1 , 80 );

            motor( 2 , 10 );

        }

        else

        {

            motor( 1 , 80 );

            motor( 2 , 80 );

        }

    }

    return;                   /*趋光的基本方法,靠两个传感器返回值的差判断机器人相对蜡烛的                               方向,同样对两个传感器的位置要求较高*/

}

 

void SubRoutine_4( )    /*灭火*/

{

    stop();

    wait( 0.500000 );

    motor( 1 , -100 );

    motor( 2 , 100 );

    motor( 3 , 100 );

    wait( 5.000000 );

    stop();

    return;            /*灭火后应有检测,避免蜡烛火焰未熄灭机器人便开始回家*/

}

void SubRoutine_5( )   /*右手走*/

{

    ir_1 =ir_detector();

    if(  ir_1 == 4){

        drive( 0 , -80);

        wait( 0.100000 );

        stop();

    }

    else

    {

        ir_1 =ir_detector();

        if(  ir_1 == 2)

        {

            drive( 0 , -80);

            wait( 0.100000 );

            stop();

        }

        else

        {

            motor( 1 , 100 );

            motor( 2 , 20 );

        }

    }

    bmp_1 = bumper();

    if(  bmp_1 != 0)

    {

        drive( -80 ,0);

        wait( 0.200000 );

        stop();

        drive( 0 , -80);

        wait( 0.100000 );

        stop();

    }

    return;

}                                 /*右手走用于回家,对避免撞墙的要求不高,可适当简化程序*/

 

/*这是一个最基本的灭火程序,但基本上实现了灭火比赛的一般要求,回家、避障、灭火等均可完成,一些细节完成的也很好。但如果要取得好成绩,这样的程序显然是不够的,而且稳定性不够好,一个环节出现失误会带来连锁反应,影响后面任务的完成,应加入一定的失误修补代码。同时如果要在比赛中取得好成绩,硬件也十分关键,不一定要非常好的配置,但位置、连接等因素也极为关键,需要多多调试,积累丰富的经验才可以。*/