Ejemplo n.º 1
0
/*! \brief Main entity routine
 *
 * The main routine that loops through the entity list and processes each
 * one.
 */
void process_entities(void)
{
    t_entity i;
    const char *t_evt;

    for (i = 0; i < MAX_ENT; i++)
    {
        if (g_ent[i].active == 1)
        {
            speed_adjust(i);
        }
    }

    /* Do timers */
    t_evt = get_timer_event();
    if (t_evt)
    {
        do_timefunc(t_evt);
    }
}
Ejemplo n.º 2
0
void linefollow(void){
	//using float variable for the sensors to have the most 	accurate
	float color;
	float light;
	float sonar;

	// reading the sensor value
	light = SensorValue[S2];
	color = SensorValue[S1];
	sonar = SensorValue[S3];

	// displaying the values from above
	nxtDisplayTextLine(1, "color: %d", color);
	nxtDisplayTextLine(2, "light: %d", light);
	nxtDisplayTextLine(3, "sonar: %d", sonar );

	// if an object is closer then 30 centimeters do the folowing
	if(sonar < 30) {
		speed_adjust(60, 0, -4);//slow down

		for (int i = 0; i < 10;){//slowly start turning
			motor[motorA] = i;
			motor[motorB] = -i;
			wait(0.4);
			i++;
		}

		while(1){//wait until you see the line
			if (SensorValue[S2] < 60){
				for (int i = 10; i < 0;){//slow down the turning speed
					motor[motorA] = i;
					motor[motorB] = -i;
					wait(0.4);
					i+=2;
				}
				break;
			}
		}
	}

	//redirect the robot by using the light sensor
	else if (light < 69){
		float formule;
		float omrek;
		float formule2;
		omrek = light-39;
		nxtDisplayTextLine(4, "lomrek : %d", omrek);

		if(omrek<5){
			formule =100;
			formule2=0;
		}
		else if (omrek<10){
			formule = -0.4*omrek+100;
			formule2 = -1.428*omrek+50;
		}
		else{
			formule = -0.9*omrek+100;
			formule2 = -1.428*omrek+50;
		}

		//startTask(music);//starts the music
		motor(motorA) = formule;//50+((60-light)*2.5)
		motor(motorB) =formule2;//35  //0
	}

	// redirecting the robot by using hte color sensor
	else if(color < 51) {//vorige waarde: 4
		// float variables for best accurate values
		float formule;
		float omrek;
		float formule2;

		omrek = color-22;
		nxtDisplayTextLine(5, "comrek : %d", omrek);

		if(omrek<5)
		{
			formule =100;
			formule2=0;
		}

		else if (omrek<10)
		{
			formule = -0.4*omrek+100;
			formule2 = -1.428*omrek+50;
		}

		else {
			formule = -0.9*omrek+100;
			formule2 = -1.428*omrek+50;
		}

		startTask(music);//starts the music
		motor(motorA) = formule2;//0
		motor(motorB) =formule ;//50+(50-color)*1+(2/3))
	}
	else {
		setMultipleMotors(50,motorA,motorB);//70 //100
	}
}
Ejemplo n.º 3
0
void need_for_speed(void){
	//using float variable for the sensors to have the most 	accurate
	float color;
	float light;
	float sonar;
	// reading the sensor value
	light = SensorValue[S2];
	color = SensorValue[S1];
	sonar = SensorValue[S3];
	// displaying the values from above
	nxtDisplayTextLine(1, "color: %d", color);
	nxtDisplayTextLine(2, "light: %d", light);
	nxtDisplayTextLine(3, "sonar: %d", sonar );
	// if an object is less than 15 centimeters the top
	if(sonar <35) {
		//setMultipleMotors(0,motorA,motorB);
		speed_adjust(60, 0, -3, 0);
		string s = "";
		check_bleutooth(&s);//laten omdraaien moet nog
	}
	//redirect the robot by using the light sensor
	else if (light < 65){
		float formule;
		float omrek;
		float maal = 0;

		omrek = 65-light;
		formule = (65+(omrek)*(1+(2/3)));
		nxtDisplayTextLine(4, "omrekrechts: %d", omrek );

		if (omrek< 10){
			maal =1.2;
		}
		else if(omrek>25){
			maal = 2 +((omrek-25)*0.1);
		}
		else {
			(maal = 1.2+(omrek-10)*0.055);
		}

		startTask (music);//starts music
		motor(motorA) = formule;//50+((60-light)*2.5)
		motor(motorB) =45-(omrek*maal);//35  //0
	}
	// redirecting the robot by using hte color sensor
	else if(color < 48) {//vorige waarde: 4
		// float variables for best accurate values
		float formule;
		float omrek;
		float maal =0;

		omrek = 48-color;
		formule = (65+(omrek)*(1+(2/3)));
		nxtDisplayTextLine(5, "omreklinks: %d", omrek );

		if (omrek< 10){
			maal = 1.2;
		}
		else if(omrek>25){
			maal = 2 + ((omrek - 25)*0.1);
		}
		else{
			maal=(1.2+(omrek-10)*0.055);
		}
		
		startTask (music);//starts music
		motor(motorA) = 45-(omrek*maal);//0
		motor(motorB) =formule ;//50+(50-color)*1+(2/3))
	}
	else {
		setMultipleMotors(65,motorA,motorB);//70 //100
	}
}
Ejemplo n.º 4
0
void linefollow(void) {
    //using float variable for the sensors to have the most accurate
    float color;
    float light;
    float sonar;

    // reading the sensor value
    light = SensorValue[S2];
    color = SensorValue[S1];
    sonar = SensorValue[S3];

    // displaying the values from above
    //nxtDisplayTextLine(1, "color: %d", color);
    //nxtDisplayTextLine(2, "light: %d", light);
    //nxtDisplayTextLine(3, "sonar: %d", sonar);

    // if an object is closer then 30 centimeters do the folowing
    if (sonar < 30) {
        speed_adjust(60, 0, -4); //slow down

        for (int i = 0; i < 10;) {//slowly start turning
            motor[motorA] = i;
            motor[motorB] = -i;
            wait(0.4);
            i++;
        }

        while (1) {//wait until you see the line
            if (SensorValue[S2] < 60) {
                for (int i = 10; i < 0;) {//slow down the turning speed
                    motor[motorA] = i;
                    motor[motorB] = -i;
                    wait(0.4);
                    i += 2;
                }
                break;
            }
        }
    }        //redirect the robot by using the light sensor
    else if (light < (maxlight - 5)) {
        // float variable for the formule math
        float formule;
        float omrek;
        float formule2;
        //omrek is used to can use the formules in every surroundings

        omrek = light - minlight;
        // show the result of the omrek on line 4
        nxtDisplayTextLine(4, "lomrek : %f", omrek);
        // if omrek is lower then 5 use 100 and 1 for a real sharp turn
        if (omrek < 5) {
            formule = 100;
            formule2 = 1;
        }// if the omrek is between 5 and 10 use a formule that gives a heavier control
        else if (omrek < 10) {
            formule = -0.4 * omrek + 100;
            formule2 = -1.428 * omrek + 50;
        }// the standaard formule for following the line
        else {
            formule = -0.9 * omrek + 100;
            formule2 = -1.428 * omrek + 50;
        }

        startTask(music); //starts the music
        // give the motor a and b the result of the formules
        motor(motorA) = formule; //50+((60-light)*2.5)
        motor(motorB) = formule2; //35  //0
    }        // redirecting the robot by using hte color sensor
    else if (color < (maxcolor - 5)) {//vorige waarde: 4
        // float variables for best accurate values
        float formule;
        float omrek;
        float formule2;
        //omrek is used to can use the formules in every surroundings
        omrek = color - mincolor;
        // show the result of the omrek on line 5
        nxtDisplayTextLine(5, "comrek : %d", omrek);
        // if omrek is lower then 5 use 100 and 1 for a real sharp turn
        if (omrek < 5) {
            formule = 100;
            formule2 = 1;
        }// if the omrek is between 5 and 10 use a formule that gives a heavier control
        else if (omrek < 10) {
            formule = -0.4 * omrek + 100;
            formule2 = -1.428 * omrek + 50;
        }// the standaard formule for following the line
        else {
            formule = -0.9 * omrek + 100;
            formule2 = -1.428 * omrek + 50;
        }

        startTask(music); //starts the music
        // give the motor a and b the result of the formules
        motor(motorA) = formule2; //0
        motor(motorB) = formule; //50+(50-color)*1+(2/3))
    } else {
        //if their isn't steering nessasary then both motors gets 50 as speed
        setMultipleMotors(10, motorA, motorB); //70 //100
    }
}