Shift Register
Introduction
Le registre à décalage (shift register) est expliqué dans la page
74HC595.
Exercice 1 :
Bien étudier la fiche technique du registre à décalage 74HC595. Designer un schéma de câblage de la barre à LEDs, avec 2 registres à décalage 74HC595 et les pins GPIO du ESP32. Toutes les 10 LEDs doivent être accessibles.
Faire les connexions nécessaires sur la planche d’expérimentation. Cette partie est la plus difficile de l’exercice ! Vérifier que toutes les connexions sont correctes. Il y aura pas mal de câbles !
Exercice 2 :
Écrire une classe
ShiftReg qui contrôle la barre à LEDs via le registre à décalage. La classe doit avoir les méthodes suivantes :
-
__init__(self,serial_in = 18, serial_clk = 19, register_clk=5, clr = 23)
les chiffres correspondent aux pins GPIO et dépendent du schéma ;
-
enable_output(self,yesno) : contrôle le pin « output enable » G. Si yesno est True les signaux de sortie sont activés, sinon ils sont en haute impédance ;
-
pulse_ser_clock(self) : Génère une impulsion sur le pin SCK et fait entrer le bit de donnée dans le registre à décalage. Les bits entrés précédemment sont décalés d’une position ;
-
transfer2reg(self) : Transfère les données du registre à décalage vers le registre de sortie ;
-
shift(self,data_bit): Entrer un bit dans le registre à décalage et décaler tous les bits entrés précédemment. Transférer la nouvelle valeur vers le registre de sortie pour être visible sur la barre à LEDs ;
-
clear(self) : Éteindre toutes les LEDs ;
-
display_val(self.val) : Afficher la valeur val en binaire sur les LEDs.
Exercice 3 :
Écrire un programme de test qui démontre le bon fonctionnement de toutes ces méthodes.
Exercice 4:
- Écrire un programme qui appelle shift(self,data_bit) 10 fois avec data_bit = 1. (Faire allumer les LEDs une à une, à partir de la LED de droite).
- Une fois que toutes les LEDs sont allumées, faire la même chose avec data_bit = 0. Éteindre toutes les LEDs une à une, à partir de la LED de droite.
- Allumer toutes les LEDs d’un seul coup, et les éteindre toutes, d’un seul coup.
- Faire allumer chaque deuxième LED à partir de la première, ensuite, à partir de la deuxième LED.
- Implémenter l’algorithme « 15.1_Flowing_Water_Light» de Freenove.
--
Uli Raich - 2021-06-28
Comments