puissance de 10 avec un arduino ?

Bonjour a tous,

J'ai un problème de compréhension pour afficher l'affichage de toutes mes 10 leds (allumés,éteints) ce qui fait un total si je ne me trompe pas de 10 000 000 000 possibilités(si c'est faisable...)

J'utilise mon code pour afficher toutes les leds :

const int CODE[10]={1,2,3,4,5,6,7,8,9,10};

void setup()   { // debut de la fonction setup()



// instructions à exécuter au démarrage
for (int i=0; i<=9; i++) { 

  pinMode(CODE[i], OUTPUT); 

}
 
 
} // fin de la fonction setup()

void loop(){ // debut de la fonction loop()

for (int i=0; i<=9; i++) { // boucle de défilement des 10 broches

  digitalWrite(CODE[i],LOW);
  
}

delay (500); // pause fixant la vitesse de defilement

for (int i=0; i<=9; i++) { // boucle de défilement des 10 broches

  
  digitalWrite(CODE[i],HIGH);
}

delay(500); // pause fixant la vitesse de defilement

} // fin de la fonction setup()

Avez vous une idée ?

J'ai penser a faire comme ca 8 LEDs en Compteur binaire - Mon Club Elec ou Jeux de lumières sur 8 LEDs - Mon Club Elec

Merci :slight_smile:

Bonjour,

Mettre le code en balise code (# dans l'éditeur) sinon les crochets sur les tableaux (par exemple) ne sont pas affiché !

Ton but est de faire quoi ?
Un compteur binaire sur 10 bits ?
Un chenillard (1 led allumé / 9 éteinte) ?

Ps: 2^10 = 1024 possibilités :wink:

Deux codes d'exemple (fait à l'instant) :

Compteur binaire sur 10 bits :

/* Déclaration de broches des led */
const byte pin_led[10] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};

/* setup() */
void setup() {

  /* Mise en sortie et à LOW de toute les broches des led */
  for(byte i = 0; i < 10; ++i) {
    pinMode(pin_led[i], OUTPUT);
    digitalWrite(pin_led[i], LOW);
  }
}

/* loop() */
void loop() {

  /* Variable static servant de compteur */
  static unsigned int compteur = 0;
  
  /* Pour chaque bits (= à une led) du compteur */
  for(byte i = 0; i < 10; ++i) {
    if(compteur & (1 << i)) // Si le bit est égale à "1" logique
      digitalWrite(pin_led[i], HIGH); // Led allumé
	else // Sinon
      digitalWrite(pin_led[i], LOW); // Led éteinte
  }
  
  /* Incrémentation du compteur */
  if(++compteur & 1024)
    compteur = 0; // Si le compteur atteint la limite de 1024 on repart de zéro
	
  /* Delai de 1/2 seconde */
  delay(500);
}

Effet de rotation sur 10 bits :

/* Déclaration de broches des led */
const byte pin_led[10] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};

/* setup() */
void setup() {

  /* Mise en sortie et à LOW de toute les broches des led */
  for(byte i = 0; i < 10; ++i) {
    pinMode(pin_led[i], OUTPUT);
    digitalWrite(pin_led[i], LOW);
  }
}

/* loop() */
void loop() {

  /* Variable static servant de spinner */
  static unsigned int spinner = 1;
  
  /* Pour chaque bits (= à une led) du spinner */
  for(byte i = 0; i < 10; ++i) {
    if(spinner & (1 << i)) // Si le bit est égale à "1" logique
      digitalWrite(pin_led[i], HIGH); // Led allumé
	else // Sinon
      digitalWrite(pin_led[i], LOW); // Led éteinte
  }
  
  /* Rotation du spinner */
  spinner <<= 1;
  if(spinner & 1024)
    spinner = 1; // Si le spinner atteint la limite de 1024 on repart de zéro
	
  /* Delai de 1 seconde */
  delay(1000);
}

Merci de ta reponse Skywodd,

Oui ca ressemble plus a un compteur binaire je test ca :wink:

J'ai sauté un paragraphe sur son fonctionnement , ca m'apprendra....

Merci

En faite je dispose de :

3 unitées qui gere du technique avec une sortie relais 1A.
1 sonde qui permet de savoir s'il y a assez d'eau ou pas(tous ou rien).

Le problème c'est qu'avec 1 sonde je peut dialoguer avec une seule unité.

Matériel que j'ai récupérer et qui sert dans le traitement d'eau...

En demontant la sonde j'ai vue qu'il y a 10 dips swiths qui sert de codage mais pas dans les unités (Je pense qu'elle sont codées via logiciel)

D'ou un essai avec des leds pour comprendre le principe que j'applique en théorie sur la sonde avec quelques bidouilles :sweat_smile:

crashnix:
En demontant la sonde j'ai vue qu'il y a 10 dips swiths qui sert de codage mais pas dans les unités (Je pense qu'elle sont codées via logiciel)

Dans ton logiciel tu n'as pas une option du genre :
Position 1 = capteur n°xxxxx
Position 2 = capteur n°yyyyyy
...

Si c'était le cas tu n'aurais besoin que de controler 2 dips switch pour controler tes 3 actionneurs (2^2 = 4 possibilités).

crashnix:
D'ou un essai avec des leds pour comprendre le principe que j'applique en théorie sur la sonde avec quelques bidouilles :sweat_smile:

Bien faire attention :
dip switch = interrupteurs
Si le systéme travaille en logique TTL pas de probléme, mais sinon il faudra prévoir d'utiliser des transistors pour remplacer les dip switch (exemple BC547).

C'est bien des dips switchs avec masse commune.
Malheureusement je ne possede pas de logiciel c'est du materiel de recup