You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.1 KiB

int langs[] = {2,4,7,8};
int leds[] = {6,9,10,11};
int triggerPin = 12;
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<4; 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<4; 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);
}
}