const int N = 25; // number of mirrors const int mPins[N] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28}; const int pinSelect = 50; const int pinAdv = 51; int currentState[N] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int currentFrame = 0; bool dSelect; bool dAdv; bool stateTemp; void setup() { // put your setup code here, to run once: pinMode(pinSelect, INPUT); pinMode(pinAdv, INPUT); for (int p = 0; p < N; p++) { pinMode(mPins[p], OUTPUT); } } void loop() { dSelect = digitalRead(pinSelect); dAdv = digitalRead(pinAdv); delay(100); if (dAdv == true) { currentFrame = currentFrame + 1; if (currentFrame == 25) { currentFrame = 0; } } else { if (dSelect == true) { stateTemp = currentState[currentFrame]; if (stateTemp == 0) { currentState[currentFrame] = 1; } else { currentState[currentFrame] = 0; } digitalWrite(mPins[currentFrame], currentState[currentFrame]); } } }