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 3 ■ Efeitos com LEDs<br />

93<br />

Depois de esperar 100ms para que o buffer serial se encha com os dados enviados,<br />

você declara e inicializa o inteiro numChar com o número de caracteres da string de texto.<br />

Assim, se enviássemos este texto no Serial Monitor<br />

R255, G255, B255<br />

O valor de numChar seria 17. Ele seria 17 e não 16, pois ao final de cada linha de texto há<br />

um caractere invisível, o caractere NULL, que informa ao Arduino quando atingimos<br />

o final da linha de texto.<br />

A próxima instrução if verifica se o valor de numChar é maior que 15; se for, ela o define<br />

como 15. Isso garante que você não estoure o array char buffer[18].<br />

Em seguida, temos um comando while, algo que você ainda não viu, por isso deixeme<br />

explicá-lo.<br />

Sua sintaxe é a seguinte:<br />

while(expression) {<br />

// instrução(ões)<br />

}<br />

Em seu código, o loop while é:<br />

while (numChar--) {<br />

buffer[index++] = Serial.read();<br />

}<br />

A condição que ele está verificando é numChar. Em outras palavras, o loop verifica se<br />

o valor armazenado no inteiro numChar não é zero. Note que numChar tem -- depois dele.<br />

Isso é um pós-decremento: o valor é diminuído depois de utilizado. Se você tivesse<br />

utilizado --numChar, o valor em numChar seria diminuído (subtraído em 1) antes de ser<br />

avaliado. Em nosso caso, o loop while verifica o valor de numChar e, apenas depois, subtrai<br />

1 dele. Se o valor de numChar for diferente de zero antes do decremento, o código<br />

do bloco será executado.<br />

numChar está definida como o comprimento da string de texto que você digitou na janela<br />

do Serial Monitor. Assim, o código do loop while executará várias vezes.<br />

O código do loop while é:<br />

buffer[index++] = Serial.read();<br />

Isso define cada elemento do array buffer como os caracteres lidos a partir da linha<br />

serial. Em outras palavras, preenche o array buffer com as letras que você digitou na<br />

janela de texto do Serial Monitor.<br />

O comando Serial.read() lê dados seriais, um bit por vez. Dessa forma, agora que seu array<br />

de caracteres foi preenchido com os caracteres que você digitou no monitor serial, o loop<br />

while terminará assim que numChar atingir zero (por exemplo, o comprimento da string).

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

Saved successfully!

Ooh no, something went wrong!