Puce SN74HC595 - Comment ça marche?

Bonjour,
Je me renseigne depuis quelque temps sur le Shift Register SN74HC595, mais je n’arrive pas à l’utiliser, j’ai réalisé tout le cablage qui me parait correct, (led en sortit avec résistance, etc…). J’ai implanté ce code:

const int ser=2;
const int rclk=3;
const int srclk=4;



void setup() {
  // put your setup code here, to run once:
  pinMode(ser,OUTPUT);
  pinMode(srclk,OUTPUT);
  pinMode(rclk,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

digitalWrite(srclk,LOW);
digitalWrite(ser,HIGH);
digitalWrite(srclk,HIGH);

for(int x=3;x<3;x++)
{
delay(450);
digitalWrite(srclk,HIGH);
digitalWrite(srclk,LOW);  
}

}

Qui à pour but d’allumer la 1ère LED, la décaler 3 fois vers la droite avec un délais de 450milliseconde en l’affichant à chaque étape, puis remettre une Led dans le registre…Or cela ne fonctionne pas :/, je suis allez sur cette page en modifiant le code et le câblage. Mercid e votre aide!

ce code ne fait rienfor(int x=3;x<3;x++)
vous initialisez x à 3 et vous demandez d’exécuter la boucle et l’incrémentation tant que x est strictement inférieur à 3… comme c’est jamais vrai, le code dans la boucle ne tourne jamais et est viré même sans doute à la compilation

sinon pour bien débuter avec l’arduino, un bon point de départ c’est de lire les tutos d’eskimon et il en a bien sûr un sur le 74hc595

Au passage, en français, un "shiftregister" s'appelle un registre à décalage :grin: . C'est mieux quand on comprend les termes.

Dans un registre à décalage à chaque coup d'horloge ce qui est présent à l'entrée se décale vers la droite et pousse ce qui est déjà entré vers la sortie.. Il faut donc générer un signal horloge en plus du signal de donnée.

Il existe deux type de registre à décallage avec et sans latch : en français latch veut dire verrou. Explication: Admettons que toutes les sorties Q0 à Q7 soit connectées à des dels (en anglais leds). Si tu veux allumer la diode sur Q5 il faudra 6 coup d'horloge pour que la diode s'éclaire. Sans verrou toutes les diodes de Q0 à Q5 s'allumeront chacune leur tour. Il y aura un scintillement. Avec verrou les étages de sortie du registre à décalage peuvent être "verrouillés", pas le registre juste les étages de sortie. On verrouille les étages de sorties On fait progresser l'information avec le nombre de coups d'horloge qu'il faut. On "déverrouille" les sorties et la diode sur Q5 s'allumera directement sans scintillement intermédiaire.

Voila pour les explications, pour le code ce ne sont pas les exemples qui manquent, tu devrai trouver.

Pour ce genre de boulot, j'aime bien le multiplexeur ou expander PCF8574, il y en a une sorte dont les modules s'emboîtent les uns dans les autres. Liaison I2C, VCC, ground SDA et SCL. 0.80 euros en chine. très facile à utiliser avec la bibliothèque PCF8574.h Seule limite on ne peut en utiliser que 8, puisqu'il y a 3 cavaliers pour définir l'adresse I2C. Pour les 8 autres, il faudra utiliser les sorties de l'arduino ou un autre expander comme un autre arduino par exemple.

je suis allez sur cette page en modifiant le code et le câblage

Quelle page ?

J’ai tout recommencé à 0, De plus la puce étais dans le mauvais sens, J’ai connecté toute les LED sauf la Q7 (Questions de propreté de câblage à mes yeux ^^), et j’ai écrit ce code :

//SH_CP
const int horloge=4;
//ST_CP
const int verrou=3;
//DS
const int data=2;



void setup() {
  // put your setup code here, to run once:
  pinMode(horloge,OUTPUT);
  pinMode(verrou,OUTPUT);
  pinMode(data,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(data,HIGH);
digitalWrite(horloge,HIGH);
delay(10);
digitalWrite(horloge,LOW);
digitalWrite(data,LOW);

//SN74HC595 déplace 3 fois les bits et les raffiche à chaque fois
for(int x=0;x<3;x++)
{
delay(300);
digitalWrite(horloge,HIGH);
delay(10);
digitalWrite(horloge,LOW);
digitalWrite(verrou,HIGH);
delay(10);
digitalWrite(verrou,LOW);
}
digitalWrite(verrou,HIGH);
delay(10);
digitalWrite(verrou,LOW);
}[\code]

Mais pourquoi le chenillard fonctionne un temps...puis s'arrête et prend une pause parfois?

vous avez lu le tuto indiqué plus haut?

Pourquoi avoir posté 2 fois la même question...

BYE.

Oui oui j'ai bein lue le Tuto, mais je ne comprend juste absolument pas pourquoi les LED Font le chenillard et s'arrête nette :/, surtout que les pauses semble aléatoire. En ce qui concerne le 2eme poste je n'arrive juste pas à le supprimer, j'ai posté celui-ci dans le forum Français qui était plus approprié!

EDIT : Problème résolus, un branchement était manquant, désolé d'avoir dérangé je n'ais pas vraiment l'habitude de ce genre de matériel ^^, merci à tous!