Arduino - Sensor de Som - Servo Motor
Neste tutorial, vamos explorar como utilizar o sensor de som para controlar um servo motor. Especificamente, vamos nos aprofundar em duas aplicações interessantes:
- Interruptor por som: Quando um som é detectado (por exemplo, uma batida), o Arduino gira o servo motor para 90 graus se ele estiver em 0 grau, e para 0 grau se ele estiver em 90 graus.
- Relé ativado por som: Ao detectar um som, o Arduino gira o servo motor para 90 graus por um período de tempo específico e, em seguida, gira de volta para 0 grau.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Buy Note: For controlling multiple servo motors, use the PCA9685 16 Channel PWM Servo Driver Module to save MCU pins and simplify wiring.
Sobre o Servo Motor e o Sensor de Som
Se você não conhece o servo motor e o sensor de som (pinagem, como funcionam, como programar ...), aprenda sobre eles nos seguintes tutoriais:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Código Arduino - Interruptor por Som alterna o Ângulo do Servo Motor
O código abaixo alterna o ângulo do servo motor entre 0 e 90 graus cada vez que um som é detectado.
Passos Rápidos
- Conecte o Arduino ao PC via cabo USB
- Abra o Arduino IDE, selecione a placa e a porta corretas
- Copie o código acima e abra-o com o Arduino IDE
- Clique no botão Upload no Arduino IDE para carregar o código no Arduino
- Bata palmas na frente do sensor de som
- Veja a mudança do servo motor
Código Arduino - Servo Motor Ativado por Som por um Período de Tempo
O código abaixo gira o servo motor para 90 graus por um período de tempo quando um som é detectado. Após esse período, o servo motor é girado de volta para 0 grau.
Observe que o código acima utiliza a função delay() para simplificar. No entanto, se você incorporar código adicional, ele pode ficar bloqueado durante o tempo de delay. Para resolver isso, o código a seguir implementa uma abordagem não bloqueante usando a função millis() em vez de delay para evitar o bloqueio.