Problème de code

Bonjour,

Je voudrais savoir si vous pouvez m’aider a corriger mon code? je ne comprend pas l’erreur.

//broche d’adresse ENABLE
const byte PIN_ENABLE_1 = 10;
const byte PIN_ENABLE_2 = 11;
// Broches d’adresse
int ADDR_A;
int ADDR_B;
int ADDR_C;
int ADDR_D;
const byte PIN_ADDR_A = ADDR_A;
const byte PIN_ADDR_B = ADDR_B;
const byte PIN_ADDR_C = ADDR_C;
const byte PIN_ADDR_D = ADDR_D;

void setup()
{
pinMode(PIN_ENABLE_1, OUTPUT);
pinMode(PIN_ENABLE_2, OUTPUT);
digitalWrite(PIN_ENABLE_1, HIGH);
digitalWrite(PIN_ENABLE_2, HIGH);

}

void loop()
{
for (int i=0; i < 2; i++){
switch(i){
case 0 :
digitalWrite(PIN_ENABLE_1, LOW);

// definir les adresses
ADDR_A = 2;
ADDR_B = 3;
ADDR_C = 4;
ADDR_D = 5;
// déclaration du tableau pour récuperer les valeurs
int valeur_MUX[15];
// lancer le programme MUX avec ces sortie récupérer le tableau de 16 données
byte valeur_MUX = MUX (ADDR_A, ADDR_B, ADDR_C, ADDR_D);
break;
case 1 :
digitalWrite(PIN_ENABLE_2, LOW);

// definir les adresses
ADDR_A = 4;
ADDR_B = 5;
ADDR_C = 6;
ADDR_D = 7;
// déclaration du tableau pour récuperer les valeurs
int valeur_MUX[15];
// lancer le programme MUX avec ces sortie récupérer le tableau de 16 données
byte valeur_MUX = MUX (ADDR_A, ADDR_B, ADDR_C, ADDR_D);
break;
}}}


//////////////////////////////////FONCTIONS//////////////////////////////


// fonction qui intialise le MUX
int MUX (int A, int B, int C, int D){
// type d’entrée/sortie et mettre les pins à l’état bas
int val[15];
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);

for(byte i = 0; i < 16; i++){
val*=readAnalogMux(i);*

  • }*
  • return val;*
    }
    ***********************************************************************************************************
    // Fonction de lecture pour le multiplexeur
    int readAnalogMux(byte channel) {
  • // On selectionne la voie (normalement permet de faire varier le signal sur les 4bits)*
  • digitalWrite(PIN_ADDR_A, bitRead(channel, 0));*
  • digitalWrite(PIN_ADDR_B, bitRead(channel, 1));*
  • digitalWrite(PIN_ADDR_C, bitRead(channel, 2));*
  • digitalWrite(PIN_ADDR_D, bitRead(channel, 3));*
  • return analogRead(PIN_SIG);*
    }
    Merci d’avance.

1- code entre balise code
2- quelle erreur?

Déjà : ça c'est valide ? ? ?

int ADDR_A;
const byte PIN_ADDR_A = ADDR_A;
int ADDR_A;
int ADDR_B;
int ADDR_C;
int ADDR_D;
const byte PIN_ADDR_A = ADDR_A;
const byte PIN_ADDR_B = ADDR_B;
const byte PIN_ADDR_C = ADDR_C;
const byte PIN_ADDR_D = ADDR_D;

Toutes ces variables sont égales à zéro au démarrage du programme.

@+

C'est normal, je veux réaliser un programme qui contrôle plusieurs multiplexeurs de 4bits.
En fonction du choix du multiplexeur les adresses des 4bits sont différentes. Ce que je cherches à réaliser c'est en fonction du multiplexeur que je choisi, je fais correspondre les valeurs des adresses et je fait varier les valeurs d'entrées.

J'espère être assez claire dans mes explications.

J'espère être assez claire dans mes explications.

Pas vraiment

Et de nouveau le code n'est pas entre les balises.....

TikTak:
C'est normal, je veux réaliser un programme qui contrôle plusieurs multiplexeurs de 4bits.
En fonction du choix du multiplexeur les adresses des 4bits sont différentes. Ce que je cherches à réaliser c'est en fonction du multiplexeur que je choisi, je fais correspondre les valeurs des adresses et je fait varier les valeurs d'entrées.

J'espère être assez claire dans mes explications.

N'empêche que :

  digitalWrite(PIN_ADDR_A, bitRead(channel, 0));
  digitalWrite(PIN_ADDR_B, bitRead(channel, 1));
  digitalWrite(PIN_ADDR_C, bitRead(channel, 2));
  digitalWrite(PIN_ADDR_D, bitRead(channel, 3));

est équivalent à :

  digitalWrite(0, bitRead(channel, 0));
  digitalWrite(0, bitRead(channel, 1));
  digitalWrite(0, bitRead(channel, 2));
  digitalWrite(0, bitRead(channel, 3));

@+

Oui, ça ne doit pas être le but recherché, j'imagine que les lettres A, B, C et D désignent 4 pins différentes.