55 lines
1.0 KiB
C#
55 lines
1.0 KiB
C#
#include <Arduino.h>
|
||
|
||
// Define multiplexer input pins
|
||
#define S0 5
|
||
#define S1 6
|
||
#define S2 7
|
||
#define S3 8
|
||
#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);
|
||
digitalWrite(S1, i >> 1 & 0b1);
|
||
digitalWrite(S2, i >> 2 & 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);
|
||
analogReadResolution(12);
|
||
analogSetAttenuation(ADC_11db);; // ~0.0–1.5V range
|
||
|
||
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);
|
||
}
|