shiftOut()

Descripción

Desplaza hacia la salida un byte de datos un bit a cada vez. Comienza a partir del bit más significativo (más a la izquierda) o menos significativo (más a la derecha). Cada bit se escribe a su vez en un pin de datos, después de lo cual un pulso de reloj se activa (pasa a nivel alto, y a continuación, a nivel bajo) para indicar que el bit está disponible.

Nota: si estamos conectados con un dispositivo que está sincronizado por flancos de subida, necesitamos asegurarnos de que el pin de reloj está a nivel bajo antes de llamar a shiftOut(), por ejemplo, con una llamada a digitalWrite (pinReloj, LOW).

Esta es una implementación de software; véase también la biblioteca SPI, que proporciona una implementación de hardware que es más rápida, pero sólo funciona en pines específicos.

Sintaxis

shiftOut(dataPin, clockPin, bitOrder, value)

Parámetros

  • dataPin: el pin por el que sale cada bit (int)
  • clockPin: el pin que cambia cada vez que dataPin ha sido establecido a su valor correcto (int)
  • bitOrder: dirección de desplazamiento de los bits; MSBFIRST o LSBFIRST. (Primero el Bit Más Significativo, o, Primero el Bit Menos Significativo)
  • value: los datos que se desplazan a la salida. (byte)

Retornos

  • Ninguno

※ Nota:

Los dataPin y clockPin deben estar ya configurados como salida conto pinMode().

shiftOut actualmente escribe en la salida 1 byte (8 bits) por lo que requiere una operación de dos pasos para valores de salida mayores que 255.

// Hacer esto para MSBFIRST serieint data = 500;// desplaza a la salida el byte altoshiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // desplaza a la salida el byte bajoshiftOut(dataPin, clock, MSBFIRST, data);// O hacer esto para LSBFIRST seriedata = 500;// desplaza a la salida el byte bajoshiftOut(dataPin, clock, LSBFIRST, data); // desplaza a la salida el byte altoshiftOut(dataPin, clock, LSBFIRST, (data >> 8));

Ejemplo

Para acompañamiento del circuito, ver el tutorial para control de un Registro de Desplazamiento 74HC595.

//**************************************************************// // Name : shiftOutCode, Hello World // // Author : Carlyn Maw,Tom Igoe // // Date : 25 Oct, 2006 // // Version : 1.0 // // Notes : Code for using a 74HC595 Shift Register // // : to count from 0 to 255 // //**************************************************************** // Pin conectado ato ST_CP del 74HC595 int latchPin = 8; //Pin conectado a SH_CP del 74HC595 int clockPin = 12; ////Pin conectado a DS del 74HC595 int dataPin = 11; void setup() { // configurar pines de salida que ya están direccionados en el bucle principal pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { //count up routine for (int j = 0; j < 256; j++) { // pone a masa latchPin y lo mantiene a nivel bajo durante la transmisión digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, j); // devuelve el latch pin a nivel alto indicando al chipque // ya no necesita escuchar la información digitalWrite(latchPin, HIGH); delay(1000); } }

ARDUINO BUY RECOMMENDATION

Arduino UNO R3
Arduino Starter Kit
Disclosure: Some links in this section are Amazon affiliate links. If you make a purchase through these links, we may earn a commission at no extra cost to you.
Additionally, some links direct to products from our own brand, DIYables.

※ OUR MESSAGES