int controlChange = 176; // Control-Change auf MIDI Kanal 1
int potiWert[16];
int controllerWert[16];
int controllerWertAlt[16];
int potiPrint = 0;
int i = 0;
int bit1 = 0;
int bit2 = 0;
int bit3 = 0;
int bit4 = 0;
void setup() {
//Select-Pins 4051s
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool dataChanged = false; // Flag to track if any data has changed
for (i = 0; i <= 16; i++) {
bit1 = bitRead(i, 0);
bit2 = bitRead(i, 1);
bit3 = bitRead(i, 2);
bit4 = bitRead(i, 3);
digitalWrite(2, bit1);
digitalWrite(3, bit2);
digitalWrite(4, bit3);
digitalWrite(5, bit3);
if (potisAbfragen(i, A0)) { // If potisAbfragen returns true, data has changed
dataChanged = true;
}
}
if (dataChanged) {
//Serial.println("Poti: " + i + " - " + "Wert Changed:" + controllerWert);
//sendeMIDI(176, (20+zaehler), controllerWert[zaehler]);
Serial.println("data changed" + i );
delay(2000);
}
delay(2200);
}
bool potisAbfragen(int zaehler, int analogPin) {
potiWert[zaehler] = analogRead(A0);
controllerWert[zaehler] = map(potiWert[zaehler], 0, 1023, 0, 127);
if (controllerWert[zaehler] != controllerWertAlt[zaehler]) {
//Serial.println(controllerWert[zaehler]);
//Serial.println(potiWert[zaehler]);
controllerWertAlt[zaehler] = controllerWert[zaehler];
}
}
void sendeMIDI(int statusByte, int dataByte1, int dataByte2) {
Serial.write(statusByte);
Serial.write(dataByte1);
Serial.write(dataByte2);
}