#define analogPin A0
const uint8_t controlPins[] = { 2, 3, 4, 5 };
int threshold = 1;
float valueold[16]; //Integerarray
float readMux(int channel)
{
for(int i = 0; i < 4; i ++)
{
digitalWrite(controlPins[i], channel >> i & 1);
}
delay(10);
return analogRead(analogPin);
}
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++) {
// Read current channel value
int current_value = readMux(i);
// Calculate absolute difference from previous value
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("Channel ");
Serial.print(i);
Serial.print(": ");
Serial.println(current_value);
//Serial.print("Change: ");
//Serial.println(difference);
}
}
}