Arduino Automatic Bird Feeder

by fustbarrette in Circuits > Arduino

36 Views, 0 Favorites, 0 Comments

Arduino Automatic Bird Feeder

Screenshot 2026-05-07 at 6.05.10 PM.png
2DB97F4A-35D3-48C0-8120-0F115E347048_1_102_o.jpeg

The Automatic Bird Feeder is an Arduino circuit contraption made to make bird owners lives easier and is easy to make. Using an Arduino Uno and a simple gear motor, the device dispenses approximately 2.5 ounces of bird food (which we've used popcorn kernels for our demonstration) every 12 hours. However, the code is also adjustable so the amount of food and time between dispenses can vary.

Supplies

Screenshot 2026-05-07 at 6.05.50 PM.png
Screenshot 2026-05-07 at 6.06.02 PM.png

1 Arduino Uno

1 Breadboard

1 Button

1 Gear Motor

1 Battery Holder

15 Male Wires

1 Motor Driver

1 3D Printer

Any Amount of Bird Food (Popcorn Kernels for our demonstration)

1 Hot Glue Gun

Hot Glue Sticks

4 AA Batteries

Gather Supplies

Screenshot 2026-05-07 at 6.08.59 PM.png

Gather all necessary supplies listed in the supplies list.

Connecting Power

Screenshot 2026-05-07 at 5.32.45 PM.png

Connect 1 red male wire to the red power strip on the breadboard from the 5V pin on the Arduino Uno.

Connect 1 black male wire to the black ground strip on the breadboard from the GND pin on the Arduino Uno.

Connecting Gear Motor

Screenshot 2026-05-07 at 11.54.33 AM.png
Screenshot 2026-05-07 at 5.33.06 PM.png

**Reference the image above for a better understanding.

Place the motor driver onto the breadboard like shown in the image.

Connect 1 male wire from the breadboard port right below the motor driver port labeled “PWMA”, and connect the other end to pin ~11 on the Arduino Uno.

Connect 1 male wire from the breadboard port right below the motor driver port labeled “AI2”, and connect the other end to pin 12 on the Arduino Uno.

Connect 1 male wire from the breadboard port right below the motor driver port labeled “AI1”, and connect the other end to pin 13 on the Arduino Uno.

Connect 1 (preferably red) male wire from the breadboard port right below the motor driver port labeled “STBY”, and connect the other end to the lower red power strip on the breadboard.

Connect 1 (preferably black) male wire from the breadboard port right below the motor driver port labeled “GND”, and connect the other end to the lower black ground strip on the breadboard.

Connect 1 (preferably red) male wire to the lower red power strip on the breadboard, and the other end on the upper red power strip on the breadboard,

Connect 1 (preferably black) male wire to the lower black ground strip on the breadboard, and the other end on the upper black ground strip on the breadboard.

Connect 1 (preferably black) male wire to the port right above the motor driver port labeled “GND”, and the other end to the upper black ground strip on the breadboard.

Connect 1 (preferably red) male wire to the port right above the motor driver port labeled “VCC”, and the other end to the upper red power strip on the breadboard.

Connect 1 male wire to the port right above the motor driver port labeled “VM”, and the other end to the “Vin” pin on the Arduino Uno.

Connect red male wire from the gear motor to the breadboard pin above the motor driver labeled “A01”.

Connect black male wire from the gear motor to the breadboard pin above the motor driver labeled “A02”.

Connecting Button

Screenshot 2026-05-07 at 11.54.33 AM.png
Screenshot 2026-05-07 at 5.33.29 PM.png

**Reference the image above for a better understanding.

Place button onto the breadboard like shown in the image.

Connect 1 black male wire into the breadboard under the left side of the button, and the other end to the black ground strip on the breadboard.

Connect 1 male wire into the breadboard under the right side of the button, and the other end into pin 2 on the Arduino Uno.

Download Code

Screenshot 2026-05-07 at 5.34.23 PM.png

This step is important because you need to download the code so your Arduino Uno stores the code in its database to be run later. Download the attached file below.

Downloads

Print 3D Materials

Screenshot 2026-05-07 at 12.54.30 PM.png
Screenshot 2026-05-07 at 12.54.51 PM.png
Screenshot 2026-05-07 at 4.21.08 PM.png
Screenshot 2026-05-07 at 5.35.03 PM.png

For this step, download the STL files below. This will be the the large unit, the wheel turbine, and the detachable bowl. You can send these files directly to your nearest 3D printer and have them printed in a short amount of time.

Alter and Upload Code

Screenshot 2026-05-07 at 5.54.33 PM.png
Screenshot 2026-05-07 at 6.01.34 PM.png

In the code, adjust this waitAndCheck command to however long is desired for the interval between dispenses. This will typically be a couple hours. However, this value is in milliseconds, so convert accordingly.

To download the code, copy and paste the code into Arduino IDE. From here, connect your board to your laptop or computer, and send the code to the Arduino Uno. After this, you can unplug your connector because the board will be powered by the battery pack.

Assemble!

Screenshot 2026-05-07 at 5.43.13 PM.png
Screenshot 2026-05-07 at 5.43.20 PM.png

To assemble the device:

First: Attach the wheel to the motor.

Next: Hot Glue the motor to the side of the large feeder unit.

Next: Tape the Arudino Uno assembly to the bottom of the large feeder.

Next: Place the feeder assembly on top of a small cardboard box that will also double to elevate the feeder so the bowl can fit under it.

Next: Connect the battery pack (with 4 AA batteries) to the Arduino Uno. Secure the feeder to the cardboard box with tape.

Next: Cut a small hole in the small cardboard box to access the button on the breadboard.

Next (Optional): Attach the bowl to the cardboard box that is under the feeder.

Lastly: Attach a small piece of cardboard to the top of the feeder with one piece of tape. This will act as the lid.

Turn On!

Screenshot 2026-05-07 at 6.04.46 PM.png

The Automatic Bird Feeder is now complete! Add bird food through the top, close the lid, and press the button. This should make it run immediately, then will wait for however long you set for the delay.