const int NUM_SLIDERS = 5;
const int analogInputs[NUM_SLIDERS] = {A3, A4, A5, A6, A7};
const int LEDAnalogInput[NUM_SLIDERS] = {7, 8, 9, 10, 11};
const int LEDMute[NUM_SLIDERS] = {12, 13, A0, A1, A2};
const int NUM_BUTTONS = 5;
const int buttonInputs[NUM_BUTTONS] = {2, 3, 4, 5, 6};
int analogSliderValues[NUM_SLIDERS];
bool digitalButtonValues[NUM_BUTTONS];
bool lastDigitalButtonValues[NUM_BUTTONS];
bool muteState[NUM_BUTTONS] = {LOW, LOW, LOW, LOW, LOW}; // Set the default state of all channels to unmuted. Change to HIGH if you want a channel muted by default.
void setup() {
for (int i = 0; i < NUM_SLIDERS; i++) {
pinMode(analogInputs[i], INPUT);
}
for (int i = 0; i < NUM_BUTTONS; i++) {
pinMode(buttonInputs[i], INPUT_PULLUP);
}
Serial.begin(9600);
}
void loop() {
updateSliderValues();
updateButtonValues(); // Update button values to check what buttons are pressed and change muteState accordingly.
muteSliderValues(); // Actually mute the appropriate channel(s).
sendSliderValues();
//printSliderValues();
//printButtonValues(); // To check what the buttons are outputting.
//printLEDValues();
delay(10);
}
void muteSliderValues() {
for (int i = 0; i < NUM_BUTTONS; i++) {
if ((int)muteState[i] == 1) {
analogSliderValues[i] = 0; // Overwrites the value of the muted pot to be 0.
analogWrite(LEDMute[i], 0);
} else {
analogWrite(LEDMute[i], 255);
}
}
}
void updateSliderValues() {
for (int i = 0; i < NUM_SLIDERS; i++) {
analogSliderValues[i] = analogRead(analogInputs[i]);
}
}
void updateButtonValues() {
for (int i = 0; i < NUM_BUTTONS; i++) {
digitalButtonValues[i] = digitalRead(buttonInputs[i]);
if (digitalButtonValues[i] != lastDigitalButtonValues[i]) {
if (digitalButtonValues[i] == LOW) {
muteState[i] = !muteState[i];
}
lastDigitalButtonValues[i] = digitalButtonValues[i];
}
}
}
void sendSliderValues() {
String builtString = String("");
for (int i = 0; i < NUM_SLIDERS; i++) {
builtString += String((int)analogSliderValues[i]);
//conver it to correct output range, max value is 255
int outputValue = map(analogSliderValues[i], 0, 1023, 0, 255);
analogWrite(LEDAnalogInput[i], outputValue);
if (i < NUM_SLIDERS - 1) {
builtString += String("|");
}
}
Serial.println(builtString);
}
// Functions for debugging.
void printSliderValues() {
for (int i = 0; i < NUM_SLIDERS; i++) {
String printedString = String("Slider #") + String(i + 1) + String(": ") + String(analogSliderValues[i]) + String(" mV");
Serial.write(printedString.c_str());
if (i < NUM_SLIDERS - 1) {
Serial.write(" | ");
} else {
Serial.write("\n");
}
}
}
void printLEDValues() {
for (int i = 0; i < NUM_SLIDERS; i++) {
String printedString = String("LED #") + String(i + 1) + String(": ") + String(analogRead(LEDAnalogInput[i])) + String("-")+ String(map(analogSliderValues[i], 0, 1023, 0, 255));
Serial.write(printedString.c_str());
if (i < NUM_SLIDERS - 1) {
Serial.write(" | ");
} else {
Serial.write("\n");
}
}
}
void printButtonValues() {
for (int i = 0; i < NUM_BUTTONS; i++) {
String printedString = String("Button #") + String(i + 1) + String(": ") + String(digitalButtonValues[i]);
Serial.write(printedString.c_str());
if (i < NUM_BUTTONS - 1) {
Serial.write(" | ");
} else {
Serial.write("\n");
}
}
}