Le registre à décalage SIPO

Le registre à décalage SIPO

Vous vous souvenez, nous avions vu le registre à décalage PISO entrées parallèles et sortie série pour augmenter le nombre d’entrées de l’Arduino (voir ici). Maintenant nous allons voir son demi-frère le registre à décalage SIPO entrée série => sorties parallèles (ou en anglais shift register Serial In Parallel Out) qui lui est un petit circuit intégré très pratique pour augmenter le nombre de sorties d’un Arduino.

 

A quoi ça sert?

Imaginons un tableau de bord rempli de voyants (un cockpit d’avion?) et trop de Leds pour les sorties de l’Arduino. Il existe plusieurs façons de connecter beaucoup de Leds à un Arduino sans utiliser trop de fils (et donc de sorties).

Il y a entre autre la matrice. Pour une matrice, il faut gérer plusieurs ligne et plusieurs colonnes, les activer et les désactiver pour allumer les Leds (les Leds sont allumées très vite une a une et la persistance rétinienne donne l’impression que c’est bien allumé). Cependant la matrice a 2 inconvénients. Le premier c’est que le programme ne doit pas s’arrêter ni faire de pause sinon les Leds s’éteignent (très bon exercice pour faire du code non bloquant). Et le deuxième c’est qu’il faut quand même un certain nombre de sorties, pour une matrice 4×4 de 16 Leds il faut 8 fils donc 8 sorties. (Peut être ferais-je un article sur les matrice, à suivre).

Il y a aussi l’utilisation d’un multiplexeur (une entrée, plusieurs sorties) qui permet de transférer la valeur de l’entrée sur une de ses sorties, sélectionnée par commande.

Et nous avons aussi la possibilité d’utiliser un registre à décalage et c’est le sujet de cet article !

 

Comment ça marche?

Comme son nom l’indique, ce circuit possède une entrée série et plusieurs sorties parallèles.  Bien pratique pour avoir plusieurs sorties séparées, les alimenter avec un octet et les activer au bon moment, tout ça avec 3 pins de l’Arduino. Le principe est simple, le registre est verrouillé (pour éviter les problèmes pendant le changement de valeur), ensuite les valeurs sont présentées une à une au registre qui les poussent devant la bonne porte (grâce à l’horloge) puis les sorties sont validées : les états des pins de sortie prennent physiquement les valeur attribuées.

L’enchainement des étapes pour envoyer un octet

Étape 1 : verrouiller le registre

Étape 2 : écrire 8 fois la valeur sur l’entrée série du registre en envoyant à chaque écriture un coup d’horloge pour faire décaler les données. Ceci permet d’écrire la 8ème valeur de l’octet puis de la 7ème et ainsi de suite.

Étape 3 : déverrouiller le registre pour que les valeurs se retrouvent sur les pins de sortie

 

La mécanique interne d’un registre SIPO:

le partie pris dans cet exemple est de commencer par les LSB (Less Significant Bits), les bit les moins significatifs, donc ceux de droite. On prend les bits de l’octet de droite à gauche.

Verrouillage du registre.

Premier cycle d’horloge, mise à LOW de l’horloge (CLOCK), sélection du premier bit à droite (1 en rouge), mise à l’état (en fonction du bit) de la sortie de l’Arduino reliée à Ds puis envoi du top d’horloge (mise à HIGH sur CLOCK), on voit que le bit (ici 1) est bien rentré dans le registre (Q0).

Les bits du registre sont en gris car les sorties ne sont pas encore validées, c’est bien la phase de transfert.

Deuxième cycle d’horloge, mise à LOW de l’horloge (CLOCK), sélection du deuxième bit à droite (0 en rouge) , mise à l’état (en fonction du bit) de la sortie de l’Arduino reliée à Ds puis envoi du top d’horloge(mise à HIGH sur CLOCK), on voit que le bit (ici 0) est bien rentré dans le registre (Q0) et que le premier bit entré (1) a bien été décalé (Q1).

Il suffit de répéter ces opérations jusqu’à avoir transférer les 8 bits, déverrouiller le registre et les sorties prendront la valeur de l’octet initial.

