KY-036 Metal Touch Sensor Module

The KY-036 Metal Touch Sensor Module is an analog/digital sensor that uses a transistor to detect changes in electrical conductivity. When the transistor is touched with a finger, the conductivity changes and the module emits a digital and analog signal.

The digital output can be used a switch that changes state when touched. The analog output can measure the intensity of the touch. The detection threshold can be regulated using the on-board potentiometer.

Compatible with popular microcontroller boards like Arduino, ESP32, ESP8266 and Raspberry.

KY-036 Specifications

This module consists of a transistor to detect touch, an LM393 differential comparator to control the digital output, a 3296W potentiometer to adjust the detection threshold, 6 current limiting resistors, 2 indicator LEDs and 4 male header pins. The module features analog and digital outputs.

Operating voltage3.3V ~ 5.5V
Board Dimensions15mm x 36mm [0.6in x 1.4in]

Connection Diagram

Connect the module’s analog output (A0) to pin A0 on the Arduino, and the digital output (D0) to pin 7.

Connect the module’s power pin (+) and ground (G) to 5V and GND respectively.

KY-036Arduino
A0Pin A0
GGND
+5V
D0Pin 7

KY-036 Arduino Code

The following Arduino sketch will read values from the module. When you touch the transistor, the digital output will send a HIGH signal, turning the Arduino’s LED on.

The analog output returns a high value when no touch is detected, the value depends on the supplied voltage and the position of the potentiometer. When you touch the transistor, the output value will decrease.

int digitalPin = 7;   // KY-036 digital interface
int analogPin = A0;   // KY-036 analog interface
int ledPin = 13;      // Arduino LED pin
int digitalVal;       // digital readings
int analogVal;        // analog readings

void setup()
{
  pinMode(digitalPin,INPUT); 
  pinMode(analogPin, INPUT);
  pinMode(ledPin,OUTPUT);      
  Serial.begin(9600);
}

void loop()
{
  // Read the digital inteface
  digitalVal = digitalRead(digitalPin); 
  
  if(digitalVal == HIGH) 
  {
    digitalWrite(ledPin, HIGH); // Turn ON Arduino's LED
  }
  else
  {
    digitalWrite(ledPin, LOW);  // Turn OFF Arduino's LED
  }

  // Read analog interface
  analogVal = analogRead(analogPin);
  Serial.println(analogVal);  // Print analog value to serial

  delay(100);
}

Use Tools > Serial Plotter on the Arduino IDE to visualize the values on the analog output.

Downloads

Leave a Comment