/*! \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); } }
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 } }
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 } }
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 } }