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 7 ■ Displays de LED<br />

187<br />

O que corresponde à primeira linha de A deslocada para a esquerda cinco vezes, e à<br />

primeira linha do Z deslocada para a direita três vezes (8 - 5). Você pode ver que o padrão<br />

da esquerda é o que você obtém ao deslocar a letra A cinco pixels para a esquerda,<br />

e o padrão da direita é o que você obteria se a letra Z rolasse para a direita por três<br />

pixels. O OU lógico, símbolo |, tem o efeito de mesclar esses dois padrões, criando:<br />

B11000011<br />

que corresponde ao resultado obtido se as letras A e Z estivessem lado a lado, e rolassem<br />

cinco pixels para a esquerda.<br />

A linha seguinte carrega esse padrão de bits na linha apropriada do buffer de tela:<br />

buffer[y] = ledOutput;<br />

scrollBit é acrescida em uma unidade:<br />

scrollBit++;<br />

Então uma instrução if verifica se o valor de scrollBit atingiu 7. Se afirmativo, ela o<br />

define novamente como 0 e eleva chrPointer em uma unidade, para que, da próxima<br />

vez que for chamada, a função exiba os dois próximos conjuntos de caracteres:<br />

if (scrollBit > 6) {<br />

scrollBit = 0;<br />

chrPointer++;<br />

}<br />

Por fim, o valor de counter é atualizado com o valor mais recente de millis():<br />

counter = millis();<br />

A função screenUpdate() simplesmente toma as oito linhas de padrões de bits que você<br />

carregou nos oito elementos do array de buffer, e escreve esses dados no chip; o chip,<br />

por sua vez, exibe o resultado na matriz:<br />

void screenUpdate() {<br />

for (byte row = 0; row < 8; row++) {<br />

writeData(row+1, buffer[row]);<br />

}<br />

}<br />

Depois de preparar essas seis funções, você finalmente atinge as funções setup() e<br />

loop() do programa. Na primeira, o chip é inicializado chamando initMAX7219(), um<br />

timer é criado e definido com um período de atualização de 10 mil microssegundos,<br />

e a função screenUpdate() é anexada. Assim como antes, isso garante que screenUpdate()<br />

seja ativada a cada 10 mil microssegundos, independentemente do que mais estiver<br />

ocorrendo.

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

Saved successfully!

Ooh no, something went wrong!