Bonjour à tous, j'utilise un multiplexeur de références CD4051B possédant 8 entrées de données et 3 entrées d'adressage afin de lire les valeurs de 3 potentiomètres. Le programme que j'ai fait tourne mais quand j'affiche la liaison série et que je modifie la valeur d'un potentiomètre cela influence les autres valeurs et je ne comprend pas la raison. Merci de votre aide !
Voici le code
int MUX_A = 5;
int MUX_B = 4;
int MUX_C = 3;
int MUX_INH = 6;
int Value = 0;
void setup() {
Serial.begin(9600);
pinMode(MUX_A,OUTPUT);
pinMode(MUX_B,OUTPUT);
pinMode(MUX_C,OUTPUT);
digitalWrite(MUX_INH, LOW);
pinMode(A4, INPUT);
}
void loop() {
for (int i = 0; i< 3 ; i++) {
MUX_ouvrir_canal(i);
Value = analogRead(A4);
Serial.print(Value);
Serial.print(",");
}
Serial.println(1024);
}
void MUX_ouvrir_canal(byte adresse) {
//Serial.print("ouvrir canal "); Serial.println(adresse);
switch(adresse) {
case 0 : digitalWrite(MUX_A, LOW) ;digitalWrite(MUX_B, LOW) ;digitalWrite(MUX_C, LOW); break;
case 1 : digitalWrite(MUX_A, LOW);digitalWrite(MUX_B, LOW) ;digitalWrite(MUX_C, HIGH); break;
case 2 : digitalWrite(MUX_A, LOW) ;digitalWrite(MUX_B, HIGH);digitalWrite(MUX_C, LOW); break;
case 3 : digitalWrite(MUX_A, LOW);digitalWrite(MUX_B, HIGH);digitalWrite(MUX_C, HIGH); break;
case 4 : digitalWrite(MUX_A, HIGH) ;digitalWrite(MUX_B, LOW) ;digitalWrite(MUX_C, LOW); break;
case 5 : digitalWrite(MUX_A, HIGH);digitalWrite(MUX_B, LOW) ;digitalWrite(MUX_C, HIGH); break;
case 6 : digitalWrite(MUX_A, HIGH) ;digitalWrite(MUX_B, HIGH);digitalWrite(MUX_C, LOW); break;
case 7 : digitalWrite(MUX_A, HIGH);digitalWrite(MUX_B, HIGH);digitalWrite(MUX_C, HIGH); break;
}
delay(10);
}