Ajuda com um buzzer

Boas.

No meu projecto tenho um buzzer e não consigo fazer com que ele toque apenas 1x, ou seja, o buzzer é activado quando clico num botão na aplicação Android, mas ele toca em modo loop, ou seja, eu quero que ele toque apenas 1x e ele não se cala. O que faço para ele apenas tocar 1x e apenas quando clico no tal botão? Tentei usar o noTone() mas sem sucesso.

Obrigado.

Dava bastante jeito que mostrasse o código que está a usar.

Bom dia

O Buzzer é acionado por tensão e não por frequencia, imagine-o como se fosse ligar e desligar um led.

Pequena rotina para ligar e desligar o buzzer por 1 segundo

byte liga_buzzer = 5; // pino de saída para o buzzer, podes usar o que melhor lhe convier

void setup() {

pinMode(liga_buzzer, OUTPUT); // seta o pino como saida

}

void loop() {

digitalWrite(liga_buzzer, HIGH); // liga o buzzer

delay(1000); // fica ligado por 1 segundo

digitalWrite(liga_buzzer, LOW); // desliga o buzzer

delay(1000); // fica DEsligado por 1 segundo

}

Esta rotina fará o buzzer emitir som de 1 em 1 segundo. É um "bip" bem incomodo he he.

Abraço a todos desde Brasil

@ joseclaudiogon: Se quer ajudar, comece por ler as regras do fórum. Já agora o código não sei se irá funcionar para todos os tipos de buzzer. Também não concordo com a afirmação "tensão e não por frequencia".

Boas.

Não mostrei o código porque queria uma ajuda mais "teorica", ou seja, o buzzer funciona da maneira X e para fazer Y temos que pensar da forma Z. Mas posso colocar o código à mesma.

@joseclaudiogon Obrigado pela ajuda, assim que chegar a casa (depois de sair do trabalho) vou tentar com a dica/ajuda que me deu. Obrigado.

Caro Luis Silva

Li sim as regras e não vi nada de "assustador" na minha mensagem além do meu interesse em ajudar. A rotina funciona, com certeza, porque eu a testei antes de enviar. Gostaria que em próxima oportunidade se quiser chamar minha atenção dando-me um "puxão de orelhas" faça-a com uma mensagem privada pois, este tipo de atitude é indelicada em um fórum público.

Peço desculpas a todos e sei que o fórum não se destina a este tipo de comunicação.

Obrigado a todos

José Claudio Gonçalves

Uma das regras é não fazer copy/paste de código sem colocar dentro da caixa específica.

Depois o luis foi bastante claro na explicação do código poder não funcionar devido ao tipo de buzzer usado.

Por último, se não houver frequência, não há som... ;)

joseclaudiogon: Caro Luis Silva

Li sim as regras e não vi nada de "assustador" na minha mensagem além do meu interesse em ajudar. A rotina funciona, com certeza, porque eu a testei antes de enviar. Gostaria que em próxima oportunidade se quiser chamar minha atenção dando-me um "puxão de orelhas" faça-a com uma mensagem privada pois, este tipo de atitude é indelicada em um fórum público.

Peço desculpas a todos e sei que o fórum não se destina a este tipo de comunicação.

Obrigado a todos

José Claudio Gonçalves

Se leu as regras, tem que as voltar a ler, porque não leu a parte:

7. If you are posting code or error messages, use "code" tags For code, error messages, program output, etc. select the code, and click the "Insert code" button, as shown

Depois a explicação que dá é muito má, isto é, completamente ao contrário:

O Buzzer é acionado por tensão e não por frequencia, imagine-o como se fosse ligar e desligar um led.

Não quer dizer exactamente o contrário: "O Buzzer é acionado por frequência e não por tensão"?!

Srs Luis e Bubulindo

Os senhores montaram o circuito e testaram a rotina? Quero acreditar que sim pois, afirmam que ela pode NÃO funcionar. Eu montei e afirmo COM CERTEZA que funciona perfeitamente.

Há sim mais de um tipo de Buzzers no mercado porém, o mais usual ou simples, funciona perfeitamente com a rotina que eu enviei. Estes buzzers funcionam com tensão e não por frequencia, ou seja, basta alimenta-lo com a tensão correta e eles "apitam".

Os senhores não estão confundindo BUZZER com AUTO FALANTE. Falamos a mesma língua mas, há diferenças sutis de um país para outro. Auto falantes necessitam de frequencia para funcionarem. É até uma pena que o microcontrolador só forneça um onda quadrada, o som é horrível.

A rotina foi enviada para ser entendida e não copiada, foi somente uma explicação do funcionamento. Na verdade ela nem é útil da forma como foi enviada.

Senhores, todos buscamos termos razão e sempre acreditamos que estamos certos mas, estamos sempre errados he he. Eu vou reler novamente as regras e evitar cometer erros no futuro.

Abraço a todos e desculpem-me

joseclaudiogon, não o vou contrariar, porque pelos vistos sabe muito mais disto que eu e deve ter muitos mais anos de experiência que eu. Coloquei no Google as palavras "buzzer arduino" e o primeiro resultado que me devolveu foi esta página. Sendo assim, a minha conclusão é que não é uma questão só de português porque o ingleses a este tipo de dispositivo também chamam buzzer ou piezo buzzer. Já agora, o 4º resultado é este e é outro tutorial de outra das grandes empresas desta área e o exemplo é muito semelhante ao anterior (e é novamente uma coisa que parece um buzzer mas funciona, segundo a sua lógica, como uma speaker).

O facto que fazes passar um dos exemplos do arduino como código para testar um buzzer deve indicar algo...

Pesquisando um pouco acerca da nomenclatura encontrei isto:

Don't confuse piezo transducers with piezo sounders or piezo buzzers. These behave in the same way as buzzers and have a built in oscillator and are switched on by a d.c. signal voltage. They are therefore limited to one frequency

Como disse, sem frequência não há som...

Boas.

Assunto resolvido. O problema que tinha não era propriamente com o buzzer, mas sim com uma variável que tinha criado (genero flag) que estava no local errado.

Obrigado pelas ajudas dadas.