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) ouLSBFIRST(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
OUTPUTantes 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.