int langs[] = {2,4,5,7,8,12}; int leds[] = {6,9,10,11}; int triggerPin = 13; int tracePin = 3; bool langStatus[] = {0,0,0,0}; int oldLang = 0; int currentLang = 0; bool oldTrigger = 0; bool trigger = 0; int traceStatus = 0; void setup() { Serial.begin(9600); for(int i=0; i<6; i++) { pinMode(langs[i], INPUT); pinMode(leds[i], OUTPUT); } pinMode(triggerPin, INPUT); pinMode(tracePin, OUTPUT); for(int i=0; i<255; i++) { analogWrite(tracePin, i); delay(10); } } void loop() { trigger = digitalRead(triggerPin); if(oldTrigger != trigger) { oldTrigger = trigger; if(trigger == HIGH) { checkLang(); Serial.print("speech"); Serial.print("\t"); Serial.println(currentLang); for(int i=traceStatus; i>=0; i--) { analogWrite(tracePin, i); delay(5); } for(int i=0; i<1000; i++) { analogWrite(leds[0], constrain(i,0,255)); analogWrite(leds[1], constrain(i-100, 0, 255)); analogWrite(leds[2], constrain(i-300, 0, 255)); analogWrite(leds[3], constrain(i-600, 0, 255)); delay(5); } } else { for(int i=255; i>=0; i--) { checkLang(); for(int x=0; x<4; x++) { analogWrite(leds[x], i); } delay(10); } while(oldTrigger == trigger) { trigger = digitalRead(triggerPin); for(traceStatus=0; traceStatus<255; traceStatus++) { analogWrite(tracePin, traceStatus); delay(10); } trigger = digitalRead(triggerPin); for(traceStatus=255; traceStatus>0; traceStatus--) { analogWrite(tracePin, traceStatus); delay(10); } trigger = digitalRead(triggerPin); } } } } void checkLang() { currentLang = 0; for(int i=0; i<6; i++) { langStatus[i] = digitalRead(langs[i]); //Serial.print(langStatus[i]); //Serial.print("\t"); if(langStatus[i] == LOW) { currentLang = i+1; } } if(oldLang != currentLang) { oldLang = currentLang; //Serial.println(currentLang); } }