We shared the work like this: Jean-Michel and Damien worked together to program the joystick so it can aim more smoothly. Julien worked on the rotary encoder to move left and right. Then we shared the rest. Jean-Michel did the shooting buttons, Damien the forward and backward ones, and Julien put everything together.
We used Arduino and its various libraries (Keyboard, Mouse) to connect the inputs from the rotary encoder, push buttons, and digital joystick to keyboard keys and mouse movements, allowing the system to perform in-game actions.
- 'A' and 'D' (left/right) depending on the orientation of the rotary encoder
- 'W' to move forward ↔ red push button
- 'S' to move backward ↔ yellow push button
- 'Space' to shoot ↔ blue push button
- Mouse movement for aiming ↔ based on joystick input
We had some problems. One was with the joystick. It was hard to detect when it turns clockwise, so turning was not always very precise. We changed the sensitivity, but it stayed difficult.
At first, we wanted to use pedals for forward and backward. But the cables were too short, so we used normal buttons instead.
Because of the small size and complex shape of the rotary encoder, we found it quite difficult to integrate it into a fully and mechanically stable steering wheel, so we didn’t improve its design due to lack of time.
Also, the controller was a bit fragile. The materials were not strong, so we had to be careful during testing.
Even with the problems, we tested and improved the system step by step.
This project helped us learn how to use hardware, program with Arduino, and work as a team. Everyone helped to solve problems and make the system better. In the end, it was fun to use and worked well.
There’s a lot we could have done to make our project more successful because we’re convinced it has a lot of potential. First of all, we could have sourced better materials for the aesthetic aspect and used more interesting sensors (instead of push buttons) to make our game controller more immersive.
Indeed, we could have built a proper cannon device using mechanical components (such as springs), and a visual signal (such as an LED) could have been integrated into the cannon to indicate when it is operational. The LED lights could have been synchronized with the in-game recharging delay of the tank’s cannon.
Furthermore, we could have integrated the rotary encoder into a steering wheel (or a crank) and the buttons into pedals to make the tank’s cabin more immersive.
But our biggest mistake was simply not putting enough effort into polishing our project and not seeking the help and opinions of our professor.
We should also have better documented our progress (in the first version) throughout the project so that you can better understand how we arrived at the final prototype. If we had communicated better with our group and our professor and worked more often and consistently, we would have been able to achieve the desired ambition.