Multibargraph

Salut à tous

Je suis en train de m’amuser un peu avec les bargraph via des decallages à registres 74hC595N
Voici mon cheminement :

1- faire un bargraph qui s’allume à mesure qu’une valeur de potard bouge le tout va le 74hc595N : aucun problème

2- faire la même chose avec deux ou plus bargraph et bien sur autant de potard que de bargraph : pas de soucis non plus

3- je me suis dit que c’était un peu bête de sacrifier à chaque bargraph trois pins (un data, un clock et un verrou) pourquoi ne pas mutualiser clock et verrou tandis qu’évidemment chacun à son pin de data.

je relie le clock du premier decallage avec le second decallage lui même relié à la pin de l’arduino
je relie le verrou du premier decallage avec le second decallage lui même relié à la pin de l’arduino

Un des bargraph marche nickel tandis que le second est soit tout éteind, soit tout allumé .
C’est zarb…j’ai essayé de mettre deux diodes entre les deux décallages (pins verrou et clock) mais ça ne change rien…

Voici mon code et le shéma sur lequel j’ai basé mes expériences…

//Broche connectée au ST_CP du 74HC595
const int verrou = 11;
const int locker = 6;
//Broche connectée au SH_CP du 74HC595
const int horloge = 12;
//Broche connectée au DS du 74HC595
const int data = 10;
const int donnees = 5;
const int analogInPin = A1;  //  potard
const int analogInPin2 = A0;
int sensorValue = 0; 
int sensorValue2 = 0;
int led=0; 
int led2=0;


void setup()
{
 

   pinMode(donnees, OUTPUT);
   pinMode(analogInPin2, INPUT);    

   pinMode(verrou, OUTPUT);
   pinMode(horloge, OUTPUT);
   pinMode(data, OUTPUT);
   pinMode(analogInPin, INPUT);  
}

void loop(){
sensorValue = analogRead(analogInPin);
sensorValue2 = analogRead(analogInPin2);
checka();
checkb();


digitalWrite(verrou, LOW);
shiftOut(data, horloge, MSBFIRST, ~led);
shiftOut(donnees, horloge, MSBFIRST, ~led2);
digitalWrite(verrou, HIGH);
 
 
}



void checka ()

{  
if  (sensorValue2 <=50){
led2 = 0b00000000;
}
if ( (sensorValue2 >51  ) && (sensorValue2 <=127)){
led2 = 0b10000000;
}
if ( (sensorValue2 >=128) && (sensorValue2 <=254)){
led2 = 0b11000000;
}
if ( (sensorValue2 >=255) && (sensorValue2 <=381)){
led2 = 0b11100000;
}
if ( (sensorValue2 >=382) && (sensorValue2 <=510)){
led2 = 0b11110000;
}
if ( (sensorValue2 >=511) && (sensorValue2 <=637)){
led2 = 0b11111000;
}
if ( (sensorValue2 >=638) && (sensorValue2 <=764)){
led2 = 0b11111100;
}
if ( (sensorValue2 >=765) && (sensorValue2 <=892)){
led2 = 0b11111110;
}
if ( (sensorValue2 >=893) && (sensorValue2 <=1023)){
led2 = 0b11111111;
}
}



void checkb ()
{  
if  (sensorValue <=50){
led = 0b00000000;
}
if ( (sensorValue >51) && (sensorValue <=127)){
led = 0b10000000;
}
if ( (sensorValue >=128) && (sensorValue <=254)){
led = 0b11000000;
}
if ( (sensorValue >=255) && (sensorValue <=381)){
led = 0b11100000;
}
if ( (sensorValue >=382) && (sensorValue <=510)){
led = 0b11110000;
}
if ( (sensorValue >=511) && (sensorValue <=637)){
led = 0b11111000;
}
if ( (sensorValue >=638) && (sensorValue <=764)){
led = 0b11111100;
}
if ( (sensorValue >=765) && (sensorValue <=892)){
led = 0b11111110;
}
if ( (sensorValue >=893) && (sensorValue <=1023)){
led = 0b11111111;
}
}

Si cela peut aider à simplifier: La question peut être résumée de la sorte : peut-on brancher plusieurs 54hc595n sur un arduino en partageant les pins de l'arduino allant vert ST_CP et Sh_CP ? comment procéder

Merci pepe pour ces éclaircissement. J'ignorait que le décallage à registre ce comportait de la sorte :confused:

Lorsque tu dis qu'on peut utiliser deux horloges séparées, tu parles du SH_CP si j'ai bien compris? le ST_CP peut rester commun? (ça me ferais gagner au moins une sortie d'arduino par circuit).

Je vais fouiller dans le forum aussi pour la dernière solution....en espérant que les sorties des registres puissent rester indépendantes : l'idée est de mettre le plus de bargraph possible sur un même duino avec un potard par bargraph....

Edit En fait je pense que nos posts se sont partiellement croises :-) Entre temps avec le shema et le lien tout devient plus clair...Merci encore pour ton aide.