X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=release%2Finstruments%2Finstruments.ino;fp=release%2Finstruments%2Finstruments.ino;h=61442ffe33e9fac3722407469a5e068ce9211d08;hb=aa13a2e7728201fb72f4684dd25c1cab07c91b3e;hp=0000000000000000000000000000000000000000;hpb=427172a5ba795f1dad6694de23eaa38a560944c2;p=miniband.git diff --git a/release/instruments/instruments.ino b/release/instruments/instruments.ino new file mode 100644 index 0000000..61442ff --- /dev/null +++ b/release/instruments/instruments.ino @@ -0,0 +1,86 @@ +const int NUMBER_OF_MARACAS = 2; +const int MARACAS_PINS[] = {6, 7}; +const int MARACAS_DELAY = 5000; + +const int NUMBER_OF_DRUMS= 4; +const int DRUM_PINS[] = {8, 9, 10, 11}; +const int DRUM_DELAY = 2500; + +const int GUITAR_THRESHOLD = 20; +const int GUITAR_PIN = A0; +const int GUITAR_DELAY = 5000; + +int maracas_states[] = {-1,-1}; +int maracas_delays[] = {0, 0}; + +int drum_delays[] = {0, 0, 0, 0}; + +int guitar_delay = 0; + +void setup() { + for (int i = 0; i < NUMBER_OF_MARACAS; i++) { + pinMode(MARACAS_PINS[i], INPUT); + } + for (int i = 0; i < NUMBER_OF_DRUMS; i++) { + pinMode(DRUM_PINS[i], INPUT); + } + Serial.begin(9600); +} + +void loop() { + maracas(); + drums(); + guitar(); + update_delays(); +} + + +void maracas() { + for (int i = 0; i < NUMBER_OF_MARACAS; i++) { + int newState = digitalRead(MARACAS_PINS[i]); + if (newState != maracas_states[i] && maracas_delays[i] < 1) { + Serial.print("maracas,"); + Serial.print(i); + Serial.println(); + maracas_states[i] = newState; + maracas_delays[i] = MARACAS_DELAY; + } + } +} + +void drums() { + for (int i = 0; i < NUMBER_OF_DRUMS; i++) { + if (digitalRead(DRUM_PINS[i]) == HIGH && drum_delays[i] < 1) { + Serial.print("drum,"); + Serial.print(i); + Serial.println(); + drum_delays[i] = DRUM_DELAY; + } + } +} + +void guitar() { + int pitch = analogRead(GUITAR_PIN); + if (pitch >= GUITAR_THRESHOLD && guitar_delay < 1) { + Serial.print("guitar,"); + Serial.print(pitch); + Serial.println(); + guitar_delay = GUITAR_DELAY; + } +} + +void update_delays() { + for (int i = 0; i < NUMBER_OF_MARACAS; i++) { + if (maracas_delays[i] > 0) { + maracas_delays[i] -= 1; + } + } + for (int i = 0; i < NUMBER_OF_DRUMS; i++) { + if (drum_delays[i] > 0) { + drum_delays[i] -= 1; + } + } + if (guitar_delay > 0) { + guitar_delay -= 1; + } +}