#include <Toggle.h>
const byte ldrPins[] = {3, 4, 5};
const byte nbLdr = sizeof ldrPins / sizeof * ldrPins;
const byte ldrLowPitches[nbLdr] = {10, 15, 20};
const byte ldrHighPitches[nbLdr] = {100, 150, 200};
bool lastLdrState[nbLdr];
Toggle zeroSwicth;
Toggle plusUnSwitch;
void noteOn(byte pitch) {
Serial.print("ON - "); Serial.println(pitch);
}
void noteOff(byte pitch) {
Serial.print("OFF - "); Serial.println(pitch);
}
void setup() {
zeroSwicth.begin(A0);
plusUnSwitch.begin(A1);
Serial.begin(115200);
for (byte i = 0; i < nbLdr; i++) {
pinMode(ldrPins[i], INPUT_PULLUP);
lastLdrState[i] = (digitalRead(ldrPins[i]) == LOW);
}
}
void loop() {
zeroSwicth.poll();
plusUnSwitch.poll();
if (zeroSwicth.onPress()) Serial.println("Low Pitch");
if (plusUnSwitch.onPress()) Serial.println("High Pitch");
for (byte i = 0; i < nbLdr; i++) {
byte ldrState = (digitalRead(ldrPins[i]) == LOW);
if (lastLdrState[i] != ldrState) {
lastLdrState[i] = ldrState;
if (ldrState) {
noteOn(zeroSwicth.isPressed() ? ldrLowPitches[i] : ldrHighPitches[i]);
} else {
noteOff(zeroSwicth.isPressed() ? ldrLowPitches[i] : ldrHighPitches[i]);
}
}
}
}
LOW PITCH
HIGH PITCH