//Mux control pins
int s0 = 2;
int s1 = 3;
int s2 = 4;
int s3 = 5;
int controlChange = 176; // Control-Change auf MIDI Kanal 1
int potiWert[16];
int controllerWert[16];
int controllerWertAlt[16];
int potiPrint = 0;
int i = 0;
// faders
int fader0 = 0;
int fader0old = 0;
int fader1 = 0;
int fader1old = 0;
int fader2 = 0;
int fader2old = 0;
int fader3 = 0;
int fader3old = 0;
int fader4 = 0;
int fader4old = 0;
int fader5 = 0;
int fader5old = 0;
bool test = false;
bool test2 = false;
//Mux in "SIG" pin
int SIG_pin = 0;
int threshold = 0; // Schwellenwert für die Änderungsdetektion
void setup(){
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
digitalWrite(s0, LOW);
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
Serial.begin(9600);
}
void loop() {
// ... other code ...
for (int i = 0; i < 16; i++) {
switch (i) {
case 0:
int currentFaderValue = readMux(i);
if (abs(currentFaderValue - fader0old) > threshold) {
fader0old = currentFaderValue;
Serial.print(i);
//Serial.println("CASE0");
// ... handle fader1 change ...
}
case 1:
//Serial.print(i);
//Serial.println(currentFaderValue);
//Serial.println(fader1old);
currentFaderValue = readMux(i);
if (abs(currentFaderValue - fader1old) > threshold) {
fader1old = currentFaderValue;
Serial.print(i);
//Serial.println("CASE1");
// ... handle fader2 change ...
}
// ... add similar cases for other faders ...
case 2:
currentFaderValue = readMux(i);
if (abs(currentFaderValue - fader2old) > threshold) {
fader2old = currentFaderValue;
//Serial.println("CASE2");
// ... handle fader3 change ...
}
break;
// ... add similar cases for other faders ...
}
}
}
int readMux(int channel){
int controlPin[] = {s0, s1, s2, s3};
int muxChannel[16][4]={
{0,0,0,0}, //channel 0;
{1,0,0,0}, //channel 1;
{0,1,0,0}, //channel 2;
{1,1,0,0}, //channel 3
{0,0,1,0}, //channel 4
{1,0,1,0}, //channel 5
{0,1,1,0}, //channel 6
{1,1,1,0}, //channel 7
{0,0,0,1}, //channel 8
{1,0,0,1}, //channel 9
{0,1,0,1}, //channel 10
{1,1,0,1}, //channel 11
{0,0,1,1}, //channel 12
{1,0,1,1}, //channel 13
{0,1,1,1}, //channel 14
{1,1,1,1} //channel 15
};
//loop through the 4 sig
for(int i = 0; i < 4; i ++){
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
//read the value at the SIG pin
int val = analogRead(0);
Serial.print(val, HEX);
//return the value
//return val;
}