#include // Define multiplexer input pins #define S0 5 #define S1 6 #define S2 8 #define S3 7 #define SENSOR_INPUT 4 #define SENSOR_COUNT 16 int rawVals[SENSOR_COUNT]; void measureRawValues() { for (uint8_t i = 0; i < SENSOR_COUNT; i++) { digitalWrite(S0, (i & 0b1) ^ 0b1);; digitalWrite(S1, (i >> 1 & 0b1) ^ 0b1);; digitalWrite(S2, (i >> 2 & 0b1) ^ 0b1);; digitalWrite(S3, i >> 3 & 0b1); delay(1); rawVals[i] = analogRead(SENSOR_INPUT); } } void printRawValues() { for (uint8_t i = 0; i < SENSOR_COUNT; i++) { Serial.print(rawVals[i]); if (i < SENSOR_COUNT - 1) Serial.print(" "); } Serial.println(); } void setup() { Serial.begin(115200); pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); digitalWrite(S0, LOW); digitalWrite(S1, LOW); digitalWrite(S2, LOW); digitalWrite(S3, LOW); } void loop() { measureRawValues(); printRawValues(); delay(1); }