Robot C-program for Group C-2 (temp), E5 Fall 2002
Sally Hall
Mark Piper
Simeon Realov
#define FWD0 30 #define FWD1 30 #define BKWD0 -50 #define BKWD1 -50 #define TTURN45 1.0 #define INTERVAL 1.0 void straight(void) { motor(0,FWD0); motor(1,FWD1); } void back (void) { motor (0, BKWD0); motor (1, BKWD1); } void left(void) { motor(0,FWD0); motor(1,BKWD1); sleep(TTURN45); } void right(void) { motor(0,BKWD0); motor(1,FWD1); sleep(TTURN45); } void bumpright(void) { back(); sleep (INTERVAL); left();left(); } void bumpleft (void) { back(); sleep(INTERVAL); right();right(); } int high (int x, int y) { if (x>y) return x; return y; } void maximum(int a,int b) { if((a-20)>b) { left(); } else if(a<(b-20)) { right(); } } void jamesbond(void) { int a; for(a=0;a<2;a++) { tone(329.63, 0.5); tone(369.99, 0.25); tone(369.99, 0.25); tone(369.99, 0.5); tone(369.99, 1.0); tone(329.63, 0.5); tone(329.63, 0.5); tone(329.63, 0.5); tone(329.63, 0.5); tone(392.00, 0.25); tone(392.00, 0.25); tone(392.00, 0.5); tone(392.00, 1.0); tone(369.99, 0.5); tone(369.99, 0.5); tone(369.99, 0.5); } beep(); } void main(void) { int a,b,max,counter=1; while(!stop_button()) { a=analog(2); b=analog(3); printf("\nL=%d R=%d; BL=%d BR=%d",a,b,digital(7),digital(8)); sleep(0.3); } max=high(a,b); while(!start_button()) { } while(!stop_button()) { if(!digital(7)) { bumpleft(); } else if(!digital(8)) { bumpright(); } else { a=analog(2); b=analog(3); if(a>(max-10)||b>(max-10)) { printf("\nYou're there!!!"); break; } else if(counter==3) { printf("\nL=%d R=%d; BL=%d BR=%d",a,b,digital(7),digital(8)); maximum(a,b); straight(); sleep(INTERVAL); counter=1; } else { counter++; } } } ao(); jamesbond(); }