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 15 ■ Leitura e escrita de dados em um cartão SD<br />

365<br />

RTC.set(DS1307_DOW,7); // define o dia da semana<br />

RTC.set(DS1307_DATE,3); // define a data<br />

RTC.set(DS1307_MTH,10); // define o mês<br />

RTC.set(DS1307_YR,10); // define o ano<br />

RTC.start();<br />

O cartão SD é inicializado:<br />

Serial.println("Initialising SD Card...");<br />

// inicializa o cartão SD em SPI_HALF_SPEED, para evitar erros de barramento com as protoboards.<br />

// Utilize SPI_FULL_SPEED para um melhor desempenho, caso seu cartão suporte essa opção.<br />

if (!card.init(SPI_HALF_SPEED)) error("card.init failed");<br />

// inicializa um volume FAT<br />

if (!volume.init(&card)) error("volume.init failed");<br />

// abre o diretório raiz<br />

if (!root.openRoot(&volume)) error("openRoot failed");<br />

Serial.println("SD Card initialised successfully.");<br />

Serial.println();<br />

Em seguida, temos o loop principal. Nele, abrimos o arquivo. Dessa vez, você utiliza<br />

a flag O_APPEND.<br />

file.open(&root, name, O_CREAT | O_APPEND | O_WRITE);<br />

Depois, você chama a função getTimeDate(), para obter as definições de hora e data<br />

do RTC:<br />

getTimeDate();<br />

Esses valores são utilizados para criar a marcação de horário (timestamp) do arquivo:<br />

file.timestamp(7, year, month, day, hour, minute, seconds);<br />

Agora, você chama a função getTemperature(), para obter a temperatura do primeiro<br />

dispositivo:<br />

getTemperature(insideThermometer);<br />

As temperaturas são impressas no monitor serial, seguidas da escrita da marcação<br />

de horário, e depois as temperaturas são escritas no arquivo:<br />

Serial.print("Inside: ");<br />

Serial.print(tempC);<br />

Serial.print(" C ");<br />

Serial.print(tempF);<br />

Serial.println(" F");<br />

writeNumber(file, year);<br />

writeString(file, "/");<br />

writeNumber(file, month);

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

Saved successfully!

Ooh no, something went wrong!