From c48315160cef6ad366f00cb20986b6d16f020f47 Mon Sep 17 00:00:00 2001 From: Dslak Date: Sun, 8 Dec 2019 16:40:57 +0100 Subject: [PATCH] add Arduino trace sketch --- Arduino/Lights/Lights.ino | 100 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 Arduino/Lights/Lights.ino diff --git a/Arduino/Lights/Lights.ino b/Arduino/Lights/Lights.ino new file mode 100644 index 0000000..0b49be5 --- /dev/null +++ b/Arduino/Lights/Lights.ino @@ -0,0 +1,100 @@ + +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); + } +}