Get tutorials Raspberry Pi Sensor Kit V2.0 for Raspberry Pi B+

Lesson 24 Touch Switch

Introduction

A touch sensor operate with the conductivity of human body. When you touch the metal on the base electrode of the transistor, the level of pin SIG will turn over.


 


Components

- 1 * Raspberry Pi

- 1 * Breadboard

- 4 * Jumper wires (Male to Male, 2 red and 2 black)

- 1 * Network cable (or USB wireless network adapter)

- 1 * Touch sensor module

- 1 * Dual-Color LED module

- 2 * 3-Pin anti-reverse cable

 

Experimental Principle

In this experiment, touch the base electrode of the transistor by fingers to make it conduct as human body itself is a kind of conductor and an antenna that can receive electromagnetic waves in the air. These electromagnetic wave signals collected from the human body are amplified by the transistor and processed by the comparator on the module to output steady signals. The schematic diagram of the module is as shown below:

 


Experimental Procedures

Step 1: Build the circuit


Raspberry Pi

T-Cobbler

Touch Sensor Module

GPIO0

GPIO17

SIG

5V

5V0

VCC

GND

GND

GND

 

Raspberry Pi

T-Cobbler

Dual-Color LED Module

GPIO1

GPIO18

R

GND

GND

GND

GPIO2

GPIO27

G

 

 

For C language users:

Step 2: Change directory

 cd /home/pi/SunFounder_SensorKit_for_RPi2/C/24_touch_switch/

Step 3: Compile

gcc touch_switch.c -lwiringPi

Step 4: Run

sudo ./a.out

 

For Python users:

Step 2: Change directory

 cd /home/pi/SunFounder_SensorKit_for_RPi2/Python/

Step 3: Run

sudo python 24_touch_switch.py

 

Now, touch the metal disk, you can see the LED change its colors and "ON" and "OFF" printed on the screen.

 

 

C Code


#include <wiringPi.h>
#include <stdio.h>

#define TouchPin	0
#define Gpin		1
#define Rpin		2

int tmp = 0;

void LED(int color)
{
	pinMode(Gpin, OUTPUT);
	pinMode(Rpin, OUTPUT);
	if (color == 0)
	{
		digitalWrite(Rpin, HIGH);
		digitalWrite(Gpin, LOW);
	}
	else if (color == 1)
	{
		digitalWrite(Rpin, LOW);
		digitalWrite(Gpin, HIGH);
	}
	else
		printf("LED Error");
}

void Print(int x){
	if (x != tmp){
		if (x == 0)
			printf("...ON\n");
		if (x == 1)
			printf("OFF..\n");
		tmp = x;
	}
}

int main(void)
{
	if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen
		printf("setup wiringPi failed !");
		return 1; 
	}

	pinMode(TouchPin, INPUT);
	
	while(1){
		LED(digitalRead(TouchPin));	
		Print(digitalRead(TouchPin));	
	}
	return 0;
}



Python Code



#!/usr/bin/env python
import RPi.GPIO as GPIO

TouchPin = 11
Gpin   = 12
Rpin   = 13

tmp = 0

def setup():
	GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
	GPIO.setup(Gpin, GPIO.OUT)     # Set Green Led Pin mode to output
	GPIO.setup(Rpin, GPIO.OUT)     # Set Red Led Pin mode to output
	GPIO.setup(TouchPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Set BtnPin's mode is input, and pull up to high level(3.3V)

def Led(x):
	if x == 0:
		GPIO.output(Rpin, 1)
		GPIO.output(Gpin, 0)
	if x == 1:
		GPIO.output(Rpin, 0)
		GPIO.output(Gpin, 1)
	

def Print(x):
	global tmp
	if x != tmp:
		if x == 0:
			print '    **********'
			print '    *     ON *'
			print '    **********'
	
		if x == 1:
			print '    **********'
			print '    * OFF    *'
			print '    **********'
		tmp = x

def loop():
	while True:
		Led(GPIO.input(TouchPin))
		Print(GPIO.input(TouchPin))

def destroy():
	GPIO.output(Gpin, GPIO.HIGH)       # Green led off
	GPIO.output(Rpin, GPIO.HIGH)       # Red led off
	GPIO.cleanup()                     # Release resource

if __name__ == '__main__':     # Program start from here
	setup()
	try:
		loop()
	except KeyboardInterrupt:  # When 'Ctrl+C' is pressed, the child program destroy() will be  executed.
		destroy()


 

 

Copyright © 2012 - 2016 SunFounder. All Rights Reserved.


Previous chapter: Lesson 23 IR Remote Control

Next chapter: Lesson 25 Ultrasonic Ranging Module

SunFounder
Apr 15 2017 at 02:18 am



© Developed by CommerceLab