Básico - Projeto 78

Interrupção externa no Arduino - liga e desliga com sensor touch TP223B

Objetivo

Neste projeto vou mostrar como realizar interrupções externas no Arduino através do sensor de toque capacitivo TTP2233B. Desta forma, ao tocarmos no sensor, um led irá ligar ou desligar sem que atrapalhe a rotina dos demais comandos do projeto.

Sensor Touch Capacitivo TTP223B: Sensor baseado no CI TTP223B que foi desenvolvido para detectar toques. Seu funcionamento é bem simples: ao tocar a região indicada, a saída do sensor é ativada (HIGH).

Obs.: Os sensores de toque, assim como os botões de pressão (push button ou chaves tácteis) apenas mudam seu estado enquanto estamos pressionando ou tocando, voltando ao seu estado original quando liberados. Neste projeto, teremos uma rotina para atribuir a um só sensor duas funções: ligar e desligar um componente eletrônico qualquer através de uma interrupção externa.

Conceitos sobre interrupção externa

Interrupção externa: É quando o programa do Arduino está instruído para reagir à mudança de um sinal externo, por exemplo,  mudança do nível lógico de um sinal gerado por um botão ou por um sensor qualquer (Referência Arduino).

  • A ideia de utilizar a interrupção externa no Arduino em certos projetos, é quando precisamos realizar duas ou mais tarefas ao mesmo tempo.
  • Uma interrupção no Arduino tem 2 pontos fundamentais:

a) A condição da interrupção: É o ato que indica a interrupção. Por exemplo, o toque em um botão indica que o Arduino deverá executar uma função extraordinária.

b) Função a ser executada: Após o ato da interrupção, o Arduino irá executar uma função pré determinada que poderá ser chamada de Rotina de Serviço de Interrupções (ISR)

Rotina de Serviço de Interrupções (ISR - Interrupt Service Routine): Como já mencionamos acima, ISR são funções a serem executadas simultaneamente após uma interrupção externa. Entretanto, estas funções são especiais e possuem algumas limitações, sendo:

  • Uma ISR não recebe argumentos e não retorna nada.
  • Uma ISR deverá ser a mais curta e rápida possível. Se o seu programa utiliza múltiplas ISRs, apenas uma poderá ser executada de cada vez.
  • A função delay() não funcionara em uma ISR.
  • A função millis() não poderá ser incrementada dentro de uma ISR.
  • A função delayMicroseconds() ao não utilizar nenhum contador, funcionará normalmente em uma ISR.

Aplicação

Para fins didáticos e projetos gerais.

Componentes necessários

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 400 pontos

Jumpers Kit cabos ligação macho / macho 1  
Sensor de toque capacitivo Sensor touch TP223B
1