Cup Dispenser 

This is a 3D printed robot that dispenses cups one at a time. It has two parts, the cup separator which is a single piece that slides between the cups allowing one to drop through whilst holding the stack of cups, and the robotic arm that moves the stack back and forth in to the separator. This can be scaled for any size cup.

The cup separator CAD files has 3 sizes:

Small - fits 30ml shot glasses

Medium - fits 200ml plastic cups

Large - fits 568ml plastic pint cups

The separator can be scaled for most size plastic cups.


STL files for 3D Printing: Thingiverse

TinkerCAD CAD Model: Patreon 

Costs: £2 PLA, £20 Parts

Parts Required


(2x) MG996R servo motor - AMAZON 

(1x) Arduino Uno - AMAZON

(10x) M3x16mm bolts - AMAZON

(10x) M3x8mm bolts - AMAZON

(8x) M3 locking nuts - AMAZON

(10x) M3 nuts - AMAZON

(8x) M3 Washers - AMAZON


12V power supply - AMAZON or Bench power supply - AMAZON

Breadboard - AMAZON





Build Instructions


Step 1 - Fit the servos using M3x8mm bolts

Step 2 - Plug the servos in to the arduino and set the servo positions to 90degrees.

Step 3 - Connect the servo arms to the servos using a M3x8mm bolt with the arms pointing in the extended direction (picture left)

Step 4 - Connect the rest of the pieces using M3x16mm bolts and locking nuts.

Step 5 - Wire up the cup dispenser by connecting the servos to the arduino, diagram below.

Step 6 - Move the servo positions to pull the cup dispenser and dispense a cup, example in the code below.


Below is a diagram for how to wire up the board.



Here is a basic example of how you would program the cup dispenser in Arduino. 

Arduino code

#include <Servo.h>
Servo myservo1; //Servo 1
Servo myservo2; //Servo 2

void setup() {
  myservo1.attach(7); //Servo 1 attached to pin 7
  myservo2.attach(8); //Servo 2 attached to pin 8
void loop() {
    delay(1000); //wait 1s
    myservo1.write(140); myservo2.write(25); //Pull cup back
    delay(1000); //wait 1s
    myservo1.write(70); myservo2.write(95); //push cup forwards