diff --git a/basics/snare-ext-trigger/snare-ext-trigger.ino b/basics/snare-ext-trigger/snare-ext-trigger.ino new file mode 100644 index 0000000..f33450b --- /dev/null +++ b/basics/snare-ext-trigger/snare-ext-trigger.ino @@ -0,0 +1,49 @@ +/* + * + * Snare - External trigger + * + */ +long randNumber; //variable to store random number +int pwmPin = 11; //define output pin, Meergranen output pin is 11 +bool triggered; // logic: trigered, yes or no + +void setup() { + // if analog input pin 5 is unconnected, random analog + // noise will cause the call to randomSeed() to generate + // different seed numbers each time the sketch runs. + // randomSeed() will then shuffle the random function. + randomSeed(analogRead(5)); + Serial.begin(9600); + pinMode(pwmPin,OUTPUT); //set pwmPin to output mode (otherwise the built-in pulldown resistor sets it as input, aka you wont hear anything) +} + +void loop() { + + int input3 = digitalRead(A3); // read analog pin 3 + + if(input3 && !triggered) { //if there is a reading on input3 and the bool condition triggered is not true do + + + for(int i=0;i<25;i++){ + randNumber = random(10, 100); //generate random number between 10 and 100 + digitalWrite(pwmPin, LOW); //set output pin to LOW (0v) + delayMicroseconds(randNumber/10*(i/4)*(analogRead(A1)/10));//wait for randomNumber (10-100 Mircroseconds (0.00001-0.0001 seconds)) + digitalWrite(pwmPin, HIGH); //set output pin to HIGH (5v) + delayMicroseconds(randNumber/10*(i/4)*(analogRead(A1)/10)); //wait for randomNumber (10-100 Mircroseconds (0.00001-0.0001 seconds)) + } + for(int i=0;i<200;i++){ + randNumber = random(10, 100); //generate random number between 10 and 100 + digitalWrite(pwmPin, LOW); //set output pin to LOW (0v) + delayMicroseconds(randNumber);//wait for randomNumber (10-100 Mircroseconds (0.00001-0.0001 seconds)) + digitalWrite(pwmPin, HIGH); //set output pin to HIGH (5v) + delayMicroseconds(randNumber); //wait for randomNumber (10-100 Mircroseconds (0.00001-0.0001 seconds)) + } + + triggered = true; + } + else if(!input3 && triggered) { //if there is no reading on input3 and condition triggered is true (aka sound is playing), set triggered to false, aka stop playing + // STOP WHEN NO TRIGGER IS PRESENT (or do something else ;) + triggered = false; + } + +}