Toque melodias através de um sensor touch com buzzer 15

Sensores de toque podem ser uma ferramenta muito útil em substituição a botões. Hoje veremos como utilizar o Sensor Touch Capacitivo TTP223B com um Arduino para tocar uma melodia através de um buzzer!

Sobre o Sensor Touch Capacitivo TTP223B

Neste módulo temos um CI chamado TTP223B, que é o responsável por detectar toques. Ao tocar a área demarcada com círculos, a saída é ativada em nível alto por cerca de 12s e depois retorna ao nível baixo.

sensor_touch

Sua utilização é muito parecida com botões push button, a diferença está no touch, que tocado de forma suave, já realiza a ativação.

O sensor funciona com 5V no VCC (pino central), GND e SIG (sinal, pino digital). Quando alimentado, um led verde existente no módulo acende.

Circuito de utilização com Arduino Uno

Para utilizar o módulo como um botão para tocar uma melodia, você vai precisar de um Arduino (Uno, Nano, Pro Mini, etc), um buzzer com resisitor de 100Ω, um protoboard, além do Sensor Touch Capacitivo.

Basta realizar as conexões a seguir:

OBS: Caso você possua o módulo Buzzer 5V passivo, pode substituir o buzzer, protoboard e resistor 100 Ω utilizado na figura.

Programando o Arduino com Sensor Touch

Para a programação, é necessário o uso de um arquivo chamado picthes.h, que contém as notas musicais mais utilizadas. Para facilitar, usaremos um exemplo pronto contendo este arquivo, para não criar um novo.

Abra na IDE Arduino: Arquivo => Exemplos => 02. Digital => ToneMelody.

IDE Arduino Tone Melody

Repare que, quando abrir o arquivo, há duas abas, uma referente ao sketch principal e uma com o arquivo “pitches.h”.

Abas Tone Melody

Substitua o sketch original ToneMelody pelo sketch a seguir:

#include "pitches.h"

int touch = 2; //pino SIG do sensor touch
// notas da melodia
int melody[] = {
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};

// duraçao das notas: 4 = um quarto, 8 = um oitavo, etc.:
int noteDurations[] = {
  4, 8, 8, 4, 4, 4, 4, 4
};

void setup() {
  // declara o pino de sinal do sensor como entrada:
  pinMode(touch,INPUT);
  
}

void loop() { 
  int botao = digitalRead(touch); // realiza leitura do pino de sinal e armazena na variavel botao
  if(botao == 1){ // se botao for igual a 1, ou seja, pressionado
    for (int thisNote = 0; thisNote < 8; thisNote++) {

    // para calcular a duraçao da nota, faz um segundo
    // dividido pelo tempo da nota.
    //para um quarto = 1000 / 4, para um oitavo = 1000/8, etc.
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(8, melody[thisNote], noteDuration);

    // para distinguir as notas, seta um tempo minimo entre elas.
    // a duraçao da nota + 30%:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // para a melodia
    noTone(8);
   }
  }
}

Salve o sketch acima com outro nome (Arquivo => Salvar como…) e o carregue na placa Arduino. Quando estiver carregado, toque o Sensor touch e ouvirá a melodia.

sensor_touch_capacitativo

Caso queira, crie sua própria melodia, tendo em referências as notas musicais no arquivo “pitches.h”. Há várias disponíveis pela internet, como clássicos estilo Mario Bros ou Star Wars.

Também utilize o Sensor Touch Capacitivo para acionar leds, relés e tudo mais que sua imaginação permitir! Com um toque mais suave que um push button!

Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

15 Comentários

  1. Este sensor, ttp233 vem com os jumpers A e B abertos, já na configuração que preciso. Led aceso com aproximação do dedo, líquido, etc. Desliga quando este se afasta, independente do tempo de trabalho. Após 7,5 segundos ele já apaga com os obstáculos a sua frente. Gediane, fico grato por informações.

  2. Há alguma configuração para acionamento fixo durante tempo de líquido presente, como sensor de nível de água, ou seja, se manter ligado todo tempo que houver presença do volume e somente desligar quando este não houver. Por exemplo, durante 2 horas, se manter ligado? Falo do sensor capacitivo ttp223, impresso vermelho ok? Parabéns por seu trabalho. Grato.

    1. Olá Samuel!

      Você pode colocar esse problema com mais detalhes?

      Abraços!

      André – Equipe MakerHero

  3. Olá pessoal,

    Fiquei em dúvida, este sensor funciona apenas com o dedo? Ou se for tocado com algum objeto ele também reconhecerá o siinal?

    Pergunto isso pois a idéia é utilizá-lo para montar uma maquete de estacionamento, onde carrinhos passariam por cima dele, ai ele sentiria e enviaria esse sinal para uma base dados.

    Caso ele não funcione para essa finalidade, alguém tem uma sugestão de qual sensor utilizar?

    Obrigado!

    1. Olá Daniel, perdoe-me pela demora!

      Eu só fiz os testes com o dedo, creio que para este tipo de projeto você poderia utilizar um sensor de luminosidade, pois quando o carrinho estiver em cima do sensor, estará escuro, e quando não tiver carrinho, estará com luz ambiente.

      Já fiz um estacionamento também utilizando chaves tipo switch.

      Espero ter ajudado a tempo, obrigada por sua pergunta!

  4. Olá Gedeane, estou com uma dúvida na saída dele (Sig). Esta saída envia sinal positivo ou negativo?

    1. Olá Everson.

      No meu caso, o sinal era positivo. Houve alguma divergência em seu código? Comente suas dúvidas que na medida do possível iremos ajudar.

      Grande abraço

      1. Olá Gedeane, obrigado pela resposta.
        Então, para comentar em relação a minha dúvida.
        Eu tenho uma placa controladora que controla 16 relés, utilizo ela par iluminação em automação residencial! Cada porta dessa placa pode ser acionada tanto manual como por um aplicativo, só que, quando manual, preciso enviar um sinal negativo pra ela, o GND, por isso da pergunta. Com esse sensor não tem essa possibilidade certo?!

  5. Boa tarde, é possível utilizar uma lamina de vidro normal entre o dedo e a PCB? Queria utilizar com botão para um sistema smart mirror.

    1. Olá Arthur, desculpe-me pela demora!
      Já utilizei algumas versões com uma chapa de acrílico, porém não fiz testes em vidro. Se eu souber outras informações, comentarei aqui mesmo.
      Abraço!

  6. Olá, funciona com 3.3V? Pretendo usar um ESP8266-01 para alimentá-lo.

    1. Olá Luís!

      Ainda não utilizei com 5V, mas em breve farei o teste e te aviso, tudo bem?

    2. Olá Luis, perdoe-me pela demora!
      Os testes foram realizados em 5V, porém sua tensão de operação é de 2~5,5V, você pode utilizar em seus projetos com ESP!
      Abraço!