Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]

shiftOut()


Description

Emet un par un les bits d'un octet de données (8 bits). Démarre aussi bien par le bit de poids fort (càd le bit le plus à gauche) ou par le bit de poids faible (càd le bit le plus à droite). Chaque bit est mis à son tour sur une broche de donnée, après quoi une broche d'horloge est inversée pour indiquer que le bit est disponible.

Ceci est connu sous le nom de protocole de communication série synchrone et c'est une façon habituelle pour les microcontrôleurs de communiquer avec les capteurs et avec les autres microcontrôleurs. Les deux entités restent synchronisés, et communiquent à la vitesse maximale, dès lors qu'ils partagent la même ligne d'horloge. Ceci est souvent dénommé dans les documentations de composants par le terme d'Interface Périphérique Série (SPI).

Syntaxe

shiftOut(BrocheDonnées, BrocheHorloge, BitOrdre, Valeur)

Paramètres

  • BrocheDonnées : la broche sur laquelle sort chaque bit (int)
  • BrocheHorloge : la broche qui s'inverse une fois que la broche de donnée a été mise à la valeur voulue (int)
  • BitOrdre : fixe l'ordre dans lequel les bits doivent être émis; aussi bien MSBFIRST ou LSBFIRST. (pour Most Significant Bit First (Bit de poids fort en 1er), ou Least Significant Bit First (Bit de poids faible en 1er)
  • Valeur : la valeur à émettre. (octet = byte)

Valeur renvoyée

Aucune

Note

La Broche de donnée et la broche d'horloge doivent toujours être configurées en SORTIE à l'aide de l'instruction pinMode().

L'instruction shiftOut est écrite pour émettre 1 octet (8 bits), et par conséquent, il est nécessaire d'émettre 2 octets pour des valeurs supérieures à 255.


// Emission série en mode "Bit de Poids fort en 1er"
int data = 500;
// émission de l'octet de poids fort (en 1er)
shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // le décalage de 8 bits vers la droite isole les bits forts  
// émission de l'octet de poids faible
shiftOut(data, clock, MSBFIRST, data);

// Ou bien émission série en mode "Bit de Poids faible en 1er"
data = 500;
// émet le bit de poids faible en 1er
shiftOut(dataPin, clock, LSBFIRST, data);  
// émet le bit de poids fort
shiftOut(dataPin, clock, LSBFIRST, (data >> 8)); // le décalage de 8 bits vers la droite isole les bits forts
 

Exemple

Pour le circuit d'accompagnement, voir le tutoriel sur l'utilisation d'un 74HC595


//**************************************************************//
//  Name    : shiftOutCode, Hello World                         //
//  Author  : Carlyn Maw,Tom Igoe                               //
//  Date    : 25 Oct, 2006                                      //
//  Version : 1.0                                               //
//  Notes   : Code for utilisant un CI 74HC595 Registre à décalage           //
//          : pour compter de 0 to 255                            //
//****************************************************************

//Broche connectée sur ST_CP du 74HC595
int latchPin = 8;
//Broche connectée sur SH_CP du 74HC595
int clockPin = 12;
////Broche connectée sur DS of 74HC595
int dataPin = 11;

void setup() {
  //Configure les broches en sortie
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  //séquence de comptage
  for (int j = 0; j < 256; j++) {
    //mise à 0 de la broche latchpin maintenue basse pour toute la durée de la transmission
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, j);  
    //remise à 1 de la broche latchpin pour signaler au CI
    //qu'il n'est plus nécessaire d'attendre de l'information
    digitalWrite(latchPin, HIGH);
    delay(1000);
  }
}
 

Commentaires utilisateurs

Aucun commentaire


Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino ou à l'adresse suivante : support_at_mon-club-elec_point_fr

Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.