# 接线图
# 树莓派管脚图
# 代码
| #include <wiringPi.h> |
| #include <stdio.h> |
| |
| #define VibratePin 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) |
| { |
| int status = 0; |
| int tmp = 0; |
| int value = 1; |
| if(wiringPiSetup() == -1){ |
| printf("setup wiringPi failed !"); |
| return 1; |
| } |
| |
| pinMode(VibratePin, INPUT); |
| |
| while(1){ |
| value = digitalRead(VibratePin); |
| if (tmp != value){ |
| status ++; |
| if (status > 1){ |
| status = 0; |
| } |
| LED(status); |
| Print(status); |
| delay(1000); |
| } |
| } |
| return 0; |
| } |
编译命令: gcc vibration_switch.c -o vibration_switch -lwiringPi
# Python
| |
| import RPi.GPIO as GPIO |
| import time |
| |
| VibratePin = 11 |
| Gpin = 12 |
| Rpin = 13 |
| |
| tmp = 0 |
| |
| def setup(): |
| GPIO.setmode(GPIO.BOARD) |
| GPIO.setup(Gpin, GPIO.OUT) |
| GPIO.setup(Rpin, GPIO.OUT) |
| GPIO.setup(VibratePin, GPIO.IN, pull_up_down=GPIO.PUD_UP) |
| |
| 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(): |
| state = 0 |
| while True: |
| if GPIO.input(VibratePin): |
| state = state + 1 |
| if state > 1: |
| state = 0 |
| Led(state) |
| Print(state) |
| time.sleep(1) |
| |
| def destroy(): |
| GPIO.output(Gpin, GPIO.HIGH) |
| GPIO.output(Rpin, GPIO.HIGH) |
| GPIO.cleanup() |
| |
| if __name__ == '__main__': |
| setup() |
| try: |
| loop() |
| except KeyboardInterrupt: |
| destroy() |