Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Toc-toc

Aqui usamos um elemento piezoelétrico/buzzer para detectar sons, o que nos permitirá usá-lo como um sensor de batidas à porta. O que se passa aqui é que nos permitimos usar a capacidade dos microprocessadores de ler sinais analógicos via o hardware chamado de conversor analógico-digital. Esses conversores leem um valor de tensão elétrica e transformam-no em um valor codificado digitalmente. No caso das placas Arduino, transformamos a tensão elétrica em um valor entre 0 e 1023, sendo que 0 representa zero volts e 1023, 5 volts, aplicada em uma das seis entradas analógicas disponíveis.

Um elemento piezoelétrico nada mais é do que um dispositivo eletrônico que pode tanto ser usado para tocar notas musicais, como para detectar sons. No exemplo que se segue, ligamos o elemento piezoelétrico ao pino analógico 0, que apresenta-nos a função de ler um valor entre 0 e 5 volts e não somente HIGH ou LOW.

Uma outra coisa a ser lembrada é que esses dispositivos têm polaridade, sendo que normalmente vêm com os seus terminais coloridos de vermelho (+) e preto (-). O terminal vermelho vai ligado à entrada analógica do Arduino e o preto, no GND. Além disso, é necessário conectar um resistor na faixa dos megaohms em paralelo ao elemento piezoelétrico; na foto abaixo, vê-se que conectamos o resistor diretamente nos soquetes do Arduino. Algumas vezes é possível comprar o elemento piezoelétrico sem encapsulamento plástico e, nesse caso, ele terá aparência similar a de um disco metálico com duas perninhas.

O código de exemplo capturará o bater da porta e, caso seja mais intenso que um certo limiar, o Arduino enviará a frase "Toc-toc" para o computador via porta serial. Para visualizar o texto, você pode usar o Arduino serial monitor.

Exemplo de conexão do buzzer/elemento piezoelétrico ao pino analógico 0, com um resistor

Código


/*Toc-toc
 * por DojoDave <https://www.0j0.org>
 *
 * Programa que usa um elemento piezoelétrico como se 
 * fosse um sensor de batidas à porta.
 *
 * Basicamente temos que escutar a um pino analógico e
 * detectar se o sinal ultrapassa um certo limiar. Escreve-se
 * "Toc-toc" à porta serial nesse caso e altera-se o estado
 * do LED no pino 13.
 *
 * https://www.arduino.cc/en/Tutorial/Knock
 */

int ledPin = 13;      // LED conectado ao pino 13 de controle
int knockSensor = 0;  // sensor de batidas ligado ao pino analógico 0
byte val = 0;         // variável a guardar o valor lido do pino do sensor
int statePin = LOW;   // variável a guardar o último estado do LED
int THRESHOLD = 100;  // valor limiar que decide quando o som detectado é uma batida

void setup() {
 pinMode(ledPin, OUTPUT); // declarar o ledPin como saída
 Serial.begin(9600);       // usar a porta serial
}

void loop() {
  val = analogRead(knockSensor);    // ler o sensor e guardá-lo em "val"
  if (val >= THRESHOLD) {
    statePin = !statePin;           // mudar o estado de ledPin (este artifício não usa ciclo de execução)
    digitalWrite(ledPin, statePin); // liga ou desliga o LED
    Serial.println("Toc-toc");       // envia a frase "Toc-toc" ao computador, seguido por um retorno de linha
    delay(10);                      // pequena espera para evitar sobrecarga na saída serial
   }
}