top of page

Punch-Out!! Arduino Controller

The "Arduino Controller" assignment required creating a product that would allow a user to interact with a program/software of choice. Our group decided to create a device that would act as a controller for Nintendo's Punch-Out!!. However, it was required that our group would not develop a typical game controller with buttons and joysticks, but rather implement sensors for an enhanced user experience. 

​

The learning objectives of this assignment included: (1) using an Arduino UNO platform to read and analyze sensor data while producing outputs to an external system, (2) applying ergonomic principles of design for control, communication and data acquisition, (3) design and shape joints for 3-D printing, and (4) developing skills for technical presentations.

mike_tysons_punchout.0.jpg
Product DesignSketch-14.jpg

Original hand controller design, later redesigned.

The basis of Punch-Out!! is competing in a boxing circuit, moving up the ladders in order to fight the reigning champion Mike Tyson. For our controller, our team valued creating an experience as close as possible to the game-play. The game controls consisted of left/right punches, left/right dodges, and a block. In order to mimic these controls, the team felt that mimicking the movements in real life would be the most plausible course. The initial idea revolved around two hand controllers that would be thrown forward to mimic punches, and utilizing the lateral movements of the body as dodge and block functions. 

​

For the controllers, in order to implement a signal that would react to a punch thrown, it was decided that lever switches would be used to activate the keystroke that commanded a punch in the game. To activate the switch, we intended use inertia as a method to trigger the switch. By having a mass rest on top of the lever, the mass would press down on the switch when a force is thrown forward and bounces back after hitting a wall. 

The hand controller was redesigned to account for ease of manufacturing. Since additive manufacturing (3-D printing) would make the parts, the overhangs and curves in the initial design were deemed to tricky. Instead a flat, handheld design was implemented for ease of printing. The housing consists of a rectangular cutout with an alley where a mass would sit. 

left controller.PNG

Redesigned hand controller.

Product Design-2.jpg

The chest mount is used to house the Arduino UNO, an accelerometer, a breadboard and the wires connecting the hand controllers. The only change made to the initial sketch was attaching the accelerometer directly to the breadboard.

​

The accelerometer is used to mimic the lateral dodging movements in boxing. By leaning towards the right or left, the signal would produce a keystroke to tell the in game character to dodge left or right. In order to keep the design simple, the block move was assigned to leaning backwards with the accelerometer to produce the keystroke. 

Initial chest mount idea.

Results

60493960806__767678FF-CEB7-40E3-9B43-831
IMG_0037.HEIC

Chest mount with Velcro straps.

Final product laid out.

IMG_0042_edited.jpg
IMG_0041_edited.jpg

Internal casing with lever switch and nut (mass).

The final product functioned according to plan. However there were issues while manufacturing the controllers themselves. The greatest problem was creating a suitable mechanism for the switch to be triggered by a mass. An idea brainstormed included using a spring and mass system hoping the spring would push the mass against the lever. However it was difficult to achieve so instead it was decided to use a large mass (a nut in this case) and secluded spacing in for a precise hit onto the lever. 

​

The final product however is not flaw proof. Issues that can be fine tuned and fixed in the future involve the sensitivity of accelerometer while inputting motion. Motions that break a threshold for the sensor can cause the signal to command an unwarranted keystroke. Another consideration is creating a longer delay while relaying signals sent between the lever switches and the accelerometer so that the program is not overloaded with keystroke commands.

IMG_0039_edited.jpg

Video Demonstrations

Arduino Uno Code (pdf)                           Python Code (pdf)

bottom of page