Nerf Turret Shooter

https://www.thingiverse.com/thing:3766858/https://www.thingiverse.com/thing:3766858/https://www.thingiverse.com/thing:3766858/
Product: https://www.tindie.com/products/williambailes/nerf-turret-shooter-controller/Product: https://www.tindie.com/products/williambailes/nerf-turret-shooter-controller/Product: https://www.tindie.com/products/williambailes/nerf-turret-shooter-controller/

I wanted to make something that could shoot nerf darts or disk when triggered. I have been looking around for a nerf blaster that I could modify but I have not been able to find one. I could have used a nerf dart blaster but through the disks or balls would be more interesting to play with.
One day I just ordered some disks to see what I can do with them. After a few tests, I came up with this design.
I tried to make the shooter to be a desktop turret with a round body that can put into a tube. after making the turret, I thought it looked cool without the tube.

The Turret

The turret uses normal nerf disks that can be bought from Aliexpress for cheap and uses 2 hobby motors at 12V to shoot the disks. A 9g hobby RC servo is used to push the disks into the motors for shooting.
The system is all controlled from a custom PCB to make the electronics neat and easily mounted.

Files for Project

PCB files.
GNU General Public License v3.0

Download

Files for Project

PCB files.
GNU General Public License v3.0

Download

Files for Project

PCB files.
GNU General Public License v3.0

Download

Code for Project

GNU General Public License v3.0

#include <Servo.h>

Servo shootingServo;
#define motorpin A1
#define startpin 0
unsigned long lastHigh = 0;

void setup() 
{
    shootingServo.attach(9);
    shootingServo.write(0); 
    pinMode(motorpin, OUTPUT);
    pinMode(startpin, INPUT);
    pinMode(1, INPUT);
    digitalWrite(1,HIGH);
}

void loop() 
{
    if(digitalRead(startpin)==HIGH)
    {
        lastHigh = millis();
        digitalWrite(motorpin,HIGH);
        shootingServo.write(120); 
    }
    else
    {
        shootingServo.write(40); 
    }
    

    if(lastHigh+1000 < millis())
    {
        digitalWrite(motorpin,LOW);
        shootingServo.write(40); 
    }
}

Code for Project

GNU General Public License v3.0

#include <Servo.h>

Servo shootingServo;
#define motorpin A1
#define startpin 0
unsigned long lastHigh = 0;

void setup() 
{
    shootingServo.attach(9);
    shootingServo.write(0); 
    pinMode(motorpin, OUTPUT);
    pinMode(startpin, INPUT);
    pinMode(1, INPUT);
    digitalWrite(1,HIGH);
}

void loop() 
{
    if(digitalRead(startpin)==HIGH)
    {
        lastHigh = millis();
        digitalWrite(motorpin,HIGH);
        shootingServo.write(120); 
    }
    else
    {
        shootingServo.write(40); 
    }
    

    if(lastHigh+1000 < millis())
    {
        digitalWrite(motorpin,LOW);
        shootingServo.write(40); 
    }
}

Code for Project

GNU General Public License v3.0

#include <Servo.h>

Servo shootingServo;
#define motorpin A1
#define startpin 0
unsigned long lastHigh = 0;

void setup() 
{
    shootingServo.attach(9);
    shootingServo.write(0); 
    pinMode(motorpin, OUTPUT);
    pinMode(startpin, INPUT);
    pinMode(1, INPUT);
    digitalWrite(1,HIGH);
}

void loop() 
{
    if(digitalRead(startpin)==HIGH)
    {
        lastHigh = millis();
        digitalWrite(motorpin,HIGH);
        shootingServo.write(120); 
    }
    else
    {
        shootingServo.write(40); 
    }
    

    if(lastHigh+1000 < millis())
    {
        digitalWrite(motorpin,LOW);
        shootingServo.write(40); 
    }
}

Latest Projects

Popular Projects