Des registres à décalage, il en existe quelques uns avec le même principe de base mais avec quelques fonctionnalités différentes. Nous allons voir le 74HC595 (mais vous auriez pu tout a fait en prendre un autre, attention les câblages sont en général différents).

 

Comment brancher un 74HC595?

Le 74HC595 se présente sous la forme d’un composant à 16 broches en boitier DIP (traversant, en photo) ou en version CMS (composant de surface).

Voici la correspondance des pins.

[pastacode lang= »c » manual= »%2F*–%20pin%20out%20du%2074HC595%0A%20%20%20%20%20%20%20%20%201___o___16%20%20%20%20%0APO-Q1%20%3C-%20%20%7C%20%20%20%20%20%7C%20%3C-%20Vcc%20(%2B5v)%0APO-Q2%20%3C-%20%20%7C%20%20C%20%20%7C%20-%3E%20PO-Q0%0APO-Q3%20%3C-%20%20%7C%20%20D%20%20%7C%20%3C-%20DS%20entr%C3%A9e%20s%C3%A9rie%0APO-Q4%20%3C-%20%20%7C%20%204%20%20%7C%20%3C-%20OE%20Output%20Enable%20(active%20LOW)%20maintenir%20%C3%A0%20GND%0APO-Q5%20%3C-%20%20%7C%20%200%20%20%7C%20%3C-%20ST-CP%20verrouillage%20des%20sorties%20(le%20temps%20de%20d%C3%A9caler%20le%20registre)%0APO-Q6%20%3C-%20%20%7C%20%202%20%20%7C%20%3C-%20SH-CP%20entr%C3%A9e%20de%20l’horloge%20de%20d%C3%A9calage%0APO-Q7%20%3C-%20%20%7C%20%201%20%20%7C%20%3C-%20MR%20Master%20Reset%20(active%20LOW)%20maintenir%20%C3%A0%20%2BVcc%0A%20%20GND%20-%3E%20%20%7C_____%7C%20-%3E%20Q7’%0A%20%20%20%20%20%20%20%20%208%20%20%20%20%20%20%209%0APO-Q0%20%C3%A0%20Q7%20sont%20les%20sorties%20parall%C3%A8les%0AQ7’%20est%20l’%C3%A9quivalent%20de%20Q7%20pour%20connecter%20%C3%A0%20un%20autre%20registre%0ADS%20est%20l’entr%C3%A9e%20s%C3%A9rie%20%0A*%2F » message= » » highlight= » » provider= »manual »/]

L’alimentation se fait avec les pin 8 GND et pin 16 Vcc (+5v).

les pins de contrôles sont :

  • la pin 12 ST-CP LOCK qui permet de verrouiller les sorties le temps de charger des nouvelles valeurs
  • la pin 11 SH-CP CLOCK, chaque front montant décale les valeurs dans le registre interne de l’entrée série vers Q7 (en passant par Q0, Q1 etc)

les pins de sortie sont les pins Q0 à Q7 et la pin de entrée série est la DS (la pin 14).

 

Comment utiliser le 74HC595 avec une carte Arduino?

Le but sur l’Arduino est de gérer un octet (8 bits) qui représente l’état souhaité des sorties du 74HC595. Lorsque l’octet prêt, il faut le « pousser » dans le 74HC595.

Une fois le verrouillage effectué, la première valeur, (celle de la sortie de l’Arduino reliée à l’entrée série DS, soit la pin 14) doit être enregistrée en première position grâce à un coup d’horlge. Puis ensuite il faut mettre sur la sortie de l’Arduino, la valeur du prochain bit à transférer et envoyer un coup d’horloge. Et ainsi de suite pour pousser les bits restants. Enfin ne pas oublier de déverrouiller le registre pour que les sorties prennent bien en compte les nouvelles valeurs.

Attention à la façon dont vous gérer les bits LSB (Less Significant Bit) ou MSB (Most Significant Bit), l’exemple de code permet d’utiliser un sens de lecture de l’octet le MSB en premier ou le LSB en premier.

Vous trouverez 2 exemples de code ci-dessous, le premier est un chenillard simple et le deuxième permet d’afficher un nombre en binaire :

Le montage

Schéma de montage et test fait sur Tinkercad.

 

Voici un exemple de code de chenillard.

