I am trying to switch the colors of the firing animations for my proton gun program. I cant seem to get it to happen. Here is the portion of the code I have been working on:
unsigned long prevFireMillis = 0;
const int fire_interval = 50; // interval at which to cycle lights (milliseconds).
int fireSeqNum = 0;
int fireSeqTotal = 5;
//counter variables for Mode Button
int modePushCounter = 0;
int modeButtonState = 0;
int modeLastButtonState =0;
//fire sequence color initialization
uint32_t color1 = noseJewel.Color(255, 255, 255);//white
uint32_t color2 = noseJewel.Color(0, 0, 255);//blue
uint32_t color3 = noseJewel.Color(255, 0, 0);//red
uint32_t color4 = noseJewel.Color(0, 255, 0);//green
uint32_t color5 = noseJewel.Color(255, 0, 255);//purple
//read mode button pin
void buttoncounter(int modePushCounter){
modeButtonState = digitalRead(fireModeButton);
// compare mode button state to its previous state
if (modeButtonState != modeLastButtonState){
//if the state has changed, increment counter
if (modeButtonState == HIGH){
//if the current state is HIGH then the button went from off to on
modePushCounter++;
}
}
//save current state as last state
modeLastButtonState=modeButtonState;
if (modePushCounter >3){
modePushCounter = 0;
if (modePushCounter = 1){
uint32_t color2 = noseJewel.Color(0, 255, 0);//green
uint32_t color3 = noseJewel.Color(0, 255, 0);//green
uint32_t color4 = noseJewel.Color(0, 255, 0);//green
}
if (modePushCounter = 2){
uint32_t color2 = noseJewel.Color(0, 0, 255);//blue
uint32_t color3 = noseJewel.Color(0, 0, 255);//blue
uint32_t color4 = noseJewel.Color(0, 0, 255);//blue
}
if (modePushCounter = 3){
uint32_t color2 = noseJewel.Color(255, 165, 0);//orange
uint32_t color3 = noseJewel.Color(255, 165, 0);//orange
uint32_t color4 = noseJewel.Color(255, 165, 0);//orange
}else{
uint32_t color2 = noseJewel.Color(0, 0, 255);//blue
uint32_t color3 = noseJewel.Color(255, 0, 0);//red
uint32_t color4 = noseJewel.Color(0, 255, 0);//green
}
}
}
void clearFireStrobe() {
for ( int i = 0; i < 7; i++) {
noseJewel.setPixelColor(i, 0);
}
noseJewel.show();
fireSeqNum = 0;
}
void fireStrobe(int currentMillis) {
buttoncounter(modePushCounter);
if (currentMillis - prevFireMillis > fire_interval) {
prevFireMillis = currentMillis;
switch ( fireSeqNum ) {
case 0:
noseJewel.setPixelColor(0, color1);
noseJewel.setPixelColor(1, color1);
noseJewel.setPixelColor(2, 0);
noseJewel.setPixelColor(3, color1);
noseJewel.setPixelColor(4, 0);
noseJewel.setPixelColor(5, color1);
noseJewel.setPixelColor(6, 0);
break;
case 1:
noseJewel.setPixelColor(0, color2);
noseJewel.setPixelColor(1, color3);
noseJewel.setPixelColor(2, color1);
noseJewel.setPixelColor(3, color3);
noseJewel.setPixelColor(4, color1);
noseJewel.setPixelColor(5, color3);
noseJewel.setPixelColor(6, color1);
break;
case 2:
noseJewel.setPixelColor(0, color3);
noseJewel.setPixelColor(1, 0);
noseJewel.setPixelColor(2, color2);
noseJewel.setPixelColor(3, 0);
noseJewel.setPixelColor(4, color2);
noseJewel.setPixelColor(5, 0);
noseJewel.setPixelColor(6, color3);
break;
case 3:
noseJewel.setPixelColor(0, color3);
noseJewel.setPixelColor(1, color3);
noseJewel.setPixelColor(2, color1);
noseJewel.setPixelColor(3, color3);
noseJewel.setPixelColor(4, color1);
noseJewel.setPixelColor(5, color3);
noseJewel.setPixelColor(6, color1);
break;
case 4:
noseJewel.setPixelColor(0, color3);
noseJewel.setPixelColor(1, 0);
noseJewel.setPixelColor(2, color1);
noseJewel.setPixelColor(3, 0);
noseJewel.setPixelColor(4, color3);
noseJewel.setPixelColor(5, 0);
noseJewel.setPixelColor(6, color1);
break;
case 5:
noseJewel.setPixelColor(0, color5);
noseJewel.setPixelColor(1, color4);
noseJewel.setPixelColor(2, color3);
noseJewel.setPixelColor(3, color2);
noseJewel.setPixelColor(4, color5);
noseJewel.setPixelColor(5, color1);
noseJewel.setPixelColor(6, color2);
break;
}
noseJewel.show();
fireSeqNum++;
if ( fireSeqNum > fireSeqTotal ) {
fireSeqNum = 0;
}
}
}
As you can see, I am setting up a counter for how many times the button is pushed, and trying to use that number to change the colors in the firing sequence. Perhaps I have it in the wrong place in the loop?
I am prone to mistakes as Im pretty new to this. Any help you can offer is appreciated.