shiftIn()
Description :
Lit un octet (8 bits) de données, bit par bit, à partir d’une broche de données. L’opération commence par le bit de poids fort (le plus à gauche) ou le bit de poids faible (le plus à droite). Pour chaque bit, la broche d’horloge est mise à l’état haut, le bit suivant est lu sur la ligne de données, puis la broche d’horloge est mise à l’état bas.
Remarque : Si vous interagissez avec un périphérique cadencé par fronts montants, vous devez vous assurer que la broche d’horloge est à l’état bas avant le premier appel à shiftIn(), par exemple avec digitalWrite(clockPin, LOW).
Remarque : il s’agit d’une implémentation logicielle ; Arduino fournit également une bibliothèque SPI qui utilise l’implémentation matérielle, qui est plus rapide mais ne fonctionne que sur des broches spécifiques.
Syntaxe :
Utilisez la fonction suivante pour lire les données série de manière synchrone :
byte incoming = shiftIn(dataPin, clockPin, bitOrder)
Paramètres :
La fonction admet les paramètres suivants :
- dataPin : broche de lecture des données. Types de données autorisés : int.
- clockPin : broche fournissant le signal de synchronisation.
- bitOrder : ordre de décalage des bits : MSBFIRST ou LSBFIRST (bit de poids fort en premier ou bit de poids faible en premier).
Retours :
La fonction renvoie un octet (0 – 255) représentant les 8 bits lus sur le périphérique. Type de données : byte.
Exemple de code :
#define DATA_PIN 4 // Broche connectée à la sortie de données série #define CLOCK_PIN 5 // Broche connectée à l'entrée d'horloge (CLK) void setup() { pinMode(DATA_PIN, INPUT); pinMode(CLOCK_PIN, OUTPUT); Serial.begin(9600); } void loop() { // Lire 8 bits de la ligne de données en utilisant shiftIn() byte dataByte = shiftIn(DATA_PIN, CLOCK_PIN, MSBFIRST); // Imprimer l'octet au format binaire Serial.print("Received Byte: "); Serial.println(dataByte, BIN); delay(1000); // Attendez avant la prochaine lecture }
Source : https://docs.arduino.cc/language-reference/en/functions/advanced-io/shiftIn/