void set_UserTank(int* angle, int* velocity, psController ps, tank* user, tank* enemy, terrain tr) { char done_Charging = 0; char hasxBeenPressed = 0; //Draw background of power bar alt_up_pixel_buffer_dma_draw_box(pixel_buffer, x0_chargeBar, y0_chargeBar, (MAX_VELOCITY) + x0_chargeBar, chargeBar_Width + y0_chargeBar, 0x7BEF, 0); alt_up_pixel_buffer_dma_draw_box(pixel_buffer, x0_chargeBar, y0_chargeBar, (MAX_VELOCITY) + x0_chargeBar, chargeBar_Width + y0_chargeBar, 0x7BEF, 1); //loop continues until x is pressed and released, a collision occurs, or velocity maxed out while(done_Charging == 0) { update_Controller_Keys(&ps); set_Angle( angle, ps); done_Charging = set_Velocity( velocity, ps); if(ps.b.x == 1) hasxBeenPressed = 1; //X has been released if(ps.b.x == 0 && hasxBeenPressed == 1) done_Charging = 1; if(ps.b.right == 1) { moveTank(user, 2, 1); //go right drawTank(user, tr); drawTank(enemy, tr); updateVGA(); } else if(ps.b.left) { moveTank(user, 1, 1); // go left drawTank(user, tr); drawTank(enemy, tr); updateVGA(); } display_Input(*angle, *velocity); delay(); } }
int SingleJoint::set_PID(float pos, float vel) { return set_Velocity(pid_.run(current_Angle_.angle.value(), pos + offset_, vel)); }