Explorando o Sensor Touch Capacitivo TTP223B na Robótica Educacional
Neste exercício, vamos explorar como o Sensor Touch Capacitivo TTP223B funciona e como ele pode ser integrado com microcontroladores como o Arduino para acender um LED. O objetivo é utilizar o sensor para detectar um toque e, com isso, ativar um LED, criando uma interação simples e eficaz entre o usuário e o sistema.
Mecânica por trás do Sensor Capacitivo TTP223B
O TTP223B é um sensor de toque capacitivo, o que significa que ele pode detectar variações na capacitância causadas pelo toque humano. A capacitância é a capacidade de um material de armazenar carga elétrica. Quando você toca a superfície do sensor, seu corpo (que é condutor de eletricidade) altera a capacitância na região do sensor. O TTP223B detecta essa alteração e gera um sinal de saída para indicar que houve um toque.
Funcionamento básico: O sensor possui um eletrodo que detecta a capacitância do ambiente. Ao tocar a superfície do sensor, seu corpo se torna parte do circuito elétrico, mudando a capacitância e, assim, acionando a saída do sensor.
Como ele detecta o toque?
O TTP223B detecta o toque por meio da variação da capacitância entre a superfície do sensor e o corpo do usuário. A mudança de capacitância é registrada pelo circuito interno do sensor, que aciona a saída digital (HIGH ou LOW).
-
Touch = HIGH: Quando o sensor detecta um toque (ou alteração de capacitância), ele gera um sinal de saída HIGH (nível lógico 1).
-
Touch = LOW: Quando não há toque, o sensor permanece com a saída LOW (nível lógico 0).
O comportamento de saída do sensor pode ser usado para ativar ou desativar um componente, como um LED.
Como programá-lo para ativar o LED?
Quando o sensor detecta um toque, ele envia um sinal para o microcontrolador (como o Arduino). Usando um código simples, você pode programar o Arduino para acender um LED quando o sinal do sensor for HIGH (toque detectado). Quando o sinal for LOW (sem toque), o LED será apagado
Componentes
-
Arduino UNO
-
Protoboard
-
Jumpers
-
Led Verde
-
Resistor 220
-
Sensor Touch Capacitivo
Conexões
Sensor Touch TTP223B:
-
VCC (pino de alimentação) -> Conectar ao pino 5V do Arduino.
-
GND (pino de terra) -> Conectar ao pino GND do Arduino.
-
IO (pino de sinal) -> Conectar ao pino 2 do Arduino (este é o pino que vai ler o sinal do sensor).
LED Verde:
-
O ânodo (perna longa) do LED vai para o pino 8 do Arduino, que é o pino de saída no seu código.
-
O cátodo (perna curta) do LED deve ser conectado ao GND do Arduino através de um resistor de 220Ω para limitar a corrente que passa pelo LED e protegê-lo.
Sobre o Código:
pinMode(TOUCH, INPUT_PULLUP); : O pino 2 do Arduino está configurado para entrar como um INPUT_PULLUP. Isso significa que o Arduino utiliza um resistor pull-up interno para garantir que o sinal seja HIGH quando não houver toque (sem interferência externa). O resistor pull-up puxa o sinal para HIGH quando o sensor não está sendo tocado.
Se o sensor for tocado, ele altera o estado do LED:
-
ligado = !ligado; : Essa linha inverte o estado do LED. Se estava desligado, agora ele será ligado, e vice-versa.
-
digitalWrite(LED_VERDE, ligado ? LOW : HIGH); : O LED será ligado (HIGH) ou desligado (LOW) dependendo do valor da variável ligado.
while (digitalRead(TOUCH) == LOW); : O código aguarda até que o sensor de toque seja solto (retorne para HIGH), para evitar um acionamento repetido do LED se o toque for mantido por muito tempo.
delay(50); : Um pequeno delay é usado para "debounce", ou seja, para garantir que o toque não seja lido mais de uma vez em um curto espaço de tempo devido a ruídos ou instabilidades no sinal do sensor.
Diagrama

Programa
#define TOUCH 2
#define LED_VERDE 8
bool ligado = false; // LED inicia apagado
void setup() {
pinMode(TOUCH, INPUT_PULLUP); // Usa resistor pull-up interno
pinMode(LED_VERDE, OUTPUT);
digitalWrite(LED_VERDE, LOW);
}
void loop() {
if (digitalRead(TOUCH) == LOW) { // Se pressionado
ligado = !ligado; // Alterna o estado
digitalWrite(LED_VERDE, ligado ? LOW : HIGH); // Atualiza o LED
// Aguarda o botão ser solto para evitar acionamento duplo
while (digitalRead(TOUCH) == LOW);
delay(50); // Debounce
}
}