08.11.2017 Views

arduino_básico_Michael_McRoberts

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

364<br />

Arduino Básico<br />

Em seguida, você cria outra função, getTimeDate(), para obter a hora e a data do chip<br />

DS1307 de relógio em tempo real.<br />

void getTimeDate() {<br />

Para obter os dados referentes às horas, aos minutos, aos segundos, ao dia, mês e<br />

ano do RTC, você utiliza o comando .get(). Primeiramente, você obtém a hora do<br />

dispositivo, armazenando-a na variável hour.<br />

hour = RTC.get(DS1307_HR,true); // lê a hora e também atualiza todos os valores, utilizando true<br />

O comando requer dois parâmetros. O primeiro é uma flag para declarar qual elemento<br />

dos dados você deseja. Seus nomes tornam óbvias suas funções. O segundo<br />

parâmetro é false ou true. Se true, as constantes de tempo (DS1307_HR, DS1307_YR etc.) serão<br />

atualizadas com a data e hora atuais. Se false, elas simplesmente lerão os dados da<br />

última atualização. Como você deseja atualizar essas constantes apenas uma vez, no<br />

início da leitura de data, coloque uma flag true no primeiro comando .get() e uma<br />

false no restante.<br />

minute = RTC.get(DS1307_MIN,false); // lê os minutos sem atualização (false)<br />

seconds = RTC.get(DS1307_SEC,false); // lê os segundos<br />

day = RTC.get(DS1307_DATE,false); // lê a data<br />

month = RTC.get(DS1307_MTH,false); // lê o mês<br />

year = RTC.get(DS1307_YR,false); // lê o ano<br />

Depois, temos a rotina de inicialização:<br />

void setup() {<br />

Serial.begin(9600);<br />

Serial.println("Type any character to start");<br />

while (!Serial.available());<br />

Serial.println();<br />

Os sensores DS18B20 são inicializados e sua resolução é definida:<br />

sensors.begin();<br />

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

sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION);<br />

sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION);<br />

Em seguida, temos a seção que define a data e a hora no RTC. Você utiliza o comando<br />

.set(), cuja função é, essencialmente, o inverso da apresentada pelo comando .get().<br />

Antes que você defina o dispositivo, deve utilizar o comando .stop() para interrompê-lo.<br />

Assim que o tempo tiver sido definido, o comando .start() será utilizado para iniciar<br />

seu RTC com hora e data atualizadas.<br />

RTC.stop();<br />

RTC.set(DS1307_SEC,0); // define os segundos<br />

RTC.set(DS1307_MIN,15); // define os minutos<br />

RTC.set(DS1307_HR,14); // define as horas

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

Saved successfully!

Ooh no, something went wrong!