Add joystick input
This commit is contained in:
@@ -21,8 +21,6 @@ float x = 0, y = 0, z = 0;
|
||||
static Uint32 drive_timer_handler(Uint32 interval, void* param) {
|
||||
robot_drive((Robot)param, x, y, z);
|
||||
robot_aim((Robot)param, pitch, yaw);
|
||||
yaw *= 0.80;
|
||||
pitch *= 0.80;
|
||||
return 75;
|
||||
}
|
||||
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[]) {
|
||||
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());
|
||||
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(
|
||||
"Robomaster",
|
||||
SDL_WINDOWPOS_UNDEFINED,
|
||||
@@ -94,6 +97,28 @@ int main(int argc, char* argv[]) {
|
||||
yaw = (float)event.motion.xrel;
|
||||
pitch = (float)event.motion.yrel;
|
||||
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:
|
||||
if(event.window.event != SDL_WINDOWEVENT_CLOSE) break;
|
||||
case SDL_QUIT:
|
||||
@@ -103,6 +128,7 @@ int main(int argc, char* argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
SDL_JoystickClose(joystick);
|
||||
SDL_Quit();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user