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 4 ■ Sonorizadores e sensores simples<br />

113<br />

Depois do upload do código, o LED piscará rapidamente duas vezes para indicar que<br />

o programa iniciou. Você, agora, pode bater no sensor (primeiro coloque-o sobre uma<br />

superfície plana) ou apertá-lo com seus dedos. Toda vez que o Arduino detectar uma<br />

batida ou aperto, o LED acenderá, e depois apagará lentamente. (Note que o valor de<br />

limiar (threshold), no código, foi definido para este disco piezo específico que utilizei<br />

na construção do projeto. Talvez seja necessário ajustar esse valor, dependendo do<br />

tipo e do tamanho do piezo que você utilizar para seu projeto. Um valor menor é<br />

mais sensível, e um maior, menos sensível.)<br />

Projeto 13 – Sensor de batida piezo – Análise do código<br />

Não há comandos novos no código deste projeto, mas analisaremos como ele funciona<br />

da mesma forma.<br />

Primeiramente, você prepara as variáveis necessárias para seu programa, que são<br />

bem autoexplicativas:<br />

int ledPin = 9; // LED no pino digital 9<br />

int piezoPin = 5; // Piezo no pino analógico 5<br />

int threshold = 120; // O valor do sensor a ser atingido antes da ativação<br />

int sensorValue = 0; // Uma variável para armazenar o valor lido do sensor<br />

float ledValue = 0; // O brilho do LED<br />

Na função de inicialização, o ledPin é definido como saída e, como já vimos, faz com<br />

que o LED pisque rapidamente duas vezes, para indicar que o programa iniciou sua<br />

execução:<br />

void setup() {<br />

pinMode(ledPin, OUTPUT);<br />

digitalWrite(ledPin, HIGH); delay(150); digitalWrite(ledPin, LOW); delay(150);<br />

digitalWrite(ledPin, HIGH); delay(150); digitalWrite(ledPin, LOW); delay(150);<br />

}<br />

No loop principal, você primeiro lê o valor analógico do pino analógico 5, ao qual<br />

o piezo está conectado:<br />

sensorValue = analogRead(piezoPin);<br />

Depois, o código verifica se esse valor é maior ou igual (>=) ao limiar que você definiu,<br />

ou seja, se ele representa uma batida ou pressão. (O piezo é muito sensível, como<br />

você perceberá se definir o limiar com um valor muito baixo.) Se afirmativo, o código<br />

define ledValue como 255, voltagem máxima do pino digital PWM 9:<br />

if (sensorValue >= threshold) {<br />

ledValue = 255;<br />

}

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

Saved successfully!

Ooh no, something went wrong!