long previousMillis1 = 0;
long previousMillis2 = 0;
long previousMillis3 = 0;
Time variables should be unsigned long, unless you plan to travel faster than the speed of light.
#define IonLED 0
#define PIN 1
Get that crap off the hardware serial pins, so you can debug your code.
digitalWrite(laserSWITCH, HIGH);
digitalWrite(IonSWTICH, HIGH);
WTF? Why are you writing to INPUT pins?
void engineBrighten();
Why do you have a function prototype in the middle of setup()?
} while (i < 255, c > 0);
Why are you misusing the comma operator?
Add a Serial.begin() call and some Serial.print() statements to figure out what your code is doing. Debugging by guessing sucks.