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 8 ■ Displays de cristal líquido<br />

211<br />

Uma variável inteira, para armazenar o pino utilizado pelo botão, é declarada e<br />

inicializada:<br />

int buttonPin=8;<br />

No loop setup() você define o display com 16 colunas e 2 linhas:<br />

lcd.begin(16, 2); // Define o display com 16 colunas e 2 linhas<br />

A referência para o pino analógico é definida como INTERNAL:<br />

analogReference(INTERNAL);<br />

Isso resulta em um intervalo maior de valores no ADC (Analog to Digital Converter,<br />

conversor analógico para digital) do Arduino. A tensão de saída do LM35DT em 100°C<br />

é de 1 V. Se você estivesse utilizando a referência padrão de 5 V, uma temperatura de<br />

50°C, que representa metade do alcance do sensor, acusaria uma leitura de 0,5 V =<br />

(0,5 / 5) * 1023 = 102 no ADC, o que representa apenas cerca de 10% de seu intervalo<br />

de valores possíveis. Quando utilizamos a voltagem de referência interna de 1,1 V, o<br />

valor do pino analógico em 50°C será de 0,5 V = (0,5 / 1,1) * 1023 = 465.<br />

Como você pode ver, isso é praticamente metade do intervalo máximo dos valores<br />

que o pino analógico pode ler (de 0 a 1023), portanto, a resolução e a precisão da<br />

leitura foram melhoradas, assim como a sensibilidade do circuito.<br />

Na sequência, o pino do botão é definido como entrada, e limpamos o display LCD:<br />

pinMode(buttonPin, INPUT);<br />

lcd.clear();<br />

No loop principal, o programa inicia definindo o cursor em sua posição inicial:<br />

lcd.setCursor(0,0);<br />

// Define o cursor na posição de início<br />

Depois, você lê um valor do sensor de temperatura no pino analógico 0:<br />

int sensor = analogRead(0);<br />

// Lê a temperatura do sensor<br />

Então, você lê o estado do botão e armazena o valor em buttonState:<br />

int buttonState = digitalRead(buttonPin);<br />

// Verifica se o botão foi pressionado<br />

Agora, você tem de descobrir se o botão foi ou não pressionado e, se afirmativo, deve<br />

alterar a escala de Celsius para Fahrenheit, ou vice-versa. Isso é feito utilizando uma<br />

instrução switch/case:<br />

switch (buttonState) { // Altera o estado da escala, caso tenha sido pressionado<br />

case HIGH:<br />

scale=-scale; // Inverte a escala<br />

lcd.clear();<br />

}

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

Saved successfully!

Ooh no, something went wrong!