int whitePin = 10; int whiteFade = 0; int leds[10]; int pwms[5]; int pwmLen = 5; int totalLeds = 10; // the pin that the array of pins begin on // int beginPin = 3; // hold the current pin that is being incremented // int startPin = 3; int state_1 = 0; int prevReading_1 = 0; int reading_1 = 0; int state_2 = 0; int prevReading_2 = 0; int reading_2 = 0; int button1 = 1; int button2 = 5; long timer = 0; int blink = 0; int checkButtsAgain = 0; void setup() { Serial.begin(9600); leds[0] = 3; leds[1] = 4; leds[2] = 5; leds[3] = 7; leds[4] = 6; leds[5] = 13; leds[6] = 9; leds[7] = 8; leds[8] = 11; leds[9] = 12; pwms[0] = leds[0]; pwms[1] = leds[2]; pwms[2] = leds[4]; pwms[3] = leds[6]; pwms[4] = leds[8]; for (int i = 0; i < totalLeds; i++) { pinMode(leds[i], OUTPUT); } pinMode(whitePin, OUTPUT); } void loop() { checkStates(); } void checkStates() { if (state_1 == 0 && state_2 == 0) { whiteOff(); redOff(); } if (state_1 == 1 && state_2 == 0) { whiteOff(); redOn(); } if (state_2 == 1 && state_1 == 0) { redQuickOff(); whiteOn(); } if (state_1 == 1 && state_2 == 1) { whiteOff(); blinkEm(); } } void redQuickOff() { for (int i = 4; i >= 0; i--) { analogWrite(pwms[i], 0); digitalWrite(pwms[i], LOW); } } void redOff() { for (int i = 4; i >= 0; i--) { for (int j = 255; j >= 0; j-=5) { analogWrite(pwms[i], j); delay(10); checkButtons(); } digitalWrite(pwms[i], LOW); } checkStates(); } void redOn() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 255; j+=5) { analogWrite(pwms[i], j); delay(10); checkButtons(); } } checkStates(); } void whiteOn() { for (int i = 0; i < 255; i++) { analogWrite(whitePin, i); delay(20); checkButtons(); } for (int i = 255; i > 0; i--) { analogWrite(whitePin, i); delay(20); checkButtons(); } checkStates(); } void whiteOff() { analogWrite(whitePin, 0); digitalWrite(whitePin, LOW); } void blinkEm() { if (blink == 1) { for (int i = 0; i < 5; i++) { analogWrite(pwms[i], 254); checkButtons(); } //whiteOff(); blink = 0; } else { //redOff(); //whiteOn(); for (int i = 0; i < 5; i++) { //digitalWrite(leds[i], HIGH); //for (int j = 0; j < 255; j+=5) { analogWrite(pwms[i], 0); //delay(10); checkButtons(); //} } blink = 1; } } void checkButtons() { reading_1 = analogRead(button1); reading_2 = analogRead(button2); Serial.print("state_1: "); Serial.print(state_1); Serial.print(" - "); Serial.print("state_2: "); Serial.print(state_2); Serial.print("\n"); if ((reading_1 > 550 && prevReading_1 < 300) || (reading_2 > 550 && prevReading_2 < 300)) { // invert states // if (reading_1 > 550) { if (state_1 == 1) { state_1 = 0; } else { state_1 = 1; } } if (reading_2 > 550) { if (state_2 == 1) { state_2 = 0; } else { state_2 = 1; } } } prevReading_1 = reading_1; prevReading_2 = reading_2; }