.. note::
Hello, welcome to the SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebook! Dive deeper into Raspberry Pi, Arduino, and ESP32 with fellow enthusiasts.
**Why Join?**
- **Expert Support**: Solve post-sale issues and technical challenges with help from our community and team.
- **Learn & Share**: Exchange tips and tutorials to enhance your skills.
- **Exclusive Previews**: Get early access to new product announcements and sneak peeks.
- **Special Discounts**: Enjoy exclusive discounts on our newest products.
- **Festive Promotions and Giveaways**: Take part in giveaways and holiday promotions.
👉 Ready to explore and create with us? Click [|link_sf_facebook|] and join today!
.. _2.1.3_c:
2.1.3 Touch Switch Module
====================================
Introduction
-------------------
In this project, you will learn about touch switch module. It can replace
the traditional kinds of switch with these advantages: convenient operation,
fine touch sense, precise control and least mechanical wear.
Required Components
------------------------------
In this project, we need the following components.
.. image:: ../img/2.1.3component.png
:width: 700
:align: center
It's definitely convenient to buy a whole kit, here's the link:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Name
- ITEMS IN THIS KIT
- LINK
* - Raphael Kit
- 337
- |link_Raphael_kit|
You can also buy them separately from the links below.
.. list-table::
:widths: 30 20
:header-rows: 1
* - COMPONENT INTRODUCTION
- PURCHASE LINK
* - :ref:`cpn_gpio_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_led`
- |link_led_buy|
* - :ref:`cpn_touch_switch`
- |link_touch_buy|
Schematic Diagram
-----------------
.. image:: ../img/2.1.3circuit.png
:width: 500
:align: center
Experimental Procedures
------------------------------
**Step 1:** Build the circuit.
.. image:: ../img/2.1.3fritzing.png
:width: 700
:align: center
**Step 2:** Change directory.
.. raw:: html
.. code-block::
cd ~/raphael-kit/c/2.1.3/
**Step 3:** Compile.
.. raw:: html
.. code-block::
gcc 2.1.3_TouchSwitch.c -lwiringPi
**Step 4:** Run.
.. raw:: html
.. code-block::
sudo ./a.out
While the code is running, the red LED lights up; when you tap on the touch switch module, the yellow LED turns on.
.. note::
If it does not work after running, or there is an error prompt: \"wiringPi.h: No such file or directory\", please refer to :ref:`install_wiringpi`.
**Code**
.. code-block:: c
#include
#include
#define touchPin 0
#define led1 3
#define led2 2
int main(void)
{
// When initialize wiring failed, print message to screen
if(wiringPiSetup() == -1){
printf(etup w"siringPi failed !");
return 1;
}
pinMode(touchPin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
while(1){
// touch switch high, led1 on
if(digitalRead(touchPin) == 1){
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
printf("You touch it! \r\n");
}
// touch switch low, led2 on
if(digitalRead(touchPin) == 0){
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
}
}
return 0;
}
**Code Explanation**
.. code-block:: c
#define touchPin 0
#define led1 3
#define led2 2
Pin GPIO17, GPIO22 and GPIO27 of the T_Extension Board is corresponding to
the GPIO0, GPIO3 and GPIO2 in wiringPi. Assign GPIO0, GPIO3 and GPIO2 to
``touchPin``, ``led1`` and ``led2``.
.. code-block:: c
pinMode(touchPin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Set ``led1``, ``led2`` as output to write value to them and set ``touchPin`` as input to
read value from it.
.. code-block:: c
while(1){
// touch switch high, led1 on
if(digitalRead(touchPin) == 1){
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
printf("You touch it! \r\n");
}
// touch switch low, led2 on
if(digitalRead(touchPin) == 0){
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
}
}
Set an infinite loop, when you tap on the touch switch module, ``touchPin`` is high, led1 will light up and print "You touch it!" . When touchPin is low, led2 will light up.
Phenomenon Picture
------------------------
.. image:: ../img/2.1.3touch_switch_module.JPG
:width: 500
:align: center