08.11.2017 Views

arduino_básico_Michael_McRoberts

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capítulo 6 ■ Contadores binários<br />

141<br />

Depois, na inicialização, os pinos são todos definidos como saídas:<br />

pinMode(latchPin, OUTPUT);<br />

pinMode(clockPin, OUTPUT);<br />

pinMode(dataPin, OUTPUT);<br />

O loop principal simplesmente executa um loop for, contando de 0 a 255. Em cada<br />

iteração do loop, o latchPin é definido como LOW, para permitir a entrada de dados. Na<br />

sequência, chamamos a função shiftOut, passando o valor de i, do loop for, para a<br />

função. Depois, latchPin é definido como HIGH, impedindo a entrada de mais dados e<br />

definindo as saídas dos oito pinos. Por fim, há um intervalo de meio segundo, antes<br />

que se inicie a próxima iteração do loop:<br />

void loop() {<br />

// conta de 0 a 255<br />

for (int i = 0; i < 256; i++) {<br />

// define latchPin como LOW, para permitir o fluxo de dados<br />

digitalWrite(latchPin, LOW);<br />

shiftOut(i);<br />

// define latchPin como HIGH, para travar e enviar os dados<br />

digitalWrite(latchPin, HIGH);<br />

delay(500);<br />

}<br />

}<br />

A função shiftOut recebe como parâmetro um byte (número de 8 bits), que será seu<br />

número entre 0 e 255. Você escolheu um byte para esse caso, pois ele tem exatamente<br />

8 bits de comprimento, e você tem de enviar apenas oito bits ao registrador de deslocamento:<br />

void shiftOut(byte dataOut) {<br />

Depois, inicializamos uma variável booleana, pinState, que armazenará o estado no<br />

qual você deseja que o pino relevante esteja, quando os dados forem enviados (1 ou 0):<br />

boolean pinState;<br />

Os pinos de dados e do clock são definidos como LOW para limpar as linhas de dados<br />

e do clock, deixando-as prontas para o envio de novos dados:<br />

digitalWrite(dataPin, LOW);<br />

digitalWrite(clockPin, LOW);<br />

Depois disso, você está pronto para enviar os oito bits em série para o registrador 595,<br />

um bit de cada vez. Um loop for que itera oito vezes é preparado:<br />

for (int i=0; i

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!