[pastacode lang= »c » manual= »%2F*–%20pin%20out%20du%2074HC595%0A%20%20%20%20%20%20%20%20%201___o___16%20%20%20%20%0APO-Q1%20%3C-%20%20%7C%20%20%20%20%20%7C%20%3C-%20Vcc%20(%2B5v)%0APO-Q2%20%3C-%20%20%7C%20%20C%20%20%7C%20-%3E%20PO-Q0%0APO-Q3%20%3C-%20%20%7C%20%20D%20%20%7C%20%3C-%20DS%20entr%C3%A9e%20s%C3%A9rie%0APO-Q4%20%3C-%20%20%7C%20%204%20%20%7C%20%3C-%20OE%20Output%20Enable%20(active%20LOW)%20maintenir%20%C3%A0%20GND%0APO-Q5%20%3C-%20%20%7C%20%200%20%20%7C%20%3C-%20ST-CP%20verrouillage%20des%20sorties%20(le%20temps%20de%20d%C3%A9caler%20le%20registre)%0APO-Q6%20%3C-%20%20%7C%20%202%20%20%7C%20%3C-%20SH-CP%20entr%C3%A9e%20de%20l’horloge%20de%20d%C3%A9calage%0APO-Q7%20%3C-%20%20%7C%20%201%20%20%7C%20%3C-%20MR%20Master%20Reset%20(active%20LOW)%20maintenir%20%C3%A0%20%2BVcc%0A%20%20GND%20-%3E%20%20%7C_____%7C%20-%3E%20Q7’%0A%20%20%20%20%20%20%20%20%208%20%20%20%20%20%20%209%0APO-Q0%20%C3%A0%20Q7%20sont%20les%20sorties%20parall%C3%A8les%0AQ7’%20est%20l’%C3%A9quivalent%20de%20Q7%20pour%20connecter%20%C3%A0%20un%20autre%20registre%0ADS%20est%20l’entr%C3%A9e%20s%C3%A9rie%20%0A*%2F%0A%0A%2F%2FBroche%20connect%C3%A9e%20au%20ST_CP%20du%2074HC595%0A%23define%20LOCK%2012%20%0A%2F%2FBroche%20connect%C3%A9e%20au%20SH_CP%20du%2074HC595%0A%23define%20CLOCK%2013%20%0A%2F%2FBroche%20connect%C3%A9e%20au%20DS%20du%2074HC595%0A%23define%20DATA%2011%20%0A%0Avoid%20setup()%0A%7B%0A%20%20%20%20%2F%2FOn%20met%20les%20broches%20en%20sortie%0A%20%20%20%20pinMode(LOCK%2C%20OUTPUT)%3B%0A%20%20%20%20pinMode(CLOCK%2C%20OUTPUT)%3B%0A%20%20%20%20pinMode(DATA%2C%20OUTPUT)%3B%0A%20%20%09Serial.begin(9600)%3B%0A%7D%0A%0Avoid%20loop()%0A%7B%0A%20%20%20%20%2F%2F%20un%20chenillard%2C%20c’est%20une%20led%20allum%C3%A9e%20%C3%A0%20la%20fois%20et%20qui%20se%20d%C3%A9place%0A%20%20%09%2F%2F%20il%20faut%20allumer%20la%20premi%C3%A8re%2C%20puis%20l’%C3%A9teindre%20puis%20la%20deuxi%C3%A8me%20etc.%0A%20%20%09%2F%2F%20l’octet%20repr%C3%A9sentent%20les%208%20leds%2C%20il%20faut%20donc%20avoir%20%0A%20%20%09%2F%2F%200000%200001%0A%20%20%09%2F%2F%200000%200010%0A%20%20%09%2F%2F%200000%200100%20et%20ainsi%20de%20suite%0A%20%20%09%2F%2F%20on%20remarque%20que%20les%20valeurs%20d%C3%A9cimales%20de%20l’octet%20sont%201%20puis%202%20puis%204%0A%20%20%09%2F%2F%20pratique%2C%20il%20suffit%20de%20faire%20×2%20pour%20d%C3%A9caler%20vers%20la%20gauche%0A%20%20%09%0A%20%20%09%2F%2F%20d%C3%A9part%20i%3D1%20pour%20la%20premi%C3%A8re%20led%20et%20x%202%20%C3%A0%20chaque%20boucle%0A%20%20%09%2F%2F%20lorsque%20i%20aura%20atteint%20128%2C%20le%20dernier%20×2%20donnera%20256%20soit%201%200000%200000%0A%20%20%09%2F%2F%20on%20voit%20que%20le%201%20ne%20fait%20plus%20parti%20de%20l’octet%20donc%20i%20%3D%200%2C%20d’ou%20la%20condition%20de%20sortie%0A%20%20%09%2F%2F%20et%20ensuite%20on%20reprend%0A%20%20%20%20for%20(unsigned%20char%20i%20%3D%201%3B%20i%3E0%3B%20i%3Di*2)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20Serial.println(i)%3B%20%20%0A%20%20%20%20%20%20%2F%2FOn%20active%20le%20verrou%20le%20temps%20de%20transf%C3%A9rer%20les%20donn%C3%A9es%0A%20%20%20%20%20%20%20%20digitalWrite(LOCK%2C%20LOW)%3B%0A%20%20%20%20%20%20%20%20%2F%2Fon%20envoi%20toutes%20les%20donn%C3%A9es%20gr%C3%A2ce%20%C3%A0%20notre%20belle%20fonction%0A%20%20%20%20%20%20%20%20envoi_ordre(DATA%2C%20CLOCK%2C%201%2C%20i)%3B%0A%20%20%20%20%20%20%20%20%2F%2Fet%20enfin%20on%20rel%C3%A2che%20le%20verrou%0A%20%20%20%20%20%20%20%20digitalWrite(LOCK%2C%20HIGH)%3B%0A%20%20%20%20%20%20%20%20%2F%2Fune%20petite%20pause%20pour%20constater%20l’affichage%20%0A%20%20%20%20%20%20%20%20delay(250)%3B%0A%20%20%20%20%7D%0A%7D%0A%0A%2F%2F%20cette%20fonction%20permet%20de%20%22pousser%22%20un%20octet%20dans%20le%20registre%20%C3%A0%20d%C3%A9calage%0A%2F%2F%20la%20fonction%20met%20un%20front%20bas%20sur%20l’horloge%2C%20pr%C3%A9sente%20la%20valeur%20au%20registre%0A%2F%2F%20(soit%20la%20valeur%20du%20bit%20de%20l’octet%20que%20la%20fonction%20est%20en%20train%20de%20lire%0A%2F%2F%20puis%20met%20un%20front%20haut%20pour%20valider%20la%20valeur%0Avoid%20envoi_ordre(int%20dataPin%2C%20int%20clockPin%2C%20boolean%20sens%2C%20char%20donnee)%0A%7B%0A%20%20%20%20%2F%2Fon%20va%20parcourir%20chaque%20bit%20de%20l’octet%0A%20%20%20%20for(int%20i%3D0%3B%20i%3C8%3B%20i%2B%2B)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2Fon%20met%20l’horloge%20%C3%A0%20l’%C3%A9tat%20bas%0A%20%20%20%20%20%20%20%20digitalWrite(clockPin%2C%20LOW)%3B%0A%20%20%20%20%20%20%20%20%2F%2Fon%20met%20le%20bit%20de%20donn%C3%A9e%20courante%20en%20place%0A%20%20%20%20%20%20%20%20if(sens)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20digitalWrite(dataPin%2C%20donnee%20%26%200×01%20%3C%3C%20i)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20digitalWrite(dataPin%2C%20donnee%20%26%200×80%20%3E%3E%20i)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2Fenfin%20on%20remet%20l’horloge%20%C3%A0%20l’%C3%A9tat%20haut%20pour%20faire%20prendre%20en%20compte%20cette%20derni%C3%A8re%0A%20%20%20%20%20%20%20%20digitalWrite(clockPin%2C%20HIGH)%3B%0A%20%20%20%20%7D%0A%7D » message= » » highlight= » » provider= »manual »/]

Voici un exemple de code qui permet d’afficher un nombre de 0 à 255 en binaire à l’aide de 8 Leds et d’un 74HC595.

[pastacode lang= »c » manual= »%2F*–%20pin%20out%20du%2074HC595%0A%20%20%20%20%20%20%20%20%201___o___16%20%20%20%20%0APO-Q1%20%3C-%20%20%7C%20%20%20%20%20%7C%20%3C-%20Vcc%20(%2B5v)%0APO-Q2%20%3C-%20%20%7C%20%20C%20%20%7C%20-%3E%20PO-Q0%0APO-Q3%20%3C-%20%20%7C%20%20D%20%20%7C%20%3C-%20DS%20entr%C3%A9e%20s%C3%A9rie%0APO-Q4%20%3C-%20%20%7C%20%204%20%20%7C%20%3C-%20OE%20Output%20Enable%20(active%20LOW)%20maintenir%20%C3%A0%20GND%0APO-Q5%20%3C-%20%20%7C%20%200%20%20%7C%20%3C-%20ST-CP%20verrouillage%20des%20sorties%20(le%20temps%20de%20d%C3%A9caler%20le%20registre)%0APO-Q6%20%3C-%20%20%7C%20%202%20%20%7C%20%3C-%20SH-CP%20entr%C3%A9e%20de%20l’horloge%20de%20d%C3%A9calage%0APO-Q7%20%3C-%20%20%7C%20%201%20%20%7C%20%3C-%20MR%20Master%20Reset%20(active%20LOW)%20maintenir%20%C3%A0%20%2BVcc%0A%20%20GND%20-%3E%20%20%7C_____%7C%20-%3E%20Q7’%0A%20%20%20%20%20%20%20%20%208%20%20%20%20%20%20%209%0APO-Q0%20%C3%A0%20Q7%20sont%20les%20sorties%20parall%C3%A8les%0AQ7’%20est%20l’%C3%A9quivalent%20de%20Q7%20pour%20connecter%20%C3%A0%20un%20autre%20registre%0ADS%20est%20l’entr%C3%A9e%20s%C3%A9rie%20%0A*%2F%0A%0A%2F%2FBroche%20connect%C3%A9e%20au%20ST_CP%20du%2074HC595%0A%23define%20LOCK%2012%20%0A%2F%2FBroche%20connect%C3%A9e%20au%20SH_CP%20du%2074HC595%0A%23define%20CLOCK%2013%20%0A%2F%2FBroche%20connect%C3%A9e%20au%20DS%20du%2074HC595%0A%23define%20DATA%2011%20%0A%0Avoid%20setup()%0A%7B%0A%20%20%20%20%2F%2FOn%20met%20les%20broches%20en%20sortie%0A%20%20%20%20pinMode(LOCK%2C%20OUTPUT)%3B%0A%20%20%20%20pinMode(CLOCK%2C%20OUTPUT)%3B%0A%20%20%20%20pinMode(DATA%2C%20OUTPUT)%3B%0A%7D%0A%0Avoid%20loop()%0A%7B%0A%20%20%20%20%2F%2F%20on%20affiche%20les%20nombres%20de%200%20%C3%A0%20255%20en%20binaire%0A%20%20%09%2F%2F%20on%20met%20dans%20i%20un%20entier%20de%200%20%C3%A0%20255%20soit%20de%20%2000000000%20%C3%A0%2011111111%0A%20%20%09%2F%2F%20exemple%0A%20%20%09%2F%2F%20le%20001%20c’est%2000000001%0A%20%20%09%2F%2F%20le%20002%20c’est%2000000010%0A%20%20%09%2F%2F%20le%20003%20c’est%2000000011%0A%20%20%09%2F%2F%20le%20004%20c’est%2000000100%0A%20%20%09%2F%2F%20le%20064%20c’est%2001000000%0A%20%20%09%2F%2F%20le%20but%20est%20d’allumer%20les%20leds%20lorsqu’il%20y%20a%20un%201%0A%20%20%0A%20%20%20%20for%20(char%20i%20%3D%200%3B%20i%3C256%3B%20i%2B%2B)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2FOn%20active%20le%20verrou%20le%20temps%20de%20transf%C3%A9rer%20les%20donn%C3%A9es%0A%20%20%20%20%20%20%20%20digitalWrite(LOCK%2C%20LOW)%3B%0A%20%20%20%20%20%20%20%20%2F%2Fon%20envoi%20toutes%20les%20donn%C3%A9es%20gr%C3%A2ce%20%C3%A0%20notre%20belle%20fonction%0A%20%20%20%20%20%20%20%20envoi_ordre(DATA%2C%20CLOCK%2C%201%2C%20i)%3B%0A%20%20%20%20%20%20%20%20%2F%2Fet%20enfin%20on%20rel%C3%A2che%20le%20verrou%0A%20%20%20%20%20%20%20%20digitalWrite(LOCK%2C%20HIGH)%3B%0A%20%20%20%20%20%20%20%20%2F%2Fune%20petite%20pause%20pour%20constater%20l’affichage%20%0A%20%20%20%20%20%20%20%20delay(500)%3B%0A%20%20%20%20%7D%0A%7D%0A%0A%2F%2F%20cette%20fonction%20permet%20de%20%22pousser%22%20un%20octet%20dans%20le%20registre%20%C3%A0%20d%C3%A9calage%0A%2F%2F%20la%20fonction%20met%20un%20front%20bas%20sur%20l’horloge%2C%20pr%C3%A9sente%20la%20valeur%20au%20registre%0A%2F%2F%20(soit%20la%20valeur%20du%20bit%20de%20l’octet%20que%20la%20fonction%20est%20en%20train%20de%20lire%0A%2F%2F%20puis%20met%20un%20front%20haut%20pour%20valider%20la%20valeur%0Avoid%20envoi_ordre(int%20dataPin%2C%20int%20clockPin%2C%20boolean%20sens%2C%20char%20donnee)%0A%7B%0A%20%20%20%20%2F%2Fon%20va%20parcourir%20chaque%20bit%20de%20l’octet%0A%20%20%20%20for(int%20i%3D0%3B%20i%3C8%3B%20i%2B%2B)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2Fon%20met%20l’horloge%20%C3%A0%20l’%C3%A9tat%20bas%0A%20%20%20%20%20%20%20%20digitalWrite(clockPin%2C%20LOW)%3B%0A%20%20%20%20%20%20%20%20%2F%2Fon%20met%20le%20bit%20de%20donn%C3%A9e%20courante%20en%20place%0A%20%20%20%20%20%20%20%20if(sens)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20digitalWrite(dataPin%2C%20donnee%20%26%200×01%20%3C%3C%20i)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20digitalWrite(dataPin%2C%20donnee%20%26%200×80%20%3E%3E%20i)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2Fenfin%20on%20remet%20l’horloge%20%C3%A0%20l’%C3%A9tat%20haut%20pour%20faire%20prendre%20en%20compte%20cette%20derni%C3%A8re%0A%20%20%20%20%20%20%20%20digitalWrite(clockPin%2C%20HIGH)%3B%0A%20%20%20%20%7D%0A%7D » message= » » highlight= » » provider= »manual »/]

 

Utiliser plusieurs 74HC595

Le principe est assez simple, comme il s’agit d’une liaison série avec un décalage, il suffit de mettre les 74HC595 en série. Pour se faire on raccorde la sortie Q7 (ou plutôt Q7′ qui est la pour ça) du premier registre sur l’entrée série DS (pin 14) du deuxième. Il faut également relier les LOCK et CLOCK de chacun des éléments. Au bout du 8ème top d’horloge, les valeurs vont commencer à être charger dans le deuxième registre.

Ce montages série est très intéressant car il permet toujours de n’utiliser que 3 pins de la carte Arduino quelque soit le nombre de registres en série. En revanche, plus il y a de registres en série plus il faudra de temps pour charger les données qui devront traverser tous les registres. Le temps est proportionnel au nombre de coup d’horloge nécessaire qui lui est proportionnel au nombre de 74HC595 mis dans le circuit.

Vous trouverez des informations complémentaires sur le site Arduino (voir lien en fin d’article).

 

Note

Il existe aussi plus simplement la fonction shiftOut d’Arduino 🙂

https://www.arduino.cc/en/Tutorial/ShiftOut

Un article traitant du sujet (merci à lui) : https://www.zem.fr/decouverte-du-composant-74hc595-8-bit-shift-register/

Posted in arduino, Projet terminé, Technique and tagged , , , , , .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *