All working on a single device
[miniband.git] / release / instruments2 / instruments2.ino
1 const int NUMBER_OF_MARACAS = 2;
2 const int MARACAS_PINS[] = {6, 7};
3 const int MARACAS_DELAY = 5000;
4
5 const int NUMBER_OF_DRUMS= 4;
6 const int DRUM_PINS[] = {8, 9, 10, 11};
7 const int DRUM_DELAY = 2500;
8
9 int maracas_states[] = {-1,-1};
10 int maracas_delays[] = {0, 0};
11
12 int drum_delays[] = {0, 0, 0, 0};
13
14 void setup() {
15 for (int i = 0; i < NUMBER_OF_MARACAS; i++) {
16 pinMode(MARACAS_PINS[i], INPUT);
17 }
18 for (int i = 0; i < NUMBER_OF_DRUMS; i++) {
19 pinMode(DRUM_PINS[i], INPUT);
20 }
21 Serial.begin(9600);
22 }
23
24 void loop() {
25 maracas();
26 drums();
27 update_delays();
28 }
29
30
31 void maracas() {
32 for (int i = 0; i < NUMBER_OF_MARACAS; i++) {
33 int newState = digitalRead(MARACAS_PINS[i]);
34 if (newState != maracas_states[i] && maracas_delays[i] < 1) {
35 Serial.print("maracas,");
36 Serial.print(i);
37 Serial.println();
38 maracas_states[i] = newState;
39 maracas_delays[i] = MARACAS_DELAY;
40 }
41 }
42 }
43
44 void drums() {
45 for (int i = 0; i < NUMBER_OF_DRUMS; i++) {
46 if (digitalRead(DRUM_PINS[i]) == HIGH && drum_delays[i] < 1) {
47 Serial.print("drum,");
48 Serial.print(i);
49 Serial.println();
50 drum_delays[i] = DRUM_DELAY;
51 }
52 }
53 }
54
55 void update_delays() {
56 for (int i = 0; i < NUMBER_OF_MARACAS; i++) {
57 if (maracas_delays[i] > 0) {
58 maracas_delays[i] -= 1;
59 }
60 }
61 for (int i = 0; i < NUMBER_OF_DRUMS; i++) {
62 if (drum_delays[i] > 0) {
63 drum_delays[i] -= 1;
64 }
65 }
66 }