Lesson 4 Tilt Switch

Share for us


The tilt-switch we use here is a ball tilt-switch with a metal ball inside. It is used to detect small angle of inclination.


– 1*Raspberry Pi

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

– 1*Tilt-switch

– 1*Resistor (220Ω)

– 1*LED

– Several jumper wires

Experimental Principle

The principle is very simple. It mainly uses the ball in the switch changing with different angle of inclination to achieve the purpose of triggering circuits. When the ball in tilt switch runs from one end to the other end because of external force shaking, the tilt switch will conduct, or it will break.

In this experiment, we will use an LED and a tilt-switch to build a tilt indication light. When the tilt-switch is tilt, the LED will light up. Otherwise, it will go out.

Experimental Procedures

Step 1: Connect the circuit

Step 2: Edit and save the code (see path/Rpi_UniversalStartKit /tiltSwitch.c)

Step 3: Compile the code

            gcc  tiltSwitch.c  -lwiringPi

Step 4: Run the program


Press Enter, if you tilt the switch, the LED will light up. Otherwise, it will go out.


#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <wiringPi.h>

#define   LedPin     0
#define  TiltPin     1

int main(void)
	if(wiringPiSetup() < 0){
		fprintf(stderr, "Unable to setup wiringPi:%s\n",strerror(errno));
		return 1;

	pinMode(TiltPin, INPUT);
	pinMode(LedPin, OUTPUT);
	pullUpDnControl(TiltPin, PUD_UP);

		if(0 == digitalRead(TiltPin)){
			digitalWrite(LedPin, LOW);	
			digitalWrite(LedPin, HIGH);	

	return 0;

Python Code

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

LedPin  = 11    # pin11
TiltPin = 12

def setup():
	GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
	GPIO.setup(LedPin, GPIO.OUT)   # Set LedPin's mode is output
	GPIO.output(LedPin, GPIO.HIGH) # Set LedPin high(+3.3V) to off led
	GPIO.setup(TiltPin, GPIO.IN)

def loop():
	while True:
		if GPIO.input(TiltPin) == GPIO.LOW:
			print '...led on'
			GPIO.output(LedPin, GPIO.LOW)  # led on
			print 'led off...'
			GPIO.output(LedPin, GPIO.HIGH) # led off

def destroy():
	GPIO.output(LedPin, GPIO.HIGH)     # led off
	GPIO.cleanup()                     # Release resource

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