shiftOut()

shiftOut(pinoDado, pinoClock, ordem, valor)

Precisa controlar vários LEDs ou saídas sem gastar um monte de pinos? O shiftOut() "empurra" um byte inteiro, bit por bit, por um único pino de dados, usando outro pino como clock. É a base para conversar com registradores de deslocamento como o 74HC595.

Sintaxe

shiftOut(pinoDado, pinoClock, ordem, valor);

Parâmetros

  • pinoDado: pino por onde cada bit sai (deve estar como OUTPUT).
  • pinoClock: pino que gera o pulso de clock a cada bit (deve estar como OUTPUT).
  • ordem: MSBFIRST (bit mais significativo primeiro) ou LSBFIRST (menos significativo primeiro).
  • valor: o byte a enviar (0 a 255).

Retorno

Nada (void).

Exemplo

const int DADO   = 11;
const int CLOCK  = 12;
const int LATCH  = 8;   // pino de trava do 74HC595

void setup() {
  pinMode(DADO, OUTPUT);
  pinMode(CLOCK, OUTPUT);
  pinMode(LATCH, OUTPUT);
}

void loop() {
  digitalWrite(LATCH, LOW);
  shiftOut(DADO, CLOCK, MSBFIRST, 0b10101010);
  digitalWrite(LATCH, HIGH);  // atualiza as saídas de uma vez
  delay(500);
}

Notas e cuidados

  • Os dois pinos (dado e clock) precisam estar como OUTPUT antes de usar.
  • O shiftOut() envia 8 bits por vez; para mais bits, chame a função várias vezes em sequência.
  • Com o 74HC595, use um pino de latch para segurar as saídas até terminar de enviar todos os bits.

Quer aprender a usar isso em projetos reais, do zero?

Conhecer o Curso Maker