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.

Commentaire
  • C est clair. C est precis. Ca marche
    Excellent MERCI

    DESTAILLEUR JM 13 décembre 2016 9 h 36 min Répondre
    • Merci pour votre commentaire, content que ce tuto vous serve, à bientôt

      Thierry Mormentyn 20 février 2017 14 h 29 min Répondre
  • merci pour cet article

    Thomas HOARAU 15 janvier 2017 20 h 37 min Répondre
  • Très intéressant, continuer vos tutoriels.

    Gérard Caussidéry 30 janvier 2017 18 h 39 min Répondre

Envoyer un commentaire

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