#define analogPin0 A0
#define analogPin1 A1
const uint8_t controlPins[] = { 2, 3, 4, 5 };
const uint8_t controlPins1[] = { 6, 7, 8, 9 };
int threshold = 1;
float valueold[16];
float valueold1[16];//Integerarray
float readMux(int channel)
{
for(int i = 0; i < 4; i ++)
{
digitalWrite(controlPins[i], channel >> i & 1);
}
delay(10);
return analogRead(analogPin0);
}
float readMux1(int channel1)
{
for(int i = 0; i < 4; i ++)
{
digitalWrite(controlPins1[i], channel1 >> i & 1);
}
delay(5);
return analogRead(analogPin1);
}
void setup()
{
Serial.begin(9600);
for (int i = 0; i < 4; ++i)
{
pinMode(controlPins[i], OUTPUT);
}
}
void loop(){
for (int i = 0; i < 16; i++) {
int current_value = readMux(i); //read
int difference = abs(current_value - valueold[i]);
// Detect changes both upwards and downwards
if (difference >= threshold) {
valueold[i] = current_value; // Update reference value
Serial.print("MUX1 Channel ");
Serial.print(i);
Serial.print(": ");
Serial.println(current_value);
//Serial.print("Change: ");
//Serial.println(difference);
}
int current_value1 = readMux1(i);
int difference1 = abs(current_value1 - valueold1[i]);
if (difference1 >= threshold) {
valueold1[i] = current_value1;
Serial.print("MUX2 Channel ");
Serial.print(i);
Serial.print(": ");
Serial.println(current_value1);
}
}
}