Project tutorial
Automatic Catapult for Throwing Pet Food, Balls, and More!

Automatic Catapult for Throwing Pet Food, Balls, and More! © GPL3+

Automatic catapult for throwing pet food (dog, cat, chicken, etc.), balls and more!

  • 64 respects

Components and supplies

Apps and online services

About this project

​Hello and welcome to my first project!

Our dog LOVES her food, she'll quite literally eat all of it within seconds. I've been devising ways to slow this down, from balls with the food inside to throwing it all over the backyard. Amazingly, she's now like a vacuum and can find and eat the food impressively fast. So, back to the drawing board and I came up with this device to assist her to slow down and enjoy her food :)


Please take the few seconds to enjoy the 2 videos, they explain a lot.

But, in words, the basic concept is that the Rotator servo rotates and pulls down the catapult arm. It does this until it touches the limit switch. Then the Trigger servo goes to the hold position, which holds down the catapult arm. The Rotator servo then rewinds to the original position, ready for the next throw.

The Food Delivery servo rotates the pipe and delivers some food (or other things) to the catapult arm container/head. The Trigger servo then turns and lets the spring pull back the catapult arm and flings the food.

In testing, this setup and catapulted dog food biscuits over 10 meters, with food rolling. Adjustments to servos and changing the spring will modify this completely.


I'll try to be succinct throughout this project, not just for simplicity, but because this catapult can be made 100 different ways. It can be scaled and you can make various structures and use various materials. Besides the electronics and servos, the rest is completely flexible with what you have at hand, or to your budget.

​​I won't be explaining step by step how to do the electronics, there are plenty of impressive projects on that. Especially because I'm a newbie, I’ve probably made mistakes and you'd be better to learn from professionals ;)


  • ​Arduino Uno R3 - any Arduino will do the job though
  • ​2 x 180 degree servos
  • 1 x continuous rotation servo
  • ​​Limit switch
  • ​10k ohm resistor
  • ​​4 x AA batteries and case​
  • ​1 x 6 volt lantern battery - can be (and I will) replaced with 5 x AA batteries wired together
  • 2 x switches - any kind will do, even the simplest
  • ​​Connecting cables - plenty of these ;)​
  • Breadboard - for testing


​Perf board ​2 x 2 pin connectors​ - optional, you could hard wire the battery enclosures.


I bought a couple of cheap Lofty Ambition S3003 180 degree servos off eBay. You'll want something of at least this grunt, don't try to buy lesser, as they'll be unable to take the load. But they don't need to be expensive ones from Jaycar (Aussie electronics store) or the like either. ​The continuous rotation servo I used is FS5106R. Model isn't important, but you'll definitely need the servo to have at least these specs.

If you make the catapult stronger or larger, make sure you get bigger servos to match.


As previously stated, the structure is entirely up to you. You can make it out of plastic, wood or metal. The size is also up to you. If you want to be able to catapult more food (or other things) make it smaller or bigger. So, due to these points, I won't go into complete detail about how I made my structure. I'm very happy to provide any answers on anything.

I'm a BIG fan of reuse/recycle/upcycle/etc. So much of what I've used I had in my shed. I've made most of my structure out of aluminium I had due to another project. The main structure is out of 25mm square aluminium tubing and "connect-it" plastic connectors. The brackets for the motors I made out of 25mm wide x 3mm aluminium.

The food delivery concept was from this project: by - a big thank you to them!

The holder I made is out of 40mm PVC pipe from my local hardware store. The actual arm is two smaller 45 degree connectors, connected together and hot glued into the larger pipe. The larger PVC tube has another 45 degree connector to make it easier to add in the pet food biscuits (or other things). All made to be able to be pulled apart, for any modifications.

The rest for the food delivery arm was designed to allow easy circular motion - to make it easier on the servo. There are better ways (if you have the tools) to make this, but I did my best. I made some brackets, cut up some metal rod and used a product called "​knead it" to attach the rods to the brackets and the bearings. As you can see by the videos, the PVC pipe turns smoothly over the bearings and these take much of the weight (and required torque) off the servo.

The catapult arm is a tennis ball thrower from a cheap shop $2.

