diff --git a/sketches/max_sketch/Glare_1/Glare_1.ino b/sketches/max_sketch/Glare_1/Glare_1.ino new file mode 100644 index 0000000..1529f77 --- /dev/null +++ b/sketches/max_sketch/Glare_1/Glare_1.ino @@ -0,0 +1,680 @@ +#include +//#include +//#include + +#include +#include + +//multiplexer adresses +Adafruit_ADS1115 adsa (0x48); +Adafruit_ADS1115 adsb (0x49); +Adafruit_ADS1115 adsc (0x4A); +Adafruit_ADS1115 adsd (0x4B); + + +//note values +const char note0[] PROGMEM = ":d=128,b=600,o=3:c+"; //plays c4 +const char note1[] PROGMEM = ":d=128,b=600,o=3:d+"; //plays d4 +const char note2[] PROGMEM = ":d=128,b=600,o=3:e+"; //plays e4 +const char note3[] PROGMEM = ":d=128,b=600,o=3:g+"; //plays g4 +const char note4[] PROGMEM = ":d=128,b=600,o=3:a+"; //plays a4 +const char note5[] PROGMEM = ":d=128,b=600,o=4:c+"; //plays c5 +const char note6[] PROGMEM = ":d=128,b=600,o=4:d+"; //plays d5 +const char note7[] PROGMEM = ":d=128,b=600,o=4:e+"; //plays e5 +const char note8[] PROGMEM = ":d=128,b=600,o=4:g+"; //plays g5 +const char note9[] PROGMEM = ":d=128,b=600,o=4:a+"; //plays a5 +const char note10[] PROGMEM = ":d=128,b=600,o=5:c+"; //plays c6 +const char note11[] PROGMEM = ":d=128,b=600,o=5:d+"; //plays d6 +const char note12[] PROGMEM = ":d=128,b=600,o=5:e+"; //plays e6 +const char note13[] PROGMEM = ":d=128,b=600,o=5:g+"; //plays g6 +const char note14[] PROGMEM = ":d=128,b=600,o=5:a+"; //plays a6 +const char note15[] PROGMEM = ":d=128,b=600,o=6:c+"; //plays c7 + +MusicWithoutDelay Insta(note0); +MusicWithoutDelay Instb(note1); +MusicWithoutDelay Instc(note2); +MusicWithoutDelay Instd(note3); +MusicWithoutDelay Inste(note4); +MusicWithoutDelay Instf(note5); +MusicWithoutDelay Instg(note6); +MusicWithoutDelay Insth(note7); +MusicWithoutDelay Insti(note8); +MusicWithoutDelay Instj(note9); +MusicWithoutDelay Instk(note10); +MusicWithoutDelay Instl(note11); +MusicWithoutDelay Instm(note12); +MusicWithoutDelay Instn(note13); +MusicWithoutDelay Insto(note14); +MusicWithoutDelay Instp(note15); + + + + +int count; +//int vol; +int VA0, VA1, VA2, VA3, VA4, VA5, VA6, VA7, VA8, VA9, VA10, VA11, VA12, VA13, VA14, VA15; +int TH0, TH1, TH2, TH3, TH4, TH5, TH6, TH7, TH8, TH9, TH10, TH11, TH12, TH13, TH14, TH15; +int VOL0, VOL1, VOL2, VOL3, VOL4, VOL5, VOL6, VOL7, VOL8, VOL9, VOL10, VOL11, VOL12, VOL13, VOL14, VOL15; +bool CV; + +int ZER; +int ONE; +int TWO; +int THR; +int FOU; +int FIV; +int SIX; +int SEV; +int EIG; +int NIN; +int TEN; +int ELE; +int TWE; +int THT; +int FOT; +int FIT; + +void setup() { + Serial.begin(115200); + pinMode(20, INPUT); + + //set the gain for multiplexed INs + adsa.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 2mV 0.125mV + adsb.setGain(GAIN_ONE); + adsc.setGain(GAIN_ONE); + adsd.setGain(GAIN_ONE); + + Serial.println("Ini MPX "); + adsa.begin(); + adsb.begin(); + adsc.begin(); + adsd.begin(); + Serial.println("MPX Ini"); + + Serial.println("Wait4MWD"); + Serial.println("Ini MWD"); + + calib(); + + Insta.begin(CHA, TRIANGLE, ENVELOPE0, 0); + Instb.begin(TRIANGLE, ENVELOPE0, 0); + Instc.begin(TRIANGLE, ENVELOPE0, 0); + Instd.begin(TRIANGLE, ENVELOPE0, 0); + Inste.begin(TRIANGLE, ENVELOPE0, 0); + Instf.begin(TRIANGLE, ENVELOPE0, 0); + Instg.begin(TRIANGLE, ENVELOPE0, 0); + Insth.begin(TRIANGLE, ENVELOPE0, 0); + Insti.begin(TRIANGLE, ENVELOPE0, 0); + Instj.begin(TRIANGLE, ENVELOPE0, 0); + Instk.begin(TRIANGLE, ENVELOPE0, 0); + Instl.begin(TRIANGLE, ENVELOPE0, 0); + Instm.begin(TRIANGLE, ENVELOPE0, 0); + Instn.begin(TRIANGLE, ENVELOPE0, 0); + Insto.begin(TRIANGLE, ENVELOPE0, 0); + Instp.begin(TRIANGLE, ENVELOPE0, 0); + + Insta.pause(true); + Instb.pause(true); + Instc.pause(true); + Instd.pause(true); + Inste.pause(true); + Instf.pause(true); + Instg.pause(true); + Insth.pause(true); + Insti.pause(true); + Instj.pause(true); + Instk.pause(true); + Instl.pause(true); + Instm.pause(true); + Instn.pause(true); + Insto.pause(true); + Instp.pause(true); + + Serial.println("go!"); +} + +void calib() { + //calibrate the LDRs + Serial.println ("Calib"); + TH0 = (adsa.readADC_SingleEnded(0) + 800); + TH1 = (adsa.readADC_SingleEnded(1) + 800); + TH2 = (adsa.readADC_SingleEnded(2) + 800); + TH3 = (adsa.readADC_SingleEnded(3) + 800); + TH4 = (adsb.readADC_SingleEnded(0) + 800); + TH5 = (adsb.readADC_SingleEnded(1) + 800); + TH6 = (adsb.readADC_SingleEnded(2) + 800); + TH7 = (adsb.readADC_SingleEnded(3) + 800); + TH8 = (adsc.readADC_SingleEnded(0) + 800); + TH9 = (adsc.readADC_SingleEnded(1) + 800); + TH10 = (adsc.readADC_SingleEnded(2) + 800); + TH11 = (adsc.readADC_SingleEnded(3) + 800); + TH12 = (adsd.readADC_SingleEnded(0) + 800); + TH13 = (adsd.readADC_SingleEnded(1) + 800); + TH14 = (adsd.readADC_SingleEnded(2) + 800); + TH15 = (adsd.readADC_SingleEnded(3) + 800); + + Serial.print ("TH0="); + Serial.println (TH0); + Serial.print ("TH1="); + Serial.println (TH1); + Serial.print ("TH2="); + Serial.println (TH2); + Serial.print ("TH3="); + Serial.println (TH3); + Serial.print ("TH4="); + Serial.println (TH4); + Serial.print ("TH5="); + Serial.println (TH5); + Serial.print ("TH6="); + Serial.println (TH6); + Serial.print ("TH7="); + Serial.println (TH7); + Serial.print ("TH8="); + Serial.println (TH8); + Serial.print ("TH9="); + Serial.println (TH9); + Serial.print ("TH10="); + Serial.println (TH10); + Serial.print ("TH11="); + Serial.println (TH11); + Serial.print ("TH12="); + Serial.println (TH12); + Serial.print ("TH13="); + Serial.println (TH13); + Serial.print ("TH14="); + Serial.println (TH14); + Serial.print ("TH15="); + Serial.println (TH15); + } + +void loop() { + bool curcv = digitalRead(20); +// Serial.println (curcv); + count = 0; + + Insta.update(); + Instb.update(); + Instc.update(); + Instd.update(); + Inste.update(); + Instf.update(); + Instg.update(); + Insth.update(); + Insti.update(); + Instj.update(); + Instk.update(); + Instl.update(); + Instm.update(); + Instn.update(); + Insto.update(); + Instp.update(); + + + //Messure LDR inputs + VA0 = adsa.readADC_SingleEnded(0); + VA1 = adsa.readADC_SingleEnded(1); + VA2 = adsa.readADC_SingleEnded(2); + VA3 = adsa.readADC_SingleEnded(3); + +// Serial.print("VA0: "); Serial.println(VA0); +// Serial.print("VA1: "); Serial.println(VA1); +// Serial.print("VA2: "); Serial.println(VA2); +// Serial.print("VA3: "); Serial.println(VA3); +// Serial.println(" "); + + VA4 = adsb.readADC_SingleEnded(0); + VA5 = adsb.readADC_SingleEnded(1); + VA6 = adsb.readADC_SingleEnded(2); + VA7 = adsb.readADC_SingleEnded(3); + +// Serial.print("VA4: "); Serial.println(VA4); +// Serial.print("VA5: "); Serial.println(VA5); +// Serial.print("VA6: "); Serial.println(VA6); +// Serial.print("VA7: "); Serial.println(VA7); +// Serial.println(" "); + + VA8 = adsc.readADC_SingleEnded(0); + VA9 = adsc.readADC_SingleEnded(1); + VA10 = adsc.readADC_SingleEnded(2); + VA11 = adsc.readADC_SingleEnded(3); + +// Serial.print("VA8: "); Serial.println(VA8); +// Serial.print("VA9: "); Serial.println(VA9); +// Serial.print("VA10: "); Serial.println(VA10); +// Serial.print("VA11: "); Serial.println(VA11); +// Serial.println(" "); + + VA12 = adsd.readADC_SingleEnded(0); + VA13 = adsd.readADC_SingleEnded(1); + VA14 = adsd.readADC_SingleEnded(2); + VA15 = adsd.readADC_SingleEnded(3); + +// Serial.print("VA12: "); Serial.println(VA12); +// Serial.print("VA13: "); Serial.println(VA13); +// Serial.print("VA14: "); Serial.println(VA14); +// Serial.print("VA15: "); Serial.println(VA15); +// Serial.println(" "); + + if (CV != curcv) { + CV = curcv; + // CV changes +// Serial.print("cv"); +// Serial.println(CV); + if (CV) { + // entering Audio + Serial.println("entering Audio"); + digitalWrite(0, LOW); + digitalWrite(1, LOW); + digitalWrite(2, LOW); + digitalWrite(4, LOW); + digitalWrite(5, LOW); + digitalWrite(6, LOW); + digitalWrite(7, LOW); + digitalWrite(8, LOW); + digitalWrite(9, LOW); + digitalWrite(10, LOW); + digitalWrite(11, LOW); + digitalWrite(12, LOW); + digitalWrite(13, LOW); + digitalWrite(14, LOW); + digitalWrite(15, LOW); + digitalWrite(16, LOW); + } else { + //entering CV + Serial.println("entering CV"); + ZER = false; + ONE = false; + TWO = false; + THR = false; + FOU = false; + FIV = false; + SIX = false; + SEV = false; + EIG = false; + NIN = false; + TEN = false; + ELE = false; + TWE = false; + THT = false; + FOT = false; + FIT = false; + } + } + + if (!CV) { + control(); + } else { + audio(); + } + + //if (digitalRead(17) == LOW) { + //calib(); + //} +} + + void control() { + + if (VA0 > TH0) { + digitalWrite(0, HIGH); + } + else if (VA0 < TH0) { + digitalWrite(0, LOW); + } + + if (VA1 > TH1) { + digitalWrite(1, HIGH); + } + else if (VA1 < TH1) { + digitalWrite(1, LOW); + } + + if (VA2 > TH2) { + digitalWrite(2, HIGH); + } + else if (VA2 < TH2) { + digitalWrite(2, LOW); + } + + if (VA3 > TH3) { + digitalWrite(4, HIGH); + } + else if (VA3 < TH3) { + digitalWrite(4, LOW); + } + + if (VA4 > TH4) { + digitalWrite(5, HIGH); + } + else if (VA4 < TH4) { + digitalWrite(5, LOW); + } + + if (VA5 > TH5) { + digitalWrite(7, HIGH); + } + else if (VA5 < TH5) { + digitalWrite(7, LOW); + } + + if (VA6 > TH6) { + digitalWrite(6, HIGH); + } + else if (VA6 < TH6) { + digitalWrite(6, LOW); + } + + if (VA7 > TH7) { + digitalWrite(8, HIGH); + } + else if (VA7 < TH7) { + digitalWrite(8, LOW); + } + + if (VA8 > TH8) { + digitalWrite(9, HIGH); + } + else if (VA8 < TH8) { + digitalWrite(9, LOW); + } + + if (VA9 > TH9) { + digitalWrite(10, HIGH); + } + else if (VA9 < TH9) { + digitalWrite(10, LOW); + } + + if (VA10 > TH10) { + digitalWrite(12, HIGH); + } + else if (VA10 < TH10) { + digitalWrite(12, LOW); + } + + if (VA11 > TH11) { + digitalWrite(11, HIGH); + } + else if (VA11 < TH11) { + digitalWrite(11, LOW); + } + + if (VA12 > TH12) { + digitalWrite(13, HIGH); + } + else if (VA12 < TH12) { + digitalWrite(13, LOW); + } + + if (VA13 > TH13) { + digitalWrite(14, HIGH); + } + else if (VA13 < TH13) { + digitalWrite(14, LOW); + } + + if (VA14 > TH14) { + digitalWrite(15, HIGH); + } + else if (VA14 < TH14) { + digitalWrite(15, LOW); + } + + if (VA15 > TH15) { + digitalWrite(16, HIGH); + } + else if (VA15 < TH15) { + digitalWrite(16, LOW); + } + } + + + void audio () { + + if (ZER = (VA0 > TH0)) count++; + + if (ONE = (VA1 > TH1)) count++; + + if (TWO = (VA2 > TH2)) count++; + + if (THR = (VA3 > TH3)) count++; + + if (FOU = (VA4 > TH4)) count++; + + if (FIV = (VA5 > TH5)) count++; + + if (SIX = (VA6 > TH6)) count++; + + if (SEV = (VA7 > TH7)) count++; + + if (EIG = (VA8 > TH8)) count++; + + if (NIN = (VA9 > TH9)) count++; + + if (TEN = (VA10 > TH10)) count++; + + if (ELE = (VA11 > TH11)) count++; + + if (TWE = (VA12 > TH12)) count++; + + if (THT = (VA13 > TH13)) count++; + + if (FOT = (VA14 > TH14)) count++; + + if (FIV = (VA15 > TH15)) count++; + + if (ZER) { + VOL0 = 50/count+constrain(map(VA0, TH0, TH0+5000, 0, 65), 0, 65); + Insta.play(true); + Insta.setVolume(VOL0); + // Serial.print("Tone0 active at vol:"); + // Serial.println(VOL0); + // Serial.println(VA0); + } + + if (!ZER) { + Insta.pause (true); + } + + if (ONE) { + VOL1 = 50/count+constrain(map(VA1, TH1, TH1+5000, 0, 65), 0, 65); + Instb.play(true); + Instb.setVolume(VOL1); + // Serial.print("Tone1 active at vol:"); + // Serial.println(VOL1); + // Serial.println(VA1); + } + + if (!ONE) { + Instb.pause (true); + } + + if (TWO) { + VOL2 = 50/count+constrain(map(VA2, TH2, TH2+5000, 0, 65), 0, 65); + Instc.play(true); + Instc.setVolume(VOL2); + // Serial.print("Tone2 active at vol:"); + // Serial.println(VOL2); + // Serial.println(VA2); + } + + if (!TWO) { + Instc.pause (true); + } + + if (THR) { + VOL3 = 50/count+constrain(map(VA3, TH3, TH3+5000, 0, 65), 0, 65); + Instd.play(true); + Instd.setVolume(VOL3); + // Serial.print("Tone3 active at vol:"); + // Serial.println(VOL3); + // Serial.println(VA3); + } + + if (!THR) { + Instd.pause (true); + } + + if (FOU) { + VOL4 = 50/count+constrain(map(VA4, TH4, TH4+5000, 0, 65), 0, 65); + Inste.play(true); + Inste.setVolume(VOL4); + // Serial.print("Tone4 active at vol:"); + // Serial.println(VOL4); + // Serial.println(VA4); + } + + if (!FOU) { + Inste.pause (true); + } + + if (FIV) { + VOL5 = 50/count+constrain(map(VA5, TH5, TH5+5000, 0, 65), 0, 65); + Instf.play(true); + Instf.setVolume(VOL5); + // Serial.print("Tone5 active at vol:"); + // Serial.println(VOL5); + // Serial.println(VA5); + } + + if (!FIV) { + Instf.pause (true); + } + + + if (SIX) { + VOL6 = 50/count+constrain(map(VA6, TH6, TH6+5000, 0, 65), 0, 65); + Instg.play(true); + Instg.setVolume(VOL6); + // Serial.print("Tone6 active at vol:"); + // Serial.println(VOL6); + // Serial.println(VA6); + } + + if (!SIX) { + Instg.pause (true); + } + + if (SEV) { + VOL7 = 50/count+constrain(map(VA7, TH7, TH7+5000, 0, 65), 0, 65); + Insth.play(true); + Insth.setVolume(VOL7); + // Serial.print("Tone7 active at vol:"); + // Serial.println(VOL7); + // Serial.println(VA7); + } + + if (!SEV) { + Insth.pause (true); + } + + + if (EIG) { + VOL8 = 50/count+constrain(map(VA8, TH8, TH8+5000, 0, 65), 0, 65); + Insti.play(true); + Insti.setVolume(VOL8); + // Serial.print("Tone8 active at vol:"); + // Serial.println(VOL8); + // Serial.println(VA8); + } + + if (!EIG) { + Insti.pause (true); + } + + if (NIN) { + VOL9 = 50/count+constrain(map(VA9, TH9, TH9+5000, 0, 65), 0, 65); + Instj.play(true); + Instj.setVolume(VOL9); + // Serial.print("Tone9 active at vol:"); + // Serial.println(VOL9); + // Serial.println(VA9); + } + + if (!NIN) { + Instk.pause (true); + } + + if (TEN) { + VOL10 = 50/count+constrain(map(VA10, TH10, TH10+5000, 0, 65), 0, 65); + Instk.play(true); + Instk.setVolume(VOL10); + // Serial.print("Tone10 active at vol:"); + // Serial.println(VOL10); + // Serial.println(VA10); + } + + if (!TEN) { + Instk.pause (true); + } + + if (ELE) { + VOL11 = 50/count+constrain(map(VA11, TH11, TH11+5000, 0, 65), 0, 65); + Instl.play(true); + Instl.setVolume(VOL11); + // Serial.print("Tone11 active at vol:"); + // Serial.println(VOL11); + // Serial.println(VA11); + } + + if (!ELE) { + Instl.pause (true); + } + + if (TWE) { + VOL12 = 50/count+constrain(map(VA12, TH12, TH12+5000, 0, 65), 0, 65); + Instm.play(true); + Instm.setVolume(VOL12); + // Serial.print("Tone12 active at vol:"); + // Serial.println(VOL12); + // Serial.println(VA12); + + } + + if (!TWE) { + Instm.pause (true); + } + + if (THT) { + VOL13 = 50/count+constrain(map(VA13, TH13, TH13+5000, 0, 65), 0, 65); + Instn.play(true); + Instn.setVolume(VOL13); + // Serial.print("Tone13 active at vol:"); + // Serial.println(VOL13); + // Serial.println(VA13); + } + + if (!THT) { + Instn.pause (true); + } + + if (FOT) { + VOL14 = 50/count+constrain(map(VA14, TH14, TH14+5000, 0, 65), 0, 65); + Insto.play(true); + Insto.setVolume(VOL14); + // Serial.print("Tone14 active at vol:"); + // Serial.println(VOL14); + // Serial.println(VA14); + } + + if (!FOT) { + Insto.pause (true); + } + + + if (FIT) { + VOL15 = 50/count+constrain(map(VA15, TH15, TH15+5000, 0, 65), 0, 65); + Instp.play(true); + Instp.setVolume(VOL15); + // Serial.print("Tone15 active at vol:"); + // Serial.println(VOL15); + // Serial.println(VA15); + } + + if (!FIT) { + Instp.pause (true); + } + Serial.print("Intruments playing = "); + Serial.println(count); + } + +