// script to trace an arc of radius rad until deg is reach // NOTE: if the turn is not in the direction of deg, the arc won't end void create_script_arc(int rad, int deg, int speed) { // rad in mm, degrees, vel in mm/sec int sangle, dangle; create_angle(); sangle=gc_total_angle; dangle=sangle+deg; create_drive(rad,speed); if(deg>0){ while(gc_total_angle<dangle)create_angle(); } else{ while(gc_total_angle>dangle)create_angle(); } create_stop(); }
// script to rotate in place through deg degrees // deg > 0 turn CCW; deg < 0 turn CW void create_script_turn(int deg, int speed) { // degrees, vel in mm/sec int sangle, dangle; create_angle(); sangle=gc_total_angle; dangle=sangle+deg; if(deg>0){ create_spin_CCW(speed); while(gc_total_angle<dangle)create_angle(); } else{ create_spin_CW(speed); while(gc_total_angle>dangle)create_angle(); } create_stop(); }
/* * Class: cbccore_low_Create * Method: create_angle * Signature: ()I */ JNIEXPORT jint JNICALL Java_cbccore_low_Create_create_1angle(JNIEnv *env, jobject obj) { #ifdef CBC return create_angle(); #else printf("Java_cbccore_low_Create_create_1angle stub\n"); return -1; #endif }
//this function will update the values for many of the sensor globals above //serial connection failure codes are // -1:create_mode, -2:create_wall, -3:create_buttons, -4:create_bumpdrop, -5:create_cliffs, // -6:create_angle, -7:create_distance, -8:create_velocity, -9:create_read_IR int create_sensor_update() { int r=0; // if serial connection times out, bit positions give the functions where it occurred r=r-2*create_wall(); r=r-4*create_buttons(); r=r-8*create_bumpdrop(); r=r-16*create_cliffs(); r=r-32*create_angle(); r=r-64*create_distance(); r=r-128*create_velocity(); return(r); }
//this function will update the values for all of the sensor globals above //serial connection failure codes are // -1:create_mode, -2:create_wall, -3:create_buttons, -4:create_bumpdrop, -5:create_cliffs, // -6:create_angle, -7:create_distance, -8:create_velocity, -9:create_read_IR int create_sensor_update() { float diff_angle; //defer(); create_angle(); //create_bumpdrop(); gc_lbump=robot.lcbump; gc_rbump=robot.rcbump; //create_distance(); gc_distance=gc_distance+(int)((robot.lenc+robot.renc)/2L); robot.lenc=0; robot.renc=0; gc_play_button=robot.play; gc_advance_button = robot.adv; return(0); }