The catapulting power is from an old spring I found in my workshop - as you can see from the rust. The size and type and strength of the spring is crucial to how strong and effective the catapult functions. You'll have to balance the servo strength, spring strength, flexibility of the catapult arm. Getting this balance is tricky and really depends on what you're seeking. I've opted for a design that leaves movement in the arm, which creates some unpredictability on the destination of the food. The catapult arm top enclosure, which holds the biscuits, also assists with the unpredictability. More fun for the pet to find the food.

The catapult arm is pulled down via fishing line through a little metal handle (or feeder, depends on your use), down under a platform that holds the limit switch (more on that in second), along the length of the structure, through another metal handle (to keep it from tangling), then attached onto the spindle (I used the plastic thing that holds cotton for the spindle on the Rotator), which is attached to the continuous servo. Additionally, I used a thin and weak bit of elastic, attached to the fishing line and the Trigger brackets. This ensures that when the Rotator unwinds the fishing line doesn't get caught up anywhere.

I used this ​Tunnel Core - All purpose plastic sheet - Double wall utility board for an easy way to create the enclosure for the batteries and electronics.

The structure is very solid, yet quite light. The heaviest part of it is the lantern battery, which will be replaced shortly with AA rechargeable batteries.


As with anything that you aren't a master in, there are always things learnt along the way. In this project, well, let's just say you'd be bored with my list before you got to the end ;)

​One of the biggest issues is food clogging. This food delivery arm came from an project, but unfortunately I can't seem to find it. It sporadically doesn't deliver any biscuits, but this is a good thing, it keeps the pet guessing! But, generally it works very well.

I built the structure out of aluminium because our dog isn't gentle, so it needs to hold up to her. Fortunately, thus far it's doing well.

I'll be improving the catapult arm, making it look a little sexier. Most of the important elements can be broken down to allow access. e.g. food delivery, electronics enclosure.

All in all, a very fun project and our dog loves it! I'm very happy to provide any answers or advice on anything.

Thanks very much to Hackster and to you for reading about the Automatic Catapult.


Automatic catapult - Arduino codeArduino
 *  Automatic pet food flinger by Nathan King June 2018

#include <Servo.h>

int FoodDeliveryReleasePosition = 115;
int FoodDeliveryHoldPosition = 0;
int TriggerReleasePosition = 90;
int TriggerHoldPosition = 0;

int limit_switch = 3;
int switch_state = 0;

Servo fooddelivery; //  create servo object to control the food delivery arm
Servo trigger;     // create servo object to control the trigger
Servo rotater;     // create servo object to control the rotator

void setup() {
  rotater.attach(2);            // attaches the rotator servo 
  trigger.attach(4);            // attaches the trigger servo
  fooddelivery.attach(5);       // attaches the food delivery servo
  pinMode(limit_switch, INPUT);

void loop() {
  rotater.write(89);                // stops Rotator servo from moving - unnecesary if you have a good servo ;)

// Start positions

// limit switch loop to stop the Rotator servo
   switch_state = digitalRead(limit_switch);
    while (switch_state == HIGH) {
      switch_state = digitalRead(limit_switch);
      Serial.println("Switch is off");
      rotater.write(75);                // starts Rotator clockwise at xx speed (0-255)
   Serial.println("Switch is on");
   rotater.write(89);                // stops Rotator servo

// Holds the catapult arm on the trigger and resets the Rotator to the starting position

//  Food delivery to catapult
  fooddelivery.write(FoodDeliveryReleasePosition);  // wait for food to fall

// This is to add a delay between the food delivery and the trigger releasing

// Release catapult!!  
  delay(3000);                        // delay for the pet to find the food - edit this to change how quickly the food is delivered :)


Automatic catapult - Fritzing
Automatic catapult   fritzing 1l0ilspacc


Similar projects you might like

Pet Center - Feed and Entertain Your Pet

Project tutorial by Vítor Barbosa

  • 11 respects

Make an Autonomous "Follow Me" Cooler

Project tutorial by Hacker Shack

  • 755 respects

Automatic Pet Water Chiller

Project tutorial by Mitomon

  • 9 respects

Remote Controlled Pet Feeder

Project tutorial by Amal Mathew

  • 53 respects

Rory the Robot Plant

Project tutorial by AhmedAzouz

  • 45 respects

Bracc.ino - Robotic Arm

Project in progress by Team Basso&Delmoro&Gramaglia

  • 1 comment
  • 23 respects
Add projectSign up / Login