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.

Capítulo 17 ■ Comunicação via Ethernet<br />

427<br />

sprintf(message, "Int. Temp: %d C (%d F) Ext. Temp: %d C (%d F). Tweeted from Arduino. %ld",<br />

int(itempC), int(itempF), int(etempC), int(etempF), millis());<br />

O motivo de você adicionar o valor de millis() ao final do tweet é que o Twitter não<br />

postará uma mensagem idêntica à anterior. Se as temperaturas não sofreram alteração<br />

desde o último tweet, a mensagem será a mesma e o Twitter retornará um código de<br />

erro. Como você pretende obter atualizações regulares a cada período de intervalo,<br />

adicionando o valor de millis() ao final você garante que a mensagem será diferente<br />

da última enviada. Da mesma forma, certifique-se de que o comprimento do tweet<br />

não exceda 140 caracteres; do contrário, você terminará com mensagens estranhas na<br />

linha do tempo de seu Twitter.<br />

Agora que compilou sua mensagem, você pode passá-la à função tweet():<br />

tweet(message);<br />

Em seguida, temos o loop principal, que você atingirá apenas se o primeiro tweet na<br />

rotina de inicialização tiver êxito:<br />

void loop()<br />

Primeiramente, você executa um comando maintain() na biblioteca EthernetDHCP, o qual<br />

mantém ativo e válido o endereço IP atribuído automaticamente.<br />

EthernetDHCP.maintain();<br />

As temperaturas são atualizadas:<br />

sensors.requestTemperatures();<br />

Então, você utiliza um comando sprintf, compilando a saída para o monitor serial.<br />

sprintf é mais conveniente do que uma lista completa de comandos Serial.print(), por<br />

isso vale a pena utilizá-lo, ainda que isso aumente o tamanho de seu código.<br />

sprintf(serialString, "Internal Temp: %d C %d F. External Temp: %d C %d F", int(itempC),<br />

int(itempF), int(etempC), int(etempF));<br />

Depois, exibimos a saída no monitor serial após um breve intervalo:<br />

delay(500);<br />

Serial.println(serialString);<br />

Serial.println();<br />

Em seguida, você verifica se o tempo de intervalo transcorreu desde o último tweet<br />

e, se afirmativo, envia mais um tweet. Você calcula o valor de lastTime + interval, e verifica<br />

se o valor atual em millis() é maior que ele (ou seja, se transcorreu o período<br />

de intervalo desde o último tweet). Se afirmativo, compilamos uma nova mensagem<br />

e efetuamos um novo tweet.<br />

if (millis() >= (lastTime + interval)) {<br />

sprintf(message, "Int. Temp: %d C (%d F) Ext. Temp: %d C (%d F). Tweeted from<br />

Arduino. %ld", int(itempC), int(itempF), int(etempC), int(etempF), millis());

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

Saved successfully!

Ooh no, something went wrong!