Всем добра.
Помогите разобраться с кодом.
Необходимо опрашивать каналы не перебором, а иметь возможность самому прописать какой канал читать и в каком порядке.
Значение канала необходимо затолкать в отдельную переменную.
//Mux control pins
int s0 = 18;
int s1 = 17;
int s2 = 16;
//Mux in "Z" pin
int Z_pin1 = 36;
int Z_pin2 = 39;
int Z_pin3 = 34;
int C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24; // Сюда необходимо поместить значения с каждого канала, возможно перменные необходимо вынести в цикл.
void setup() {
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
digitalWrite(s0, LOW);
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
Serial.begin(9600);
}
void loop() {
//Loop through and read all 8 values
for (int i = 0; i < 8; i ++) {
Serial.print("Mux-1 = ");
Serial.print(i);
Serial.print("is : ");
Serial.println(readMux(i, Z_pin1));
delay(100);
}
for (int i = 0; i < 8; i ++) {
Serial.print("Mux-2 = ");
Serial.print(i);
Serial.print("is : ");
Serial.println(readMux(i, Z_pin2));
delay(100);
}
for (int i = 0; i < 8; i ++) {
Serial.print("Mux-3 = ");
Serial.print(i);
Serial.print("is : ");
Serial.println(readMux(i, Z_pin3));
delay(100);
}
}
float readMux(int channel, int Z_pin) {
int controlPin[] = {s0, s1, s2};
int muxChannel[8][3] = {
{0, 0, 0}, //channel 0
{1, 0, 0}, //channel 1
{0, 1, 0}, //channel 2
{1, 1, 0}, //channel 3
{0, 0, 1}, //channel 4
{1, 0, 1}, //channel 5
{0, 1, 1}, //channel 6
{1, 1, 1}, //channel 7
};
//loop through the 3 sig
for (int i = 0; i < 3; i ++) {
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
//read the value at the Z pin
int val = analogRead(Z_pin);
//return the value
float voltage = (val * 5) / 1024.0;
return voltage;
}