Selectronic UNO : ajouter des sorties avec le 74HC595

 1 décembre 2016 - 
Tutoriels

74HC595Aujourd’hui nous allons apprendre à utiliser le composant 74HC595, il s’agit d’un circuit intégré permettant d’agrandir le nombre de sorties numériques de votre carte programmable comme par exemple la carte Arduino UNO. Pour la réalisation, nous utiliserons la carte Selectronic UNO qui est un clone de la carte Arduino UNO, voici un article parlant de cette carte : Selectronic Uno : le clone parfait de l’Arduino Uno R3.

Liste des composants utilisés :

  • Selectronic UNO
  • Cordon USB-A / USB-B 1m
  • Circuit 74HC595
  • Plaque d’essai
  • 8 LEDs
  • 8 résistances 220Ω
  • Fils

Le Starter Kit Selectronic UNO comporte tous les composants utilisés dans ce tutoriel.

Comment fonctionne le 74HC595?

Le circuit 74HC595 permet comme dit plus haut d’augmenter le nombre de sorties numérique mais comment fait-il? Pour réaliser cela, le circuit communique avec votre carte programmable via un bus de données de 3 entrées. Ainsi en utilisant 3 pins de votre carte Selectronic UNO, vous pouvez commander 8 sorties. Vous pouvez augmenter le nombre de sorties en ajoutant des circuits 74HC595 tout en gardant le nombre de pins utilisés par le UNO à 3.

Réalisation du circuit

Voici le circuit à réaliser :

schéma

Pour tester le composant, vous pouvez utiliser une plaque d’essai.

montage

Réalisation du programme

Copiez le programme suivant dans le logiciel Arduino.

#define numOfRegisterPins 8

int SER_Pin = 8;   //pin 14 sur le 75HC595
int RCLK_Pin = 9;  //pin 12 sur le 75HC595
int SRCLK_Pin = 10; //pin 11 sur le 75HC595


boolean registers[8];
int i;


//Enregistrer et afficher les valeurs dans le registre
//Executer uniquement APRES que toutes les valeurs aient été programmées
void writeRegisters();


void setup(){
  
  pinMode(SER_Pin, OUTPUT);
  pinMode(RCLK_Pin, OUTPUT);
  pinMode(SRCLK_Pin, OUTPUT);

  registers[0] = LOW;
  registers[1] = HIGH;
  registers[2] = LOW;
  registers[3] = HIGH;
  registers[4] = LOW;
  registers[5] = HIGH;
  registers[6] = LOW;
  registers[7] = HIGH;
  writeRegisters();
}

void loop(){
  
  for(i = 0; i < 8; i++){
    if( registers[i] == HIGH)
      registers[i] = LOW;
    else
      registers[i] = HIGH;
  }
  
  writeRegisters();  //Doit être exécuté pour appliquer les changements
  //Executer seulement une fois que toutes les valeurs ont été enregistrées comme vous le souhaitiez.
  delay(1000);
}


void writeRegisters(){
  
  digitalWrite(RCLK_Pin, LOW);
  
  for(int i = numOfRegisterPins - 1; i >=  0; i--){
    digitalWrite(SRCLK_Pin, LOW);
    digitalWrite(SER_Pin, registers[i]);
    digitalWrite(SRCLK_Pin, HIGH);
  }
  
  digitalWrite(RCLK_Pin, HIGH);
}

Avant de le téléverser, essayons de comprendre le code. Le pin 12 du composant sert de verrou. Il met à jour l’état des sorties seulement quand il passe à l’état haut. Nous allons donc le mettre à l’état bas, faire les modifications et le remettre à l’état haut.

digitalWrite(RCLK_Pin, LOW);

Maintenant nous pouvons envoyer les données. Le composant récupère chaque état au front montant de l’horloge SRCLK, c’est-à-dire quand le pin passe de l’état bas à l’état haut. Ainsi, on passe l’horloge à l’état bas, on écrit l’état de la sortie et enfin on met à l’état haut l’horloge pour demander au composant de récupérer la valeur.

digitalWrite(SRCLK_Pin, LOW);
digitalWrite(SER_Pin, registers[i]);
digitalWrite(SRCLK_Pin, HIGH);

Une fois que nous avons envoyé toutes les données, il faut remettre l’horloge RCLK à l’état haut.

digitalWrite(RCLK_Pin, HIGH);

Résultat

Voici ce que réalise ce programme après avoir été téléversé.

réalisation

Vous pouvez bien sûr modifier l’affichage des LEDs pour donner un autre effet.

Aller plus loin

Comme dit plus haut, vous pouvez ajouter d’autres composants 74HC595 pour augmenter le nombre de sorties. Pour cela, réaliser le schéma suivant :

schéma pour deux 74HC595

Au niveau du programme, vous devez juste doubler la variable « numOfRegisterPins ».

Maintenant, vous pouvez avoir autant de sorties que vous voulez. Voici un exemple de projet intéressant à faire qui demande justement énormément de sorties : un cube à LED.

J’espère que cela vous a plu. Si vous avez des questions, n’hésitez pas à laisser un commentaire.

Envoyer un commentaire

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