MakeArt Final: CPB & Arduino Mini Golf Course
by Angie-Saggers in Craft > Cardboard
1592 Views, 0 Favorites, 0 Comments
MakeArt Final: CPB & Arduino Mini Golf Course
Hi there!
This guide will give you an overview on how to build your very own mini golf course using the CPB, Arduino Nano RP2040, and APDS9960 Proximity Sensor! As a part of the Boston College Physical Computing class, I have the opportunity to create a fun final project that incorporates the tech gadgets we have learned in class. Since I love mini golfing, I thought it would be fun to create a practice course. So, without further ado, let's get started!
Supplies
Cardboard Boxes (2x)
Colored papers
Mini Wooden Pole
Tape
Cables/Wires
CPB
Arduino Nano RP2040
APDS9960
Breadboard
LED Light Strips (2x)
3D Printed Figurines (could be any mini figurines though)
Golf Balls (I used some light weight balls)
A putter or wedge (to actually play it)
Tools:
Glue Gun
Scissors
Box Cutters
Deconstruct Boxes and Build the Course
For this project, any medium-sized cardboard box will suffice. I ended up using two boxes in this project for the actual ramp and the decorations. To begin, cut through any tape on the top and bottom of the box to remove the flaps. Find the seam and pull it apart carefully. Fold the box in half to make it flat.
Similar to the Adafruit inspiration (https://learn.adafruit.com/mini-golf-course-with-m...), I also created a two-tiered obstacle course. If you choose to do so, you would need to create some free-standing supports that will be glued on to elevate the second tier. Make sure that your ramp support is strong enough to handle any added on weight of your decorations too!
Making a Sign, Swinging Gate, Boundary, and Flag
You will have so much fun decorating your course! First, I covered the entire course with colored paper to make it look more presentable. Then, I wanted to make a sign for the course and started by making a frame and small support pieces to stabilize it. Next, I created a swinging gate by cutting a 2" x 8" a rectangular strip of cardboard. Since I wanted to make it look cheerful, I decided to make swinging gate a sun and you could design it to whatever your heart desires. Since I had to attach the cardboard to the servo, I found a small stick to tape together with the horn of the servo. After slightly trimming the corners of the intended gate, I attached it to the servo motor (which is programmed to go on a customized up and down motion). As for the boundaries, I just grabbed some extra pieces of cardboard and covered that with colored paper. These will help guide the ball to pass through the proximity sensor and swinging gate. Lastly, I created a flag using a thin wooden pole and paper to help players see the hole on the second tier.
3D-Printing & Laser Cutting
I wanted to spice up my course a little bit more and ended up 3D printing with Resin out of the SLA printers the following figurines from Thingyverse:
Windmill https://www.thingiverse.com/thing:594659 ( a classic mini golf decor)
Chinese Lion: https://www.thingiverse.com/thing:660923 (a symbol of strength and stability)
The MakerSpace also happen to have extra figurines (blue) made out of PLA-plastic which are created with FDM printers. They added another layer of flare in this course.
Additionally, using the laser cutting machine in BC’s MakerSpace with the help from the TAs I also created some arches to enhance the appearance and challenge of the course. Once I had all of my figurines and components I used a hot glue gun to attach them into the course.
Coding the CPB and Arduino
Here are Prof. G's video tutorials that really helped me figure out the coding for this specific project:
I highly encourage you to check out the entire playlist too where Prof. G covers different types of boards and all of its extensive capabilities. My main tip is for you to have a lot of cables ready. Considering the size of this project, you have to be aware how the LED light strips will be connected to the same cords on the breadboard alongside the proximity sensor APDS9960 and the Arduino Nano. Make sure you keep track of what each of the cables does too!
Codes That I Used
Proximity Sensor
#import
import board, time, neopixel
from adafruit_apds9960.apds9960 import APDS9960
#LED Strip - Red - VIN (also works with 3.3v), White - D7 (Data - could use most digital pins) #Black - GND (could be any GND, but in this diagram it's in the same column as STEMMA-QT ground. It's OK to share power & ground)
strip_pin = board.D7
leds_on_strip= 30
strip = neopixel.NeoPixel(strip_pin, leds_on_strip, brightness=0.5, auto_write=True)
i2c = board.I2C()
multi_sensor = APDS9960(i2c)
multi_sensor.enable_proximity = True
while True:
reading = multi_sensor.proximity #this will give us a number from 0 to 30
print((reading,))
if reading>=10:
for i in range(0, leds_on_strip):
strip[0:i] = (255,0,0) * i
strip[i:leds_on_strip]= (0,0,0) *(leds_on_strip-i)
time.sleep(0.01)
time.sleep(10.0)
strip.fill((0,0,0))
Swing Gate - Servos
import board
import time
import digitalio
import pwmio
from adafruit_motor import servo
#create buttons
button_A = digitalio.DigitalInOut(board.BUTTON_A)
button_A.switch_to_input(pull=digitalio.Pull.DOWN)
button_B = digitalio.DigitalInOut(board.BUTTON_B)
button_B.switch_to_input(pull=digitalio.Pull.DOWN)
#Set up a servo
pwm = pwmio.PWMOut(board.A2, frequency=50)
servo_1=servo.Servo(pwm, min_pulse = 750, max_pulse = 2500)
#or servo_1=servo.Servo(pwm, min_pulse=0, max_pulse = 2500) for
while True:
for angle in range(0, 93, 5):
servo_1.angle = angle
time.sleep(0.05)
time.sleep(0.5)
for angle in range(93, -1, -5):
servo_1.angle = angle
time.sleep(0.05)
time.sleep(0.5)
Put It All Together
As mentioned, once all the programming is done, all you have to do is wire the LED light strips together to the Arduino and attach the Servo to the CPB. Make sure that you have enough cords to place some distance between the LED strips as they would be attached on either sides of the ramp. Since I wanted to hide the wiring and preserve its connectivity, I securely taped everything to the bottom of the course. It definitely does not look that pretty, but the course itself will be very functional and enticing.
Practice Your Swing!
Congratulations, now you have completed your very own mini golf! Go have fun and remember me when you are playing with the pros at the PGA tournament!