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 />

161<br />

led[5] = B10111101;<br />

led[6] = B10000001;<br />

led[7] = B11111111;<br />

Analisando o array anterior, você pode imaginar a imagem que será exibida, que<br />

é uma caixa dentro de uma caixa. Os 1s indicam os LEDs que acenderão, e os 0s<br />

indicam os LEDs que ficarão apagados. Você pode, evidentemente, ajustar os 1s e 0s<br />

como quiser, e criar um sprite 8 x 8 de sua escolha.<br />

Depois disso, utilizamos a função Timer1. Primeiramente, ela tem de ser inicializada<br />

com a frequência na qual será ativada. Nesse caso, você define o período como 10<br />

mil microssegundos, ou um centésimo de segundo. Assim que a interrupção tiver<br />

sido inicializada, você deve anexar a ela uma função que será executada sempre que<br />

o período de tempo for atingido. Esta é a função screenUpdate(), que disparará a cada<br />

centésimo de segundo:<br />

// define um timer com duração de 10000 microssegundos (1/100 de segundo)<br />

Timer1.initialize(10000);<br />

// anexa a função screenUpdate ao timer de interrupção<br />

Timer1.attachInterrupt(screenUpdate);<br />

No loop principal, um loop for percorre cada um dos oito elementos do array led e<br />

inverte o conteúdo, utilizando o operador bit a bit ~, ou NÃO. Isso simplesmente transforma<br />

a imagem binária em um negativo dela mesma, transformando todos os 1s em 0s<br />

e todos os 0s em 1s. Então, esperamos 500 milissegundos antes de repetir o processo.<br />

for (int i=0; i> 1; // deslocamento para a direita<br />

}

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

Saved successfully!

Ooh no, something went wrong!