pakdoltogel.net
Aujourd'hui je vous présente un composant fort utile le 74hc595. Qui est-il? C'est un registre à décalage de 8 bits. A quoi sert-il? il sert à convertir une information série en parallèle. Mais on l'utilise aussi pour économiser le nombre de broche utilisée en sortie. C'est d'ailleurs pour ce dernier cas que je vais présenter la chose. En effet, au dessus de 3 sorties à piloter, il peut être intéressant d'utiliser ce composant afin d'économiser des broches sur votre carte de commande. Pourquoi 3, car c'est le nombre minimum de broche nécessaire au fonctionnement du composant. Comment ça fonctione? Afin de mieux comprendre le fonctionnment j'ai fait ces quelques images ci-dessous: Comme on peut le voir, il y a 2 grandes phases: La première on place les données que l'on veut La deuxième est la validation des données Maintenant passons à la pratique. Dans cet exemple, le but sera d'allumer des LED car c'est le plus simple électriquement. En effet, on peut également piloter des moteurs, des relais, des électrovannes,... mais cela nécessite une interface de puissance, ce qui n'est pas le sujet de ce tutoriel.
Rapidement le fonctionnement du registre à décalage, le pin SHCP permet un décalage de pin (0, 1, 2, 3, 4, 5 etc…. ). Le pin DS définit la valeur du pin dans lequel on est positionné (0 ou 1) et le pin STCP permet de valider les valeurs appliquées aux registres ( valide à 1). Le pin MR remet tout à 0 ( à l'état bas pour reset), le pin OE active ou non le registre à décalage. Partie code on commence par déclarer nos pin, on va ensuite définir le nombre de registre à décalage avec "#define numberOf74hc595 ". Je calcule le nombre de "pin" en sortie des registre à décalage avec "#define numOfRegisterPins numberOf74hc595 * 8". Je crée un tableau de boolean qui aura la taille du nombre de pin pour les registres "boolean registers[numOfRegisterPins];". Partie setup je définis tous mes pin en sortie, j'appelle la fonction "clearRegisters()" qui met a 0 les valeurs du registres et "writeRegisters()" qui se charge décrire sur le(s) registre(s). La fonction "clearRegisters()" boucle sur toutes les valeurs du tableau de registre et le met à l'état LOW.
Ainsi, pour allumer toutes les LEDs en même temps, vous envoyez 8 messages hauts consécutifs (vous appuyez 8 fois de suite sur le bouton de la broche 11 tout en maintenant le bouton de la broche 15 enfoncé), et vous n'appuyez sur le bouton 12 qu'à la toute fin. Pour terminer, voyons comment nous pouvons contrôler un registre à décalage au moyen d'un Arduino. Nous n'avons plus besoin des 3 interrupteurs, ni de la source d'alimentation externe qui sera remplacée par la sortie 5 V de l'Arduino. La broche 2 de l'Arduino est reliée à la broche 15 du 595, la broche 3 de l'Arduino est reliée à la broche 12 du 595, et la broche 4 de l'Arduino est reliée à la broche 11 du 595 (n'oubliez pas de relier toutes les masses: GND de l'Arduino avec la broche 8 du 595). Le sketch ci-dessous allume les 4 LEDs impaires pendant 1 seconde, puis les 4 LEDs paires. Comme nous le verrons ensuite, ce n'est pas nécessairement la façon la plus simple de procéder, mais vous pouvez constater que l'Arduino gère les broches 11, 12 et 15 du 595 de la même façon que vous le faisiez avec les interrupteurs.
Pour montrer le principe du registre à décalage, un exemple courant est de brancher des leds à ses sorties que nous allons faire clignoter les unes à la suite des autres. //Constants #define number_of_74hc595s 1 #define numOfRegisterPins number_of_74hc595s * 8 #define SER_Pin D1 #define RCLK_Pin D2 #define SRCLK_Pin D3 //Variables boolean registers [ numOfRegisterPins] = { 0, 0, 0}; void setup () { //Init Serial USB Serial. begin ( 115200); Serial.
Pour finir on a notre boucle loop ou je définis les valeurs des pin que je souhaite modifier avec "setRegisterPin(0, HIGH);" pour le "pin 0" etc … Une fois que j'ai modifié les pin souhaité pour appliquer mes valeurs il me suffit d'appeller "writeRegisters();". A la fin du programme je n'ai besoin que de modifier que 2 pin donc j'appelle "setRegisterPin" seulement pour ceux affectés. Le code est terminé tu peux télécharger mon exemple. Télécharger: Tuto Registre Decalage N'hésitez pas à poser vos questions sur les réseaux sociaux de la chaîne instagram, twitter, facebook, youtube; si vous ne comprenez pas certaines parties du tutoriel n'hésitez pas, me dire ce que vous aimeriez que je crée pour en faire des vidéos tutoriel et à partager les projets que vous aimeriez créer etc… Comme toujours allez sur la page de C'est quoi Retro et Geek pour connaître tout ce que je recherche à faire sur la chaîne. Merci les RetroGeeker et RetroGeekeuse