int main() { //Turn off the IR proximity sensors and the IR sharp sensor. DDRH |= (1 << 2) | (1 << 3); PORTH |= (1 << 2) | (1 << 3); //Turn off the white line sensors. DDRG |= (1 << 2); PORTG |= (1 << 2); set_motors(); while(1) { velocity(forwardLeftSpeed, forwardRightSpeed); forward_mm(1000); stop(); _delay_ms(3000); velocity(backLeftSpeed, backRightSpeed); back_mm(1000); stop(); _delay_ms(3000); velocity(leftLeftSpeed, leftRightSpeed); left_degrees(90); stop(); _delay_ms(3000); velocity(rightLeftSpeed, rightRightSpeed); right_degrees(90); stop(); _delay_ms(3000); right_degrees(90); stop(); _delay_ms(3000); velocity(leftLeftSpeed, leftRightSpeed); left_degrees(90); stop(); _delay_ms(3000); } }
void rotate_right_slowly() { //velocity(150,150); while(1) { stop(); read_sensor(); // For center black line if(Center_white_line>0x20) { break; } else { right_degrees(10); } } //velocity(130,130); //stop(); }
void turn_right(int degree){ pen_up(); _delay_ms(100); move_straight(245,1); right_degrees(degree); move_straight(255,0); pen_down(); }
void turnRight() //turns the robo right { velocity(turn_v,turn_v); forward_mm(85); right_degrees(90); dir = (dir + 1) % 4; //..printf("Turn Right \n"); }
void turnLeft() //turns the robo left { velocity(turn_v,turn_v); forward_mm(85); right_degrees(90); //..printf("Turn Left\n"); }
void terminalCheck2() { if (flag == 0) { if (dir == 0) if (ot == 0 || ot == 1) forward_mm(30); else back_mm(30); else if (ot == 0 || ot == 1) back_mm(30); else forward_mm(30); flag = 1; } if (((ct == 0 || ct == 1) && dir == 0) || ((ct == 2 || ct == 3) && dir == 2)) { left_degrees(30); velocity(turn_v, turn_v); while (ADC_Conversion(1)<70) left(); // _delay_ms(100); stop(); } else if (((ct == 0 || ct == 1) && dir == 2) || ((ct == 2 || ct == 3) && dir == 0)) { right_degrees(30); velocity(turn_v, turn_v); while (ADC_Conversion(1)<70) right(); // _delay_ms(100); stop(); } else { left_degrees(150); velocity(turn_v, turn_v); while (ADC_Conversion(1)<70) left(); // _delay_ms(100); stop(); } //printf("Enter term[%d][%d]\n", ct, 1); //scanf("%d", &term[ct][1]); term[ct][1] = scan(); if(term[ct][1]==-1) lcd_print(2,11,9, 1); else lcd_print(2,11, term[ct][1], 1); _delay_ms(1000); if (term[ct][1] == -1 || term[ct][1] == color[ct]) total--; visited[ct] = 1; visitedCount++; }
int main() { init_devices(); while(1){ forward_mm(50); back_mm(50); left_degrees(90); right_degrees(90); } return 0; }
void turnRight() //turns the robo right { if ((dir == 3 && (ot == 0 || ot == 1)) || (dir == 1 && (ot == 2 || ot == 3))) { velocity(turn_v, turn_v); right_degrees(90); } else { right_degrees(30); velocity(turn_v, turn_v); while (ADC_Conversion(2)<70) right(); // _delay_ms(100); stop(); } lcd("Right turn"); //_delay_ms(2000); dir = (dir + 1) % 4; //printf("Turn Right \n"); angle += 90; }
void turn_bot(char ch) { get_vector(); velocity(VELOCITY_MIN,VELOCITY_MIN); /* if (ch == 'l') { velocity(VELOCITY_MAX,VELOCITY_MIN); _delay_ms(2000); } else if (ch == 'r') { velocity(VELOCITY_MIN,VELOCITY_MAX); _delay_ms(2000); } */ stop(); _delay_ms(1000); if (ch == 'l') left_degrees(90); else right_degrees(90); /* while (1) { get_vector(); lcd_cursor(1,1); lcd_string("LorR "); L_velocity = VELOCITY_MIN; R_velocity = VELOCITY_MIN; if (Center_white_line > THRESHOLD) { if (Left_white_line > THRESHOLD) L_velocity = VELOCITY_MIN; else if (Right_white_line > THRESHOLD) R_velocity = VELOCITY_MIN; } else { if (Left_white_line > THRESHOLD) L_velocity = 20; else if (Right_white_line > THRESHOLD) R_velocity = 20; } velocity(L_velocity, R_velocity); if (Center_white_line > THRESHOLD && Left_white_line < THRESHOLD && Right_white_line < THRESHOLD) { break; } } */ }
int main(void) { init_devices(); while(1) { forward_mm(100); //Moves robot forward 100mm stop(); _delay_ms(500); back_mm(100); //Moves robot backward 100mm stop(); _delay_ms(500); left_degrees(90); //Rotate robot left by 90 degrees stop(); _delay_ms(500); right_degrees(90); //Rotate robot right by 90 degrees stop(); _delay_ms(500); soft_left_degrees(90); //Rotate (soft turn) by 90 degrees stop(); _delay_ms(500); soft_right_degrees(90); //Rotate (soft turn) by 90 degrees stop(); _delay_ms(500); soft_left_2_degrees(90); //Rotate (soft turn) by 90 degrees stop(); _delay_ms(500); soft_right_2_degrees(90); //Rotate (soft turn) by 90 degrees stop(); _delay_ms(500); } }
void terminalCheck1() { forward_mm(30); flag = 1; if (ct != ot) { if (dir == 1 || dir == 3) { if (ot == 3 || ot == 0) turnRight(); else turnLeft(); } if (((ct == 0 || ct == 1) && dir == 2) || ((ct == 2 || ct == 3) && dir == 0)) turn(); front(); ot = ct; } right_degrees(50); velocity(turn_v, turn_v); while (ADC_Conversion(1)<70) right(); // _delay_ms(100); stop(); term[ct][0] = scan(); if(term[ct][0]==-1) lcd_print(2,11,9, 1); else lcd_print(2,11, term[ct][0], 1); _delay_ms(1000); //printf("Enter term[%d][%d]\n", ct, 0); //scanf("%d", &term[ct][0]); lcd((char*)term[ct][0]); if (term[ct][0] == -1 || term[ct][0] == color[ct]) total--; }
//Main Function int main() { init_devices(); while(1) { if(receive_data=='<') { lcd_cursor(1,1); lcd_string("Drawing Completed"); lcd_cursor(2,1); lcd_string("NEX ROBOTICS IND"); } if(receive_data=='[') { S2=0x78; _delay_ms(1000); } if(receive_data==']') { S2=0x7F; _delay_ms(1000); } if(receive_data == 'r'||receive_data == 'g'||receive_data == 'b') { //uart0_clr(); color=receive_data; receive_data='0'; //continue; } if(receive_data == 'w'||receive_data == 'a'||receive_data == 'd'||receive_data == 's') { //uart0_clr(); flag=receive_data; receive_data='0'; //continue; } if(receive_data == 't'||receive_data == 'h') { digit=receive_data; receive_data='0'; } if(color=='r'&&flag=='w'&&digit=='h') { if(receive_data=='1') { forward_mm(100); receive_data='0'; //UDR='x'; } if(receive_data=='2') { forward_mm(200); receive_data='0'; //UDR='x'; } if(receive_data=='3') { //S2=0x78; // 90 degree //_delay_ms(1000); forward_mm(300); //_delay_ms(1000); //S2=0x7F; // 180 degree receive_data='0'; //UDR='x'; } if(receive_data=='4') { forward_mm(400); receive_data='0'; //UDR='x'; } if(receive_data=='5') { forward_mm(500); receive_data='0'; //UDR='x'; } if(receive_data=='6') { forward_mm(600); receive_data='0'; //UDR='x'; } if(receive_data=='7') { forward_mm(700); receive_data='0'; //UDR='x'; } if(receive_data=='8') { forward_mm(800); receive_data='0'; //UDR='x'; } if(receive_data=='9') { forward_mm(900); receive_data='0'; //UDR='x'; } } if(color=='r'&&flag=='w'&&digit=='t') { if(receive_data=='1') { forward_mm(11); receive_data='0'; //UDR='x'; } if(receive_data=='2') { forward_mm(20); receive_data='0'; //UDR='x'; } if(receive_data=='3') { forward_mm(30); receive_data='0'; //UDR='x'; } if(receive_data=='4') { forward_mm(40); receive_data='0'; //UDR='x'; } if(receive_data=='5') { forward_mm(50); receive_data='0'; //UDR='x'; } if(receive_data=='6') { forward_mm(60); receive_data='0'; //UDR='x'; } if(receive_data=='7') { forward_mm(70); receive_data='0'; //UDR='x'; } if(receive_data=='8') { forward_mm(80); receive_data='0'; //UDR='x'; } if(receive_data=='9') { forward_mm(90); receive_data='0'; //UDR='x'; } } if(color=='r'&&flag=='s'&&digit=='h') { if(receive_data=='1') { back_mm(170); receive_data='0'; //UDR='x'; } } if(color=='r'&&flag=='a'&&digit=='t') { if(receive_data=='1') { left_degrees(10); receive_data='0'; //UDR='x'; } if(receive_data=='2') { left_degrees(20); receive_data='0'; //UDR='x'; } if(receive_data=='3') { left_degrees(30); receive_data='0'; //UDR='x'; } if(receive_data=='4') { left_degrees(40); receive_data='0'; //UDR='x'; } if(receive_data=='5') { left_degrees(50); receive_data='0'; //UDR='x'; } if(receive_data=='6') { left_degrees(60); receive_data='0'; //UDR='x'; } if(receive_data=='7') { left_degrees(70); receive_data='0'; //UDR='x'; } if(receive_data=='8') { left_degrees(80); receive_data='0'; //UDR='x'; } if(receive_data=='9') { left_degrees(90); receive_data='0'; //UDR='x'; } } if(color=='r'&&flag=='a'&&digit=='h') { if(receive_data=='1') { left_degrees(100); receive_data='0'; //UDR='x'; } if(receive_data=='2') { left_degrees(200); receive_data='0'; //UDR='x'; } if(receive_data=='3') { left_degrees(300); receive_data='0'; //UDR='x'; } } if(color=='r'&&flag=='d'&&digit=='t') { if(receive_data=='1') { right_degrees(10); receive_data='0'; //UDR='x'; } if(receive_data=='2') { right_degrees(20); receive_data='0'; //UDR='x'; } if(receive_data=='3') { right_degrees(30); receive_data='0'; //UDR='x'; } if(receive_data=='4') { right_degrees(40); receive_data='0'; //UDR='x'; } if(receive_data=='5') { right_degrees(50); receive_data='0'; //UDR='x'; } if(receive_data=='6') { right_degrees(60); receive_data='0'; //UDR='x'; } if(receive_data=='7') { right_degrees(70); receive_data='0'; //UDR='x'; } if(receive_data=='8') { right_degrees(80); receive_data='0'; //UDR='x'; } if(receive_data=='9') { right_degrees(90); receive_data='0'; //UDR='x'; } } if(color=='r'&&flag=='d'&&digit=='h') { if(receive_data=='1') { right_degrees(100); receive_data='0'; //UDR='x'; } if(receive_data=='2') { right_degrees(200); receive_data='0'; //UDR='x'; } if(receive_data=='3') { right_degrees(300); receive_data='0'; //UDR='x'; } } } }
//Main Function int main() { init_devices(); while(1) { Left_white_line = ADC_Conversion(3); //Getting data of Left WL Sensor Center_white_line = ADC_Conversion(2); //Getting data of Center WL Sensor Right_white_line = ADC_Conversion(1); //Getting data of Right WL Sensor if((Left_white_line>0x20) && (Center_white_line>0x20) && (Right_white_line>0x20)) { if(lf == 1) { motion_set(0x05); } if (rf == 1) { motion_set(0x0A); } else { left_degrees(200); } } if((Left_white_line<0x20) && (Center_white_line>0x20) && (Right_white_line<0x20)) { forward(); _delay_ms(50); } if((Left_white_line>0x20) && (Center_white_line<0x20) && (Right_white_line<0x20)) { left_degrees(5); forward(); } if((Left_white_line<0x20) && (Center_white_line<0x20) && (Right_white_line>0x20)) { right_degrees(5); forward(); } if((Left_white_line>0x20) && (Center_white_line>0x20) && (Right_white_line<0x20)) { left_degrees(5); forward(); } if((Left_white_line<0x20) && (Center_white_line>0x20) && (Right_white_line>0x20)) { right_degrees(5); forward(); } if((Left_white_line>0x20) && (Center_white_line<0x20) && (Right_white_line>0x20)) { stop(); } if((Left_white_line<0x20) && (Center_white_line<0x20) && (Right_white_line<0x20)) { /*if(flag == 0) { if(lf == 1) { right_degrees(120); } if(rf == 1) { left_degrees(120); } else { left_degrees(200); //right_degrees(240); //left_degrees(120); //flag = 1; } } else stop();*/ } //else // flag = 0; } }
//Main Function int main() { init_devices(); init_encoders(); lcd_set_4bit(); lcd_init(); int value=0; forward(); velocity(130,130); lcd_print(2,1,130,3); lcd_print(2,5,130,3); lcd_print(2,9,pathindex,2); lcd_print(2,13,dirn,3); while(1) { read_sensor(); follow(); if(isPlus()) { read_sensor(); value = path[pathindex++]; // Code inserted for calculation of actual location wrt initial starting point , // It will consider direction also. if (value == F) { // Move the bot forward, for location only , No movement on ground. move_bot(FR); } else if (value == L) { // Move the bot left , for location only , No movement on ground. move_bot(LT); } else if (value == R) { // Move the bot right, for location only , No movement on ground. move_bot(RT); } else if (value == M) { // To stop the Bot and then break out stop(); break; } orient(value); /* lcd_print(2,9,pathindex,2); lcd_print(2,13,dirn,3); lcd_print(1,13,turnL,1); lcd_print(1,15,turnR,1); */ } if(turnL == 1) {/* lcd_print(1,13,turnL,1); forward_mm(20); stop(); velocity(180,180); left_degrees(95); //_delay_ms(120); read_sensor(); // while(Left_white_line <0x40) // { // read_sensor(); // left(); // } stop(); forward(); velocity(180,180); turnL = 0; */ back_mm(50); //stop(); //velocity(130,130); stop(); left_degrees(50); rotate_left_slowly(); forward(); velocity(130,130); turnL = 0; } if(turnR == 1) { /* lcd_print(1,15,turnR,1); forward_mm(20); stop(); velocity(180,180); right_degrees(95); //_delay_ms(200); read_sensor(); // while(Right_white_line <0x30) // { // read_sensor(); // right(); // } stop(); forward(); //follow(); velocity(180,180); turnR = 0; */ back_mm(50); //stop(); //velocity(130,130); stop(); right_degrees(50); rotate_right_slowly(); forward(); velocity(130,130); turnR = 0; } } // Three Beeps for Interval buzzer_on(); _delay_ms(100); buzzer_off(); _delay_ms(100); buzzer_on(); _delay_ms(100); buzzer_off(); _delay_ms(100); buzzer_on(); _delay_ms(100); buzzer_off(); _delay_ms(100); //code to head-back to starting position , i.e. Origin return_path_counter = reach_origin(); forward(); velocity(130,130); int counter = 0; int intermediate_value = 0; while(counter < return_path_counter) { read_sensor(); follow(); if(isPlus()) { read_sensor(); value = path_to_origin[counter]; counter++; // Code inserted for calculation of actual location wrt initial starting point , // It will consider direction also. if (intermediate_value == FR) { // Move the bot forward, for location only , No movement on ground. value = F; } else if (value == LT) { // Move the bot left , for location only , No movement on ground. value = L; } else if (value == RT) { // Move the bot right, for location only , No movement on ground. value = R; } else if (value == ST) { value = M; // specially inserted as break will not allow the bot to stop using "orient(value)". orient(value); break; } orient(value); } if(turnL == 1) { back_mm(50); //stop(); //velocity(130,130); stop(); left_degrees(50); rotate_left_slowly(); forward(); velocity(130,130); turnL = 0; } if(turnR == 1) { back_mm(50); //stop(); //velocity(130,130); stop(); right_degrees(50); rotate_right_slowly(); forward(); velocity(130,130); turnR = 0; } } // Three beeps for Finish buzzer_on(); _delay_ms(100); buzzer_off(); _delay_ms(100); buzzer_on(); _delay_ms(100); buzzer_off(); _delay_ms(100); buzzer_on(); _delay_ms(100); buzzer_off(); _delay_ms(100); }
int follow_wall() { unsigned long int ShaftCount; unsigned long int Div; ShaftCountRight = 0; ShaftCountLeft = 0; int row,state; value_front = ADC_Conversion(11); if(value_front>150) { //compute row and return stop(); ShaftCount=(ShaftCountLeft+ShaftCountRight)/2; row= ShaftCount/Div + 2 ; state=1; return(row) ; } value_1sens=ADC_Conversion(9); if(value_1sens > 25 && value_1sens <50 ) { velocity(forwardLeftSpeed, forwardRightSpeed); forward(); } else if(value_1sens < 25 && value_2sens > 50 ) { //right right_degrees(5); leftSpeed=0; rightSpeed=30; // leftSpeed = forwardLeftSpeed - error*kp; //rightSpeed = forwardRightSpeed + error*kp; velocity(leftSpeed, rightSpeed); } else if(value_1sens >50 && value_2sens <25 ) { left_degrees(5); leftSpeed=30; rightSpeed=0; //leftSpeed = forwardLeftSpeed - error*kp; //rightSpeed = forwardRightSpeed + error*kp; velocity(leftSpeed, rightSpeed); //left } return(0); }
int main(void) { data = UDR0; //making copy of data from UDR0 in 'data' variable UDR0 = data; //echo data back to PC init_devices(); velocity (246, 250); //Set robot velocity here. Smaller the value lesser will be the velocity //Try different valuse between 0 to 255 while(1) { if(data == 0x38) //ASCII value of 8 { forward_mm(90); //Moves robot forward 100mm stop(); _delay_ms(700); } if(data == 0x32) //ASCII value of 2 { back_mm(90); //Moves robot backward 100mm stop(); _delay_ms(700); } if(data == 0x34) //ASCII value of 4 { left_degrees(90); //Rotate robot left by 90 degrees stop(); _delay_ms(700); } if(data == 0x36) //ASCII value of 6 { right_degrees(90); //Rotate robot right by 90 degrees stop(); _delay_ms(700); } if(data == 0x67) //ASCII value of g { soft_left_degrees(90); //Rotate robot left by 90 degrees stop(); _delay_ms(500); } if(data == 0x68) //ASCII value of h { soft_right_degrees(90); //Rotate robot right by 90 degrees stop(); _delay_ms(500); } if(data == 0x69) //ASCII value of i { left_degrees(180); //Rotate robot left by 90 degrees stop(); _delay_ms(500); } if(data == 0x70) //ASCII value of j { right_degrees(180); //Rotate robot right by 90 degrees stop(); _delay_ms(500); } if(data == 0x35) //ASCII value of 5 { stop(); _delay_ms(500);//stop } if(data == 0x37) //ASCII value of 7 { buzzer_on(); } if(data == 0x39) //ASCII value of 9 { buzzer_off(); } if(data == 0x61) //ASCII value of a { redled_on(); } if(data == 0x62) //ASCII value of b { redled_off(); } if(data == 0x63) //ASCII value of c { blueled_on(); } if(data == 0x64) //ASCII value of d { blueled_off(); } if(data == 0x65) //ASCII value of e { greenled_on(); } if(data == 0x66) //ASCII value of f { greenled_off(); } } }
int main(void) { port_init(); init_devices(); int k=240; int i=0; while(i<3) { servo_1(180);//for opening the gripper _delay_ms(200); backward_mm_ext(290);//for releasing the thread as gripper goes down stop(); _delay_ms(300); servo_1(100);//for closing the gripper _delay_ms(300); forward_mm_ext(225);//for winding the thread so that gripper comes up _delay_ms(200); servo_1_free();//making servo free to rotate _delay_ms(300); velocity(170,200); back_mm(k); stop(); _delay_ms(300); velocity(190,240); right_degrees(100); _delay_ms(200); stop(); velocity(145,200); forward_mm(400);//for moving robot in x direction stop(); _delay_ms(300); backward_mm_ext(225); _delay_ms(600); _delay_ms(1200); servo_1(180); _delay_ms(300); forward_mm_ext(290); stop(); _delay_ms(100); velocity(170,200); back_mm(400); _delay_ms(300); stop(); velocity(190,240); left_degrees(90); stop(); _delay_ms(60); velocity(190,240); forward_mm(k);//for moving robot in y direction stop(); _delay_ms(300); k=k-120; i=i+1;//for 3 iteration } stop(); }