Aqui usamos um elemento Piezo elétrico para detectar som, o que nos permite usá-lo como um sensor de golpes. Usamos a vantagem da capacidade do processadores para ler sinais analógicos através dos conversores analógico-digitais (ADC). Estes conversores fazem a leitura da voltagem e a transformam em um valor digitalmente codificado. Neste caso as placas Arduino transformam a voltagem para um valor entre 0 e 1024. 0 representa 0 volt enquanto que 1024 representam 5 volts na entrada de um dos 6 pinos analógicos.

Um Piezo é somente um dispositivo eletrônico que pode ser usado tanto para executar um som como para detectá-lo. Neste exemplo vamos conectar um Piezo elétrico no pino de entrada analógica 0, que tem a funcionalidade de fazer leituras de valores entre 0 e 5 volts, e não somente leituras básicas como HIGH e LOW.

Outra questão a comentar é que os Piezos elétricos tem polaridade, estes aparatos comerciais normalmente tem um cabo preto e um vermelho indicando como conectar na placa. Conectamos o cabo preto ao Terra e o cabo vermelho à entrada analógica. Também teremos que conectar um resistor com valor na faixa de Megaohms em paralelo ao Piezo elétrico, neste exemplo conectamos diretamente na fêmea. Às vezes é possível adquirir os dispositivos Piezo sem a capa plástica, assim eles serão somente um disco metálico e portanto mais fáceis de usar como sensores de entrada.

O exemplo do código captura o golpe, e se é mais forte que um certo limite enviará a mensagem de "Knock!" de volta ao computador através da porta serial. Para ver este texto você poderá usar o monitor serial do Arduino.

 

Exemplo de conexão de um Piezo elétrico no pino analógico 0 com um resistor.

 

Código

/* Sensor de golpes
* por DojoDave <http://www.0j0.org>
*
* Programa que utiliza um elemento piezoelétrico como um sensor de golpes.
*
* Nos temos basicamente que ler um pino analógico e detectar
* se o sinal ultrapassa um certo limite. Se isso ocorrer escrevemos
* "knock" na porta serial e alteramos o valor do led no pino 13.
*
* https://multilogica-shop.com/Aprendendo/Exemplos/Golpe
*/

int ledPin = 13; // led conectado ao pino digital 13
int knockSensor = 0; // sensor de golpes ligado ao pino analógico 0
byte val = 0; // varaiavel que armazena o valor lido no pino do sensor
int statePin = LOW; // variável usada para armazenar o ultimo status do led para fazer a alteracao
int THRESHOLD = 100; // limite utilizado para decidir se o som detectado é um golpe ou não

void setup() {
pinMode(ledPin, OUTPUT); // declera o ledPin como uma saida
Serial.begin(9600); // usar a porta serial
}

void loop() {
val = analogRead(knockSensor); // le o sensor e armazena o valor na variavel "val"
if (val >= THRESHOLD) {
statePin = !statePin; // altera o estado do ledPin (este truque nao utiliza ciclos de tempo)
digitalWrite(ledPin, statePin); // acende ou apaga o LED
Serial.println("Knock!"); // envia a string "Knock!" de volta para o computador
delay(10); // espera curta para previnir sobrecarga na porta serialcv
}
}


O conteúdo desta página é uma tradução para o português a partir do site original do Arduino.

Esta obra está licenciada sob uma Licença Creative Commons.

Creative Commons License