Manual

do

Maker

.

com

Sirene com Arduino

Sirene com Arduino

Sirene com Arduino

Para encerrar os posts de buzzer, vamos fazer uma sirene com Arduino, que utilizaremos nos exemplos com sensores, onde tocaremos esse som no buzzer para quando houver um alarme.

O som da sirene como se pode reparar, não é linear, ou seja, ouve-se uma escala larga de tons de grave a agudo e vice-versa. Com isso, podemos concluir que o som faz ondas, logo, para gerarmos tal onda utilizaremos a função matemática sin() (seno) e o pi, para transformar os graus em raio e gerar a frequência.

Temos um circulo perfeito e a partir do centro pegamos um ângulo - no exemplo, 30º. O seno do ângulo é a linha pontilha vertical que vai até o limite do ângulo - no exemplo, até o extremo do círculo. O coseno do ângulo é a pontilhada horizontal, chamada obscissa (nome horroroso, nem sei se é assim que se escreve).

A fórmula básica para seno ou coseno é:
2senX + 2cosX = 1

O seno e coseno dos principais ângulos:

(graus) 0,30, 45 ,60, 90
(seno) 0, 1/2, raiz(2/2), raiz(3/2), 1 
(coseno) 1,raiz(3/2), raiz(2/2), raiz(1/2), 1

Como se pode notar, os valores de coseno são a inversão dos valores de seno, então é muito fácil decorar, mas se quiser fazer os cálculos para outros ângulos, deixe-me discorrer a respeito.

Calcular seno e cosseno

triangulo_retangulo.png

O seno e cosseno são calculados a partir de um triângulo retângulo.

Um triângulo retângulo tem um ângulo de 90 graus e um ângulo agudo. A face oposta ao ângulo de 90 graus é chamado 'hipotenusa' e as outras duas faces são chamadas de 'catetos'. Só pra ficar bem completa a informação, a soma dos quadrados dos catetos é igual ao quadrado da hipotenusa:

b^{2}+c^{2} = a^{2}

Para calcular o seno e cosseno, primeiramente é necessário saber mais uma coisinha; a partir do ângulo agudo, a reta aposta é o seno. A reta que faz parte do ângulo agudo (adjacente à hipoternusa) é o cosseno.

O cálculo do seno então é:

sin = dfrac{b}{a}

E o cosseno:

cos = dfrac{c}{a}

A tangente é a divisão de um cateto pelo outro, em relação ao ângulo escolhido. Fim. Dá pra ir muito além dessa teoria e no exemplo usamos apenas o primeiro quadrante. Agora vem a parte legal; não precisaremos fazer essas contas utilizando a função sin para fazer a sirene com Arduino! Para fazer o som da sirene, apenas faremos um loop de 0 a 180 (representando graus) de forma que teremos uma onda que vai de -1 a 1. Para converter os graus em raio, utiliza-se o pi com uma precisão de 4 decimais. A fórmula do valor do sinal fica assim:

sin(x\*(3.1412/180)

Para o valor do tom dá-se uma 'ajeitada':
toneVal = 2000 + (sin(x*(3.1412/180))*100)

Com o setup configurado para saída no pino 8 do Arduino, o código fica assim:

float sinVal;
int toneVal;

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

void loop(){
    for (int x=0;x<180;x++){
        //converte graus em radianos
        sinVal = (sin(x*(3.1412/180)));
        //agora gera uma frequencia
        toneVal = 2000+(int(sinVal*100));
        //toca o valor no buzzer
        tone(8,toneVal);
        //atraso de 2ms e gera novo tom
        delay(2);
    }
}

Está pronta a sirene!
Vídeo da sirene com Arduino.

Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Próximo post a caminho!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.