Magos do Arduino

Sensor de Batida (Knock)

Aprenda a utilizar um sensor de batida (knock) com o Arduino

Magos do Arduino

Sensor de Batida (Knock)

O sensor de batida piezoelétrico é um componente que detecta vibrações.

Sensor de Batida (Knock)

Ele usa o efeito piezoelétrico para gerar um sinal elétrico proporcional às vibrações.

Seu princípio de funcionamento baseia-se no efeito piezoelétrico, onde o cristal piezo gera tensão elétrica quando submetido a pressão ou vibração.

O sinal gerado é de baixa tensão e em forma de onda alternada, proporcional à intensidade das vibrações.

Ele é resistente a altas temperaturas e vibrações intensas.

A leitura do sensor no Arduino é feita através de uma conexão de sinal a um pino analógico do Arduino.

Sensor de Batida (Knock)

Neste projeto você criará um circuito que faz o uso de um sensor de batida (knock) com o Arduino.

Para a criação deste circuito serão necessários os seguintes componentes:

  • 1x Breadboard
  • 1x Arduino UNO
  • 1x LED
  • 1x Resistor de 220-330 Ohms
  • 1x Sensor de Batida (Knock)
  • Jumpers

Circuito Sensor de Batida (Knock)

Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.

Circuito Sensor de Batida (Knock)

Código fonte para o circuito do sensor de batida (knock)

Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.

/**
 * Código do curso Magos do Arduino para utilizar um Sensor de Batida (Knock) 
 * com o Arduino. 
 * 
 * Utilize o sensor de batida para acender e apagar um LED quando o sensor detectar
 * um sinal maior do que o limite definido no código do Arduino.
 *
 * (c) Copyright KazaleIT
 * @kazaleitoficial no YouTube
 **/

#define PINO_LED 2
#define PINO_SENSOR_BATIDA A0
#define LIMITE_SENSOR 40

int valorSensor = 0;  // armazena o valor do sensor
int controleLed = LOW; // armazena se o LED está aceso ou apagado

void setup() {
  pinMode(PINO_LED, OUTPUT);
}

void loop() {
  // realiza a leitura do sensor
  valorSensor = analogRead(PINO_SENSOR_BATIDA);

  // caso valor lido seja maior do que o limite altera o status do LED
  if (valorSensor >= LIMITE_SENSOR) {
    // inverte o valor corrente do LED
    controleLed = !controleLed;
    digitalWrite(PINO_LED, controleLed);
  }

  delay(100);
}