ESP32 - Sensor de Toque
Este tutorial ensina como usar o ESP32 com o sensor de toque (também conhecido como interruptor de toque ou botão de toque).
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Sobre o Sensor de Toque
Pinagem do Sensor de Toque
O sensor de toque tem 3 pinos:
- Pino GND: conecte este pino ao GND (0V)
- Pino VCC: conecte este pino ao VCC (5V ou 3.3v)
- Pino SIGNAL: é um pino de saída: LOW quando NÃO está sendo tocado, HIGH quando está sendo tocado. Este pino precisa ser conectado a um pino de entrada do ESP32.

Como o Sensor de Toque Funciona
- O estado do pino SIGNAL é LOW quando o sensor de toque NÃO está sendo tocado
- O estado do pino SIGNAL é HIGH quando o sensor de toque está sendo tocado
ESP32 - Sensor de Toque
Podemos conectar o pino SIGNAL do sensor de toque a um pino de entrada do ESP32 e usar o código do ESP32 para ler o estado do sensor de toque.
Diagrama de Ligação entre o Sensor de Toque e o ESP32
- Como conectar o ESP32 e o sensor de toque usando uma protoboard

This image is created using Fritzing. Click to enlarge image
Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.
- Como conectar o ESP32 e o sensor de toque usando uma placa breakout com bornes de parafuso

Como Programar o Sensor de Toque
- Inicialize o pino do ESP32 no modo de entrada digital usando a função pinMode(). Por exemplo, o pino GPIO18
pinMode(18, INPUT_PULLUP);
- Leia o estado do pino do ESP32 usando a função digitalRead().
int inputState = digitalRead(18);
Sensor de Toque - Código ESP32
O código abaixo lê o estado do sensor de toque e o imprime no Serial Monitor.
/*
* Este código de ESP32 foi desenvolvido por pt.newbiely.com
* Este código de ESP32 é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/esp32/esp32-touch-sensor
*/
#define SENSOR_PIN 18 // ESP32 pin GPIO18 connected to the sensor's SIGNAL pin of touch sensor
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// initialize the ESP32's pin as aninput
pinMode(SENSOR_PIN, INPUT);
}
void loop() {
// read the state of the the input pin:
int state = digitalRead(SENSOR_PIN);
// print state to Serial Monitor
Serial.println(state);
}
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
- Copie o código acima e cole na Arduino IDE.
- Compile e faça o upload do código para a placa ESP32 clicando no botão Upload na Arduino IDE
- Toque o sensor com o dedo e solte.
- Veja o resultado no Serial Monitor. Ele fica assim:
8
Serial.println("Hello World!");
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
0
0
0
1
1
1
1
1
1
0
0
Como detectar a mudança de estado de LOW para HIGH
/*
* Este código de ESP32 foi desenvolvido por pt.newbiely.com
* Este código de ESP32 é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/esp32/esp32-touch-sensor
*/
#define SENSOR_PIN 18 // ESP32 pin GPIO18 connected to the sensor's SIGNAL pin of touch sensor
// Variables will change:
int lastState = LOW; // the previous state from the input pin
int currentState; // the current reading from the input pin
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// initialize the ESP32's pin as aninput
pinMode(SENSOR_PIN, INPUT);
}
void loop() {
// read the state of the the input pin:
currentState = digitalRead(SENSOR_PIN);
if (lastState == LOW && currentState == HIGH)
Serial.println("The sensor is touched");
// save the the last state
lastState = currentState;
}