Robot C-program for Group B-4 (temp), E5 Fall 2002
Adem Kader
David Lovit
Frank Kyei-Manu
Melonie Jalloh
#include <stdlib.h> #include <math.h> #define SLEEPTIME 4.0 #define DRIVERANGE 3 #define RIGHT 2 #define LEFT 3 #define RANGE 15 #define LEFTMOTOR 1 #define RIGHTMOTOR 0 #define BACKTIME 1.0 #define TURNTIME 0.8 int abs(int i){ if(i<0) return -i; else return i; } int currentTemp () { int currentTemp; currentTemp = (analog(RIGHT)+analog(LEFT)); return currentTemp; } int normal(int probemax){ int i; while(1){ if(!digital(7) || !digital(8)) turnAround(); if(stop_button()) return 0; if (currentTemp()>((probemax-RANGE)*2) ) return 1; i = probecheck(); drive(i); } } void turnAround(){ motor(LEFTMOTOR, -100); motor(RIGHTMOTOR, -100); sleep(BACKTIME); motor(LEFTMOTOR, 100); sleep(TURNTIME); ao(); } int initialize(){ int probemax; while(!start_button()){ if(analog(RIGHT) > analog (LEFT)) probemax = analog(RIGHT); else probemax = analog(LEFT); printf("\nright= %d, left= %d", analog(RIGHT), analog(LEFT)); sleep(0.3); } return probemax; } int probecheck(){ int tempdiffer; tempdiffer =(analog(RIGHT) - analog(LEFT)); return tempdiffer; } void drive(int i){ if (i<-DRIVERANGE){ motor(LEFTMOTOR,0); motor(RIGHTMOTOR,75); } else if (i>DRIVERANGE){ motor(LEFTMOTOR,75); motor(RIGHTMOTOR,0); } else{ motor(RIGHTMOTOR, 75); motor(LEFTMOTOR, 75); } return; } void main() { int probemax = initialize(); sleep(SLEEPTIME); printf("\ninitialization done"); sleep(SLEEPTIME-1.0); printf("\nlooking for hot stuff"); while (1){ if (normal(probemax)== 1) { ao(); printf("\nmission accomplished"); tone(174.61,.125); tone(174.61,.125); tone(174.61,.125); tone(233.08,.75); tone(349.23,.75); tone(311.13,.125); tone(293.66,.125); tone(261.63,.125); tone(466.16,.75); tone(349.23,.375); tone(311.13,.125); tone(293.66,.125); tone(261.63,.125); tone(466.16,.75); tone(349.23,.375); tone(311.13,.125); tone(293.66,.125); tone(311.13,.125); tone(261.63,.75); return; } if (stop_button()) break; } ao(); return; }