Shift Register

Introduction

Le registre \xE0 d\xE9calage (shift register) est expliqu\xE9 dans la page 74HC595.

Exercice 1 :

Bien \xE9tudier la fiche technique du registre \xE0 d\xE9calage 74HC595. Designer un sch\xE9ma de c\xE2blage de la barre \xE0 LEDs, avec 2 registres \xE0 d\xE9calage 74HC595 et les pins GPIO du ESP32. Toutes les 10 LEDs doivent \xEAtre accessibles.

Faire les connexions n\xE9cessaires sur la planche d\x92exp\xE9rimentation. Cette partie est la plus difficile de l\x92exercice ! V\xE9rifier que toutes les connexions sont correctes. Il y aura pas mal de c\xE2bles !

sevenSeg1DigitPinout.png

Exercice 2 :

\xC9crire une classe ShiftReg qui contr\xF4le la barre \xE0 LEDs via le registre \xE0 d\xE9calage. La classe doit avoir les m\xE9thodes suivantes :
  • __init__(self,serial_in = 18, serial_clk = 19, register_clk=5, clr = 23)
    les chiffres correspondent aux pins GPIO et d\xE9pendent du sch\xE9ma ;

  • enable_output(self,yesno) : contr\xF4le le pin \xAB output enable \xBB G. Si yesno est True les signaux de sortie sont activ\xE9s, sinon ils sont en haute imp\xE9dance ;

  • pulse_ser_clock(self) : G\xE9n\xE8re une impulsion sur le pin SCK et fait entrer le bit de donn\xE9e dans le registre \xE0 d\xE9calage. Les bits entr\xE9s pr\xE9c\xE9demment sont d\xE9cal\xE9s d\x92une position ;

  • transfer2reg(self) : Transf\xE8re les donn\xE9es du registre \xE0 d\xE9calage vers le registre de sortie ;

  • shift(self,data_bit): Entrer un bit dans le registre \xE0 d\xE9calage et d\xE9caler tous les bits entr\xE9s pr\xE9c\xE9demment. Transf\xE9rer la nouvelle valeur vers le registre de sortie pour \xEAtre visible sur la barre \xE0 LEDs ;

  • clear(self) : \xC9teindre toutes les LEDs ;

  • display_val(self.val) : Afficher la valeur val en binaire sur les LEDs.

Exercice 3 :

\xC9crire un programme de test qui d\xE9montre le bon fonctionnement de toutes ces m\xE9thodes.

Exercice 4:

  • \xC9crire un programme qui appelle shift(self,data_bit) 10 fois avec data_bit = 1. (Faire allumer les LEDs une \xE0 une, \xE0 partir de la LED de droite).
  • Une fois que toutes les LEDs sont allum\xE9es, faire la m\xEAme chose avec data_bit = 0. \xC9teindre toutes les LEDs une \xE0 une, \xE0 partir de la LED de droite.
  • Allumer toutes les LEDs d\x92un seul coup, et les \xE9teindre toutes, d\x92un seul coup.
  • Faire allumer chaque deuxi\xE8me LED \xE0 partir de la premi\xE8re, ensuite, \xE0 partir de la deuxi\xE8me LED.
  • Impl\xE9menter l\x92algorithme \xAB 15.1_Flowing_Water_Light\xBB de Freenove.
-- %USERSIG{UliRaich - 2021-06-28}%

Comments

 

This topic: IoT_Course_French > WebHome > ShiftRegister
Topic revision: 28 Jun 2021, UliRaich