yusuf.directback to overview

Engineering project / Spring 2026

Pac-Man

A joystick-controlled Cartesian motion system with an interactive LED maze.

Developed for BU ME 360, Pac-Man turns a Cartesian motion system into a physical game. Three stepper-driven belt stages move a Pac-Man end effector across an addressable-LED maze, while a servo animates its mouth as dots are consumed. We combined course-supplied hardware with custom 3D-printed components, calibrated path geometry, and Arduino control software.

Course
BU ME 360
Period
Spring 2026
Team
Yusuf Tasyurt, Lana Kader, and Karsen Vesty
Areas
Mechanical design, fabrication, embedded programming, calibration, and system integration
Tools
SolidWorks, Arduino/C++, 3D printing

Working prototype

Physical Pac-Man prototype with an LED maze, belt-driven rails, controller electronics, and workshop tools on a table.
The assembled machine combines belt-driven travel with an illuminated maze and a servo-actuated Pac-Man mechanism.
Prototype demonstration - 17 seconds

Design and fabrication

The mechanism is best described as two-axis motion with a servo-actuated mouth. In course terminology, the machine also functioned as a 2.5 DOF system: planar Cartesian motion plus a separate mouth actuation degree of freedom.

  1. 1Modeled one linear stage to check the relationships between the extrusion, printed mounts, carriage, belt, and pulleys.
  2. 2Cut the aluminum extrusion and printed the custom components needed for assembly.
  3. 3Evaluated the physical stage and identified belt-fit, flexibility, alignment, and binding issues.
  4. 4Revised and reprinted affected components, then assembled the paired rails carrying the transverse stage.
  5. 5Adjusted belt tension and alignment during motion testing.

Assembly exposed belt-fit and stiffness issues that were not apparent from the CAD model. We revised and reprinted affected components, then adjusted belt tension and alignment during motion testing.

Isometric CAD model of the belt-driven Pac-Man motion system.
CAD assembly used to check the relationship between rails, belts, pulleys, carriages, and the end effector.
Partially assembled linear stage on a machine-shop table with aluminum extrusion, red printed mounts, pulleys, and belts.
Workshop assembly connected the CAD checks to physical belt fit, stiffness, and alignment testing.

Mapping the physical maze

We formed the maze from a continuous LED strip to reduce soldering. Folded corners introduced hidden LEDs, while intersections required connections between different physical lines. The controller therefore needed an explicit relationship between motor coordinates, maze segments, and LED addresses.

The calibration process established the coordinate origin, moved the end effector to each maze corner with the joystick, and used the joystick button to record X/Y motor step counts. We then documented LED addresses on each physical line and combined the measurements into fifteen path segments connecting sixteen recorded corners. Those segments let the firmware check movement and associate position with game state.

Measured Pac-Man maze geometryThe complete fifteen-segment path drawn from sixteen recorded motor-step coordinates. Line 8 is highlighted between corners 7 and 8 as an example of converting measurements into a path segment.Line 8C7C8X motor stepsY motor steps

Calibration example

From corners to a path

Each joystick-recorded corner became a motor-step coordinate. Joining consecutive corners created the segments used to constrain movement.

Line 8
Start corner
C7 (-15840, -5130)
End corner
C8 (460, -5130)
Segment check
Delta X: 16300 steps
Delta Y: 0 steps
Calibration example using recorded motor-step coordinates. The full maze is regularized to orthogonal lines for presentation.

Coordinating motion and gameplay

The Arduino code treated joystick input as joystick-dependent motion without acceleration ramps. It selected the dominant axis, checked proposed travel against workspace bounds and maze geometry, drove either the paired rail motors or the transverse motor, and updated tracked motor-step position. From that tracked position, the program associated Pac-Man with an LED address, consumed dots, displayed the current-position indicator, and actuated the mouth when new consumption was registered.

  1. 01Joystick input
  2. 02Movement checks
  3. 03Motor commands
  4. 04Tracked position
  5. 05LED state and mouth actuation

Hardware and fabrication

Structure

Aluminum T-slot extrusion

Quantity: 5

Forms the frame and supports the linear stages

Motion

Stepper motors

Quantity: 3

Drive the Cartesian motion system

Motion

Timing belts and pulleys

Quantity: 3 sets

Convert motor rotation into linear travel

Fabrication

Custom 3D-printed parts

Quantity: 9

Connect the motors, stages, and end effector

Control

Arduino-compatible controller

Quantity: 1

Processes joystick input and coordinates the system

Interface

Analog joystick with push button

Quantity: 1

Provides directional input and button commands

Game display

WS2812B addressable LEDs

Quantity: 117

Represent maze dots and display game state

End effector

Servo motor

Quantity: 1

Actuates Pac-Man's mouth

End effector

Two-jaw Pac-Man mechanism

Quantity: 1 assembly

Provides the physical game character

Hardware was supplied through BU ME 360. Our team produced the custom 3D-printed components, and I cut the aluminum extrusion to length.

Outcome and reflection

The demonstrated prototype supported joystick-controlled movement through the programmed maze, LED game-state updates, and servo-actuated mouth behavior.

The project showed how fabrication choices shape control software. Bending a continuous LED strip simplified assembly, but introduced hidden LEDs and shared intersections that required explicit mapping. Making the game work depended on resolving those relationships across the mechanical, electrical, and software systems.

Contact me about this project
Side-view CAD model showing the Pac-Man mouth mechanism attached to the moving carriage.
Side-view CAD detail of the two-jaw Pac-Man mouth mechanism.
Technical details

The supplied firmware sketch defines NUM_LEDS as 117 and stores game position as a current segment plus motor-step progress. Its waypoint array contains placeholder coordinates, so the example above uses the recorded calibration measurements. The maze drawing is regularized to orthogonal lines for clarity while the displayed corner coordinates retain their measured values.