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 2 ■ Acendendo as luzes<br />

61<br />

Tipo de dados RAM Intervalo numérico<br />

unsigned long 4 bytes 0 a 4.294.967.295<br />

float 4 bytes -3,4028235E+38 a 3,4028235E+38<br />

double 4 bytes -3,4028235E+38 a 3,4028235E+38<br />

string 1 byte + x Sequência de caracteres<br />

array 1 byte + x Coleção de variáveis<br />

Cada tipo de dado utiliza determinada quantidade de memória: algumas variáveis<br />

utilizam apenas 1 byte de memória, enquanto outras, 4 bytes ou mais (não se preocupe<br />

em saber o que é um byte por enquanto; discutiremos isso futuramente). Note que<br />

você não pode copiar dados de um tipo de dados para outro. Em outras palavras, se<br />

x for um int e y uma string, x = y não dará certo, pois os tipos de dados são diferentes.<br />

O Atmega168 tem 1 kB (1.000 bytes) e o Atmega328, 2 kB (2.000 bytes) de SRAM;<br />

isso não é muita memória. Em programas de tamanho considerável, com muitas variáveis,<br />

você poderá facilmente ficar sem memória se não empregar os tipos de dados<br />

corretos. Como você utilizou int (que usa até 2 bytes, e pode armazenar um número<br />

de até 32.767) para armazenar o número de seu pino, que poderia ser no máximo 13<br />

em seu Arduino (e 54 no Arduino Mega), acabou consumindo mais memória do que<br />

o necessário. Poderíamos ter economizado memória utilizando o tipo de dados byte,<br />

que pode armazenar um número entre 0 e 255 — intervalo mais do que suficiente<br />

para armazenar o número de um pino de entrada/saída.<br />

Em seguida, temos<br />

pinMode(button, INPUT);<br />

Isso diz ao Arduino que você deseja utilizar o pino digital 2 (button = 2) como INPUT.<br />

Você utilizará o pino digital 2 para escutar quando o botão é pressionado, por isso<br />

seu modo deve ser definido como entrada.<br />

No loop principal do programa, você verifica o estado do pino 2 com esta instrução:<br />

int state = digitalRead(button);<br />

Isso inicializa um inteiro (sim, é um desperdício, e seria melhor utilizar um booleano),<br />

state, e então define seu valor como o valor do pino digital 2. A instrução digitalRead<br />

lê o estado do pino dentro dos parênteses, retornando esse estado para o valor inteiro<br />

ao qual você o atribuiu. Depois, você pode verificar o valor em state para ver se o<br />

botão foi ou não pressionado:<br />

if (state == HIGH && (millis() - changeTime) > 5000) {<br />

// Chama a função para alterar as luzes<br />

changeLights();<br />

}

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

Saved successfully!

Ooh no, something went wrong!