Incrementer bits d'adresse démultiplexeur

Bonjour !

Je dispose d'une carte arduino mega 2560, je souhaiterais envoyer un signal sur 16 sorties cablées en sortie d'un démultiplexeur que je pilote depuis ma carte. Les 4 bits d'adresse A B C D sont respectivement branchés sur les ports 30 31 32 33 ( A étant LSB ). Je cherche un moyen simple d'incrémenter ces bits de manière à envoyer le signal sur l'adresse 0, puis l'adresse 1 etc jusqu'à 15. Je vous remercie d'avance !

slt tu déclare un Octet ex:

byte adresse=0;

quand tu veux l'incrémenter tu fait

adresse++;
if (adresse>15) adresse=0;

puis tu affecte les bits de l'octet aux sorties désirées de 30 à 33

 for (int i=0; i < 4; i++) {digitalWrite(i+30,bitRead(adresse,i)); }

j'espère que c'est ce que tu cherche à faire, il y à peut être plus simple il faut voir

C'est exactement ce que je cherche à faire merci beaucoup ! Néanmoins je n'arrive pas à faire fonctionner mon schéma. En réalité le cablage est (très) légèrement plus compliqué. J'ai branché sur les 16 sorties de mon démultiplexeur 16 entrées d'un multiplexeur. Pour l'instant cela ne sert à rien biensur mais je serais plus tard amené à brancher un appareil entre le démux et le mux. J'ai donc essayé de faire un programme afin de tester ce que tu m'as dis pour voir si cela fonctionnait. J'ai branché une LED sur la sortie du multiplexeur. Le programme suivant devrait en théorie éclairer la LED toutes les 16 secondes pendant 1 seconde (puisque j'incrémente les bits d'adresse du démux mais pas ceux du mux). Mais la LED ne s'éclaire à aucun moment... Néanmoins j'ai remarqué que si j'affecte les pins comme des OUTPUTs la LED reste éclairée indéfiniment.. Vois tu dans ce code des erreurs ?

byte adresse_demux=0;
byte adresse_mux=0;

void setup() 
{
  // Bits d'adresse du démux A B C D
  pinMode(22, INPUT); pinMode(23, INPUT);
  pinMode(24, INPUT); pinMode(25, INPUT);

  // Bits d'adresse du mux A B C D
  pinMode(36, INPUT); pinMode(37, INPUT);
  pinMode(38, INPUT); pinMode(39, INPUT);

  // Affectation des bits d'adresse du demux sur un octet
  for (int i=0; i<4; i++) 
        {
          digitalWrite(22+i,bitRead(adresse_demux,i));
        }

 // Affectation des bits d'adresse du mux sur un octet
  for (int j=0; j<4; j++)
        {
          digitalWrite(36+j,bitRead(adresse_mux,j));
        }
}



     
void loop() 
{
  delay(1000);
  adresse_demux++;
  if (adresse_demux>15) 
     { 
       adresse_demux=0;
     }

}

Bonjour,

A mon humble avis, c'est dans la partie loop() qu'il faut coder l'affectation des bits d'adresse_demux.

Là, tu incrémentes l'adresse... et tu ne fais rien d'autre... (A part attendre)

Coyotte

:) tu déclares l'adressage des multiplexeur/demultilplexeur en [u]entrée[/u] ???????????????????

Merci beaucoup coyotte le problème est résolu c’était bien ca !
Et oui dfgh… Je fais des choses incensées quand je suis désespéré…