Halo Battle and Assault Style Toys With Realistic Firing.

Based on the Halo 3 Battle and Assault weapons, outline 1:1 scaled to what Halopedia determine as the correct dimensions.

Car locking solenoids for sound/vibration, white and yellow phased LEDs for muzzle flash, 36 and 32 rounds ammo counter and realistic rounds per minute.

Further pictures and CCS C source at my web site www.iecd.co.uk/toys

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Be the First to Share

    Recommendations

    • Art Skills Challenge

      Art Skills Challenge
    • Make it Move

      Make it Move
    • Teacher Contest

      Teacher Contest

    30 Discussions

    0
    None
    xjr

    5 years ago on Introduction

    Sorry this is an old project, I had a look through my old stuff and I think this should be a working example.

    #include<16f883.h>
    #use delay (clock=4000000,RESTART_WDT)
    #byte PORTC=7
    #fuses NOWDT,INTRC_IO, MCLR

    long k = 0;

    void SSeg(int Count);

    #define MUZ1 PIN_A5
    #define MUZ2 PIN_A4
    #define TORCH PIN_A3
    #define LED1 PIN_A2
    #define LED2 PIN_A1
    #define SOLENOID PIN_B0

    #define SSEG1_K PIN_A7
    #define SSEG2_K PIN_A6

    #define TRIG PIN_B5
    #define MAG_IN PIN_B4
    #define BOLT_BACK PIN_B3
    #define SAFE_ON PIN_B2
    #define TORCH_ON PIN_B1


    void main(void)

    {

    int Rounds_Rem = 0, TRIG_LATCH = 0;
    long X = 0;
    short TRIG_FLAG = 0;

    //printf("Halo Assault Rifle V1.1 J.Austin 2008\n\r\n\r\n\r");

    //setup_adc(ADC_CLOCK_INTERNAL);
    //setup_adc_ports(sAN0|VSS_VREF);

    output_low(TORCH);
    output_low(MUZ1);
    output_low(MUZ2);
    output_low(SOLENOID);
    output_low(LED1);
    portc = 0;



    output_low(BOLT_BACK);
    output_low(MAG_IN);
    output_low(TORCH_ON);
    output_low(SAFE_ON);
    output_low(TORCH);
    output_low(LED1);
    output_low(LED2);

    Rounds_Rem = 36;
    do
    {

    if(Rounds_Rem == 0 )
    {
    if(X < 300)
    {
    SSeg(Rounds_Rem);
    delay_ms(50);
    X++;
    }
    else
    {

    Rounds_Rem = 36;
    X = 0;
    }
    }


    if(input(TRIG) && TRIG_FLAG == 0 )
    {
    TRIG_LATCH = 3;
    TRIG_FLAG = 1;
    }

    if(!input(TRIG) )
    {
    TRIG_LATCH = 0;
    TRIG_FLAG = 0;
    }


    if( Rounds_Rem > 0 && TRIG_LATCH > 0)
    {
    Rounds_Rem--;
    TRIG_LATCH--;

    output_high(MUZ1);
    delay_ms(20);
    output_high(MUZ2);
    delay_ms(20);
    output_low(MUZ1);
    delay_ms(10);
    output_low(MUZ2);

    output_high(SOLENOID);
    delay_ms(30);
    output_low(SOLENOID);

    }


    if( input(TRIG) ) k = 0; //Batt go into "low usage mode".

    k++; //5ms+ prog time for SSeg to return 12000=1min
    if( (k > 12000) )
    {
    delay_ms(500);
    portc = 0;
    }
    else
    {

    delay_ms(1); //delay plus execution time, of 7 seg off duration
    SSeg(Rounds_Rem); //call 7 seg display
    output_high(LED2); //turn led off
    }



    }
    while(true);

    }



    void SSeg(int Count)
    {

    Int Tens, Units, NumToConv, x=0;
    Short F=1;


    Tens=Count/10; //Divide count by 10 to get Tens
    Units=Count%10; //And find the remainder for the Units



    set_tris_c(0);



    do
    {

    ++x;
    if(F) //F is just a scratch flag here
    {

    NumToConv = Tens;
    Output_low(SSEG1_K); //Turn off "10s" & on "1s"
    Output_high(SSEG2_K);
    F=0;

    }
    else
    {

    NumToConv = Units; //Turn off "1s" & on "10s"
    Output_low(SSEG2_K);
    Output_high(SSEG1_K);
    F=1;

    }

    switch (NumToConv)
    {
    case 0:
    PORTC=63; //Decimal 63 produces 0 on the 7 seg display
    break;

    case 1:
    PORTC=6;
    break;

    case 2:
    PORTC=91;
    break;

    case 3:
    PORTC=79;
    break;

    case 4:
    PORTC=102;
    break;

    case 5:
    PORTC=109;
    break;

    case 6:
    PORTC=125;
    break;

    case 7:
    PORTC=39;
    break;

    case 8:
    PORTC=127;
    break;

    case 9:
    PORTC=111;
    break;

    default:
    PORTC=128; //Turn "nav" led on
    restart_wdt();
    }


    delay_us(2500); //This delay sets the On time for each Display
    portc = 0;
    }
    while(x<2);

    portc = 0;
    output_low(SSEG1_K); //Turn off both "10s" & "1s"
    output_low(SSEG2_K);


    }

    0
    None
    douglas128

    5 years ago on Introduction

    I could not access your website. Is there any other website that I can go to for the CCS C source code?

    0
    None
    Quin5

    5 years ago on Introduction

    I'm looking to purchase a lazertag system to start a lazertag business,
    would you be able to produce or lead me to the guns and equipment I need
    that would be safe and certifiable, that would be a cheaper option than
    the $600/gun price range that I've seen advertised by the lazertag
    manufacturers? email if so at ulrichinvesting@gmail.com

    0
    None
    SonicX 22

    9 years ago on Introduction

    dude you are so lucky you know how to make all that electric crap

    i really want an Electric Energy Sword so bad but im not smart enough XD

    and :( :(

    1 reply
    0
    None
    tinker234SonicX 22

    Reply 8 years ago on Introduction

    hey listen make a engry sword out of clear plastic tubes then just wire up batterys to leds or el wire and thats all

    0
    None
    FightingDrag

    8 years ago on Introduction

    While this is very nice, im a newbie to some of the stuff on the new site, can you edit the text on the page and give a small step by step on what we should be reading and looking at? i cant find material lists or anything

    It would've been better if you rounded the top of the assault rifle, but none the less, it's still awesome!

    0
    None
    Ward_Nox

    10 years ago on Introduction

    a step by step would be apriciated ... i bet you could rig it to work w the covenant lazer tag weapons

    6 replies
    0
    None
    xjrWard_Nox

    Reply 10 years ago on Introduction

    I will try and put something together. I am not familiar with the exact equipment of the covenant laser tag, but these systems are generally very simple. You would need to examine the serial data transmitted via the laser. Some time ago I built an experimental "sniper rifle" with scope. It fired an encoded laser at a "target" consisting of rotating photo diodes. The software tried to account for theoretical wind and gravity, of course these did not effect the laser, but we tried to simulate what would be happening to a projectile. I had it working over distances of half a mile. The project returned data over a radiolink.

    0
    None
    PKTraceurxjr

    Reply 10 years ago on Introduction

    What kind of Photo-Diodes dis you use? Do you have schematics? What kind of laser with what kind of power source? Was the "Working distance" the laser, or projectile? Did it actually shoot the diodes? How? -RoAr

    0
    None
    xjrPKTraceur

    Reply 10 years ago on Introduction

    I am sorry that was a commercial project, and I can not expand on it here.

    0
    None
    Thundertydusxjr

    Reply 10 years ago on Introduction

    The covenent tag system is easy, i modded a few nerf guns to work with them, i just took a few broken parts and some spare IR leds and soldered them to a momentry switch on the trigger =D