/
02_03.py
55 lines (53 loc) · 1.35 KB
/
02_03.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import RPi.GPIO as GPIO
import time
from threading import Timer
LED = 26
KEY = 20
GPIO.setwarnings(False)
def q1():
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED,GPIO.OUT)
GPIO.setup(KEY, GPIO.IN, GPIO.PUD_UP)
state = GPIO.LOW
try:
while True:
GPIO.wait_for_edge(KEY, GPIO.FALLING, bouncetime=200)
if state == GPIO.LOW:
state = GPIO.HIGH
else:
state = GPIO.LOW
GPIO.output(LED, state)
except KeyboardInterrupt:
GPIO.cleanup()
def multi(p, freq):
p.ChangeFrequency(freq)
def q2():
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED,GPIO.OUT)
GPIO.setup(KEY, GPIO.IN, GPIO.PUD_UP)
freq = 2
p = GPIO.PWM(LED, freq)
t = None
try:
while True:
GPIO.wait_for_edge(KEY, GPIO.RISING, bouncetime=100)
if not t:
freq = 2
p.ChangeFrequency(freq)
p.start(10)
t = Timer(0.3, multi, [p, freq])
t.start()
elif t and t.is_alive():
t.cancel()
t = None
p.stop()
else:
freq *= 2
t = Timer(0.3, multi, [p, freq])
t.start()
except KeyboardInterrupt:
p.stop()
GPIO.cleanup()
if __name__ == "__main__":
q1()
q2()