Arduino - Sensor de Som - Relé

Neste tutorial, vamos explorar como usar o sensor de som para controlar um relé. Especificamente, vamos ver duas aplicações interessantes:

Conectando o relé a uma lâmpada, fita LED, motor ou atuador... podemos usar o sensor de som para controlar a lâmpada, a fita LED, o motor ou o atuador...

Sobre o Relé e o Sensor de Som

Se você não conhece o relé e o sensor de som (pinagem, como funcionam, como programar ...), aprenda sobre eles nos seguintes tutoriais:

Diagrama de Ligação

Diagrama de Ligação do Arduino com Sensor de Som e Relé

This image is created using Fritzing. Click to enlarge image

Código Arduino - Interruptor por Som Alterna o Relé

O código abaixo alterna o estado do relé cada vez que um som é detectado.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-sound-sensor-relay */ #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define RELAY_PIN A2 // Arduino pin connected to LED's pin int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor int relayState = LOW; // the current state of relay void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); // toggle state of relay relayState = !relayState; // control relay arccoding to the toggrelay state digitalWrite(RELAY_PIN, relayState); } }

Passos Rápidos

  • Conecte o Arduino ao PC com um cabo USB
  • Abra o Arduino IDE, selecione a placa e a porta corretas
  • Copie o código acima e abra-o no Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
Arduino IDE carregar código
  • Bata palmas na frente do sensor de som
  • Veja a mudança no estado do relé

Explicação do Código

Leia a explicação linha por linha nas linhas de comentário do código-fonte!

Código Arduino - Relé Ativado por Som por um Período de Tempo

O código abaixo liga o relé por um período de tempo quando um som é detectado. Depois desse período, o relé é desligado.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-sound-sensor-relay */ #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define RELAY_PIN A2 // Arduino pin connected to the relay's pin #define TIME_PERIOD 5000 // in milliseconds int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); // turn on relay digitalWrite(RELAY_PIN, HIGH); delay(TIME_PERIOD); // turn off relay digitalWrite(RELAY_PIN, LOW); } }

Observe que o código acima usa a função delay() para simplificar. Porém, se você adicionar mais código, ele pode ficar bloqueado durante o tempo de espera. Para resolver isso, o código a seguir usa uma abordagem não bloqueante com a biblioteca ezLED. Nos bastidores, a biblioteca ezLED usa a função millis() em vez de delay para evitar o bloqueio.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-sound-sensor-relay */ #include <ezLED.h> // ezLED library #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define RELAY_PIN A2 // Arduino pin connected to the relay's pin #define TIME_PERIOD 5000 // in milliseconds ezLED relay(RELAY_PIN); // create a relay object that attach to pin RELAY_PIN int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { relay.loop(); // MUST call the relay.loop() function in loop() lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); relay.turnON(); // turn on relay immediately relay.turnOFF(TIME_PERIOD); // turn off relay after TIME_PERIOD } }

Passos Rápidos

  • Conecte o Arduino ao PC com um cabo USB
  • Abra o Arduino IDE, selecione a placa e a porta corretas
  • Vá até o ícone Libraries na barra esquerda do Arduino IDE.
  • Pesquise “ezLED” e encontre a biblioteca de LED da ArduinoGetStarted
  • Clique no botão Install para instalar a biblioteca ezLED.
Biblioteca de LED do Arduino
  • Copie o código acima e abra-o no Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
Arduino IDE carregar código
  • Bata palmas na frente do sensor de som
  • Veja a mudança no estado do relé

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!