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.

350<br />

Arduino Básico<br />

Depois, a função verifica se algum código de erro foi gerado, utilizando o comando<br />

.errorCode(). Consulte a documentação da biblioteca para uma lista de códigos de erro.<br />

if (card.errorCode()) {<br />

Se um erro foi gerado, o código dentro dos parênteses é executado, exibindo o código<br />

do erro e seus dados:<br />

PgmPrint("SD error: ");<br />

Serial.print(card.errorCode(), HEX);<br />

Serial.print(',');<br />

Serial.println(card.errorData(), HEX);<br />

Por fim, se um erro ocorreu, uma função while(1) cria um loop infinito, para impedir<br />

que o sketch faça qualquer coisa:<br />

while(1);<br />

A próxima função é writeCRLF(), cujo objetivo é simplesmente escrever um retorno de<br />

carro (CR) e uma alimentação de linha (LF) no arquivo. O parâmetro transmitido a<br />

ela é uma referência a um arquivo.<br />

void writeCRLF(SdFile& f) {<br />

O código em seus parênteses utiliza o comando write() para escrever dois bytes no<br />

arquivo: \r e \n, códigos para operações de retorno de carro e alimentação de linha,<br />

respectivamente. O comando write() é o que chamamos de função sobrecarregada,<br />

ou seja, uma função definida diversas vezes para aceitar tipos de dados diferentes.<br />

Utilizamos o parâmetro uint8_t para dizer à função que você deseja chamar a versão<br />

da função que aceita inteiros não sinalizados de 8 bits.<br />

f.write((uint8_t*)"\r\n", 2);<br />

A próxima função é projetada para escrever números no arquivo; ela aceita uma<br />

referência ao arquivo e um número inteiro não sinalizado de 32 bits.<br />

void writeNumber(SdFile& f, uint32_t n) {<br />

Um array de comprimento 10, que armazena inteiros não sinalizados de 8 bits, é<br />

criado, assim como uma variável i, inicializada como 0:<br />

uint8_t buf[10];<br />

uint8_t i = 0;<br />

Em seguida, temos o loop do-while, cuja função é transformar engenhosamente o<br />

número inteiro em uma string, um dígito de cada vez:<br />

do {<br />

i++;<br />

buf[sizeof(buf) - i] = n%10 + '0';<br />

n /= 10;<br />

} while (n);

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

Saved successfully!

Ooh no, something went wrong!