/*SUIT CONTROL PROGRAM WITH 2 ARDUINOS*/ //LED GROUPS #define ARM_FRONT 5 #define ARM_BACK 6 #define LEG_BACK 9 #define LEG_FRONT 10 #define TORSO 11 #define BUTTON_PIN 2 #define NUMBER_OF_DIRECTIVES 5 int buttonState = 0; int directive = 1; volatile int state = LOW; long lastDebounceTime = 0; // the last time the output pin was toggled long debounceDelay = 500; // the debounce time; increase if the output flickers void setup() { Serial.begin(9600); pinMode(ARM_FRONT, OUTPUT); pinMode(ARM_BACK, OUTPUT); pinMode(LEG_FRONT, OUTPUT); pinMode(LEG_BACK, OUTPUT); pinMode(TORSO, OUTPUT); pinMode (BUTTON_PIN, INPUT); attachInterrupt(0, changePattern, RISING); } /* turns on multiple lightgroups lightArray[]: array of lightgroups to turn on at once n: number of lights in array onTime: number of ms lights are on offTime: number of ms lights are off brightness: intensity (0 - 255) of light */ void turnOn(int lightArray[], int n, int onTime, int offTime, int brightness) { for (int i = 0; i < n; i++) { analogWrite(lightArray[i], brightness); } delay(onTime); if(offTime > 0) { for (int i = 0; i < n; i++) { analogWrite(lightArray[i], 0); } delay(offTime); } } //Turn on torso void lightPattern0() { int lightArray[] = {TORSO}; turnOn(lightArray, 1, 100, 0, 255); } //Turn on all groups void lightPattern1() { int lightArray[] = {TORSO, ARM_FRONT, ARM_BACK, LEG_FRONT, LEG_BACK}; turnOn(lightArray, 5, 100, 0, 255); } //Fade in, fade out lights void lightPattern2() { int lightArray[] = {TORSO, ARM_FRONT, ARM_BACK, LEG_FRONT, LEG_BACK}; for (int i=0;i<256;i++) { turnOn(lightArray, 5, 2, 0, i); } for (int i=255;i>-1;i--) { turnOn(lightArray, 5, 2, 0, i); } } //Flash all groups void lightPattern3() { int lightArray[] = {TORSO, ARM_FRONT, ARM_BACK, LEG_FRONT, LEG_BACK}; turnOn(lightArray, 5, 100, 100, 255); } //Random flash void lightPattern4() { int totalArray[] = {TORSO, ARM_FRONT, ARM_BACK, LEG_FRONT, LEG_BACK}; int rNum = random(6); int lightArray[rNum]; for (int i=0;i debounceDelay) { Serial.println("CLICK"); directive ++; if (directive >= NUMBER_OF_DIRECTIVES) { directive = 0; } lastDebounceTime = millis(); } } void loop () { switch (directive) { case 0: lightPattern0(); break; case 1: lightPattern1(); break; case 2: lightPattern2(); break; case 3: lightPattern3(); break; case 4: lightPattern4(); break; } } // End Loop