8.4 Implementation

8.4 Implementation

Mechanical

The robotic arm is constructed out of 6 mm acrylic and 3 mm nuts and bolts for the joints. The bowling alley is made of plywood with an acrylic finish. The joints included 3 mm bearings and axles for smoother movement.

Initially, we had a bowling alley made of plywood to replicate the appearance of a real bowling alley. However, we added an acrylic inlay to reduce friction on the marble and improve the spin from the release mechanism.

image-20250503-183546.png
Fig 1. Bowling alley

The release mechanism is a 3D printed part designed to create an accurate spin on the marble that replicates a bowling ball. The part is spring loaded with a rubber band to create the characteristic flick used by bowlers.

image-20250503-183432.png
Fig 2. Release mechanism

The bowling arm and release mechanism are mounted separately from the bowling alley on another 3D printed part. This allows the user to set up and aim the arm how they choose.

Electrical

The following code was used for the motor that moved the four bar mechanism (bowling arm).

const int IN1 = 7; const int IN2 = 8; const int ENA = 9; const int buttonPin = 4; //Button connected to pin 4 void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); //Use internal pull-up resistor } void loop() { if (digitalRead(buttonPin) == LOW) { //Button pressed (LOW because of pull-up) // Spin motor digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, 255); //Adjust PWM speed delay(300); //adjust this time based on motor's 1 rev //Stop motor digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); analogWrite(ENA, 0); //wait until button is released to avoid multiple spins while (digitalRead(buttonPin) == LOW) { delay(10); //tiny wait } } }