Push Button LED issue

So I build models. I have a Star Wars Y-Wing I'm building and I want to have the lasers fire and the ion canons fire as well. I am doing this using an Adafruit Trinket. So I created a sketch where if button 1 is pushed, the lasers LED fires and if button 2 is pushed, the ion canons LED fires. So here's my dilemma....

Attached is my sketch. If I remove the sketch section in my void loop of the if "Ion Canon Button Push", the if "laser button push" sketch works perfectly fine on it's own and pushing the laser button blinks the laser LED as I wanted, and the ion button does nothing. Continually holding down the button continually fires in bursts. Or, if I remove the if "laser button push" sketch section from the void loop, the if "ion canon button push" sketch works completely fine as well and the the ion LED works as it's supposed to and the laser button does nothing. But when both button push sketches are in my void loop, pushing either button lights up the ion canon LED, and holding down either button keeps the ion canon continually lit and the laser led fires about 2x per second. I understand that because of my delay code on the ion LED that the laser button won't work until that delay is done, which is fine, but pushing the laser button also lights up the ion canon LED and again, holding it down the ion LED stays lit and the laser LED blinks about 2x per second. What am I missing here in my code?

Wiring and everything is correct, with resistors and such, which I can post if really neded, and again, they each work on their own without the others code in the void loop, so I don't think it's wiring and that it's something in my code.

"Help me Arduino Forum, you're my only hope". Sorry, had to.

#include <Adafruit_NeoPixel.h>

#define ionLED 1
#define laserLED 2
#define laserSWITCH 3
#define ionSWITCH 4
int ledState = LOW;
long previousMillis = 0;
long interval = 100;

void setup() {
pinMode(laserLED, OUTPUT);
pinMode(ionLED, OUTPUT);
pinMode(laserSWITCH, INPUT_PULLUP);
pinMode(ionSWITCH, INPUT_PULLUP);
digitalWrite(laserSWITCH, HIGH);
digitalWrite(ionSWITCH, HIGH);
digitalWrite(laserLED, LOW);
digitalWrite(ionLED, LOW);

}

void loop() { // begin button reading

// Laser Button Push
if (! digitalRead(laserSWITCH)) { // laser button is pushed

//begin laser LED
unsigned long currentMillis = millis();
if (currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = 255;
else
ledState = LOW;
digitalWrite(laserLED, ledState);
}
} else digitalWrite(laserLED, LOW);

// Ion Canon Button Push
if (! digitalRead(ionSWITCH)) { // ion canon button is pushed

//begin ion canon LED
digitalWrite(ionLED, 255);
delay(400);
digitalWrite(ionLED, LOW);
}
}

You should

  • read how to use the forum to properly post code using code tags (and fix your first post)
  • use unsigned long instead of long for anything related to millis()
  • use HIGH instead of 255 for Your digitalWrite()
  • to be semantically clear, compare your digitalRead() against LOW to see if pressed
  • define exactly the behavior you want to see and what fire means:blinking or just on? the first test generates a blinking pattern every 100ms whilst button is pressed.
  • If what you want to do is just having the LED on when you press the button, you don’t need an arduino...just wire the LED with its current limiting resistor to the button.
  • do not use any delay(), read the first post at the top of the forum to better understand how to use milis()