|
|
@ -21,8 +21,6 @@ float x = 0, y = 0, z = 0;
|
|
|
|
static Uint32 drive_timer_handler(Uint32 interval, void* param) {
|
|
|
|
static Uint32 drive_timer_handler(Uint32 interval, void* param) {
|
|
|
|
robot_drive((Robot)param, x, y, z);
|
|
|
|
robot_drive((Robot)param, x, y, z);
|
|
|
|
robot_aim((Robot)param, pitch, yaw);
|
|
|
|
robot_aim((Robot)param, pitch, yaw);
|
|
|
|
yaw *= 0.80;
|
|
|
|
|
|
|
|
pitch *= 0.80;
|
|
|
|
|
|
|
|
return 75;
|
|
|
|
return 75;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
static Uint32 heartbeat_timer_handler(Uint32 interval, void* param) {
|
|
|
|
static Uint32 heartbeat_timer_handler(Uint32 interval, void* param) {
|
|
|
@ -31,10 +29,15 @@ static Uint32 heartbeat_timer_handler(Uint32 interval, void* param) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char* argv[]) {
|
|
|
|
int main(int argc, char* argv[]) {
|
|
|
|
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER) < 0) {
|
|
|
|
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) {
|
|
|
|
fprintf(stderr, "%s", SDL_GetError());
|
|
|
|
fprintf(stderr, "%s", SDL_GetError());
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
printf("Detected %d joysticks\n", SDL_NumJoysticks());
|
|
|
|
|
|
|
|
SDL_Joystick* joystick = NULL;
|
|
|
|
|
|
|
|
if(SDL_NumJoysticks() > 0) {
|
|
|
|
|
|
|
|
joystick = SDL_JoystickOpen(0);
|
|
|
|
|
|
|
|
}
|
|
|
|
SDL_Window* win = SDL_CreateWindow(
|
|
|
|
SDL_Window* win = SDL_CreateWindow(
|
|
|
|
"Robomaster",
|
|
|
|
"Robomaster",
|
|
|
|
SDL_WINDOWPOS_UNDEFINED,
|
|
|
|
SDL_WINDOWPOS_UNDEFINED,
|
|
|
@ -94,6 +97,28 @@ int main(int argc, char* argv[]) {
|
|
|
|
yaw = (float)event.motion.xrel;
|
|
|
|
yaw = (float)event.motion.xrel;
|
|
|
|
pitch = (float)event.motion.yrel;
|
|
|
|
pitch = (float)event.motion.yrel;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SDL_JOYAXISMOTION:
|
|
|
|
|
|
|
|
switch(event.jaxis.axis) {
|
|
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
|
|
x = (float)event.jaxis.value / 32767;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
|
|
y = (float)event.jaxis.value / 32767;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
|
|
z = (float)event.jaxis.value / 32767 / 2;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
|
|
yaw = (float)event.jaxis.value / 32767;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
|
|
pitch = (float)event.jaxis.value / 32767;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
printf("axis: %d\n", event.jaxis.axis);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
case SDL_WINDOWEVENT:
|
|
|
|
case SDL_WINDOWEVENT:
|
|
|
|
if(event.window.event != SDL_WINDOWEVENT_CLOSE) break;
|
|
|
|
if(event.window.event != SDL_WINDOWEVENT_CLOSE) break;
|
|
|
|
case SDL_QUIT:
|
|
|
|
case SDL_QUIT:
|
|
|
@ -103,6 +128,7 @@ int main(int argc, char* argv[]) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SDL_JoystickClose(joystick);
|
|
|
|
SDL_Quit();
|
|
|
|
SDL_Quit();
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|