Code TP

Télécharger au format txt, pdf ou txt
Télécharger au format txt, pdf ou txt
Vous êtes sur la page 1sur 2

#define NbPin 8 // nombre de pins de sortie du 74HC595

#define SER 8 // pin 14 du 75HC595


#define SCLK 9 // pin 12 du 75HC595
#define SRCLK 10 // pin 11 du 75HC595

boolean TmpRegister[NbPin]; // tableau de booléens de la taille du nombre de pin du


74HC595

/***********************************
*** Implémentation des fonctions ***
***********************************/

// passe à l'état bas tous les bits du tableau "Tmpregister"


void ClearRegister()
{
for(int i = NbPin - 1; i >= 0; i--){
TmpRegister[i] = LOW;
}
}

// affectate les valeurs enregistrées dans le tableau "TmpRegister"


void WriteRegister()
{
digitalWrite(SCLK, LOW); // tant que ce SCLK restera à l'état bas, les
midification ne sont pas effectives

// boucle pour affecter les valeurs de "TmpRegister" dans le registre du 74HC595


for(int i = NbPin - 1; i >= 0; i--)
{
digitalWrite(SRCLK, LOW); // doit être à l'état bas pour changer de colonne
(front montant)
digitalWrite(SER, TmpRegister[i]); // affectation de la valeur du bit i dans le
registre
digitalWrite(SRCLK, HIGH); // front montant : passage à la colonne suivante
}

digitalWrite(SCLK, HIGH); // front montant : application des valeurs au 74HC595


}

// Affecte une valeur à un bit du tableau "TmpRegister"


void SetRegisterPin(int rang, int valeur)
{
TmpRegister[rang] = valeur;
}

/****************************************************
*** Procédure de paramétrage et boucle principale ***
****************************************************/

// fonction de paramétrage du microcontrôleur


void setup()
{
pinMode(SER, OUTPUT); // SER est une sortie pour l'Arduino
pinMode(SCLK, OUTPUT); // SCLK est une sortie pour l'Arduino
pinMode(SRCLK, OUTPUT); // SRCLK est une sortie pour l'Arduino
ClearRegister(); // efface le contenu de tous les registres
WriteRegister(); // appliquer les valeurs au registre à décalage
}

// boucle principale (infinie)


void loop()
{
SetRegisterPin(0, HIGH);
SetRegisterPin(1, LOW);
SetRegisterPin(2, HIGH);
SetRegisterPin(3, LOW);
SetRegisterPin(4, HIGH);
SetRegisterPin(5, LOW);
SetRegisterPin(6, HIGH);
SetRegisterPin(7, LOW);
WriteRegister(); // on applique les valeurs
delay(1000);

SetRegisterPin(0, LOW);
SetRegisterPin(1, HIGH);
SetRegisterPin(2, LOW);
SetRegisterPin(3, HIGH);
SetRegisterPin(4, LOW);
SetRegisterPin(5, HIGH);
SetRegisterPin(6, LOW);
SetRegisterPin(7, HIGH);
WriteRegister(); // on applique les valeurs
delay(1000);

Vous aimerez peut-être aussi