-
Notifications
You must be signed in to change notification settings - Fork 0
/
day7_say_hello.py
118 lines (90 loc) · 2.17 KB
/
day7_say_hello.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# Imports
from machine import Pin, PWM
import time
# Set up the LED pins
red = Pin(18, Pin.OUT)
amber = Pin(19, Pin.OUT)
green = Pin(20, Pin.OUT)
# Set up the Buzzer pin as PWM
buzzer = PWM(Pin(13))
# Set PWM duty to 0% at program start
buzzer.duty_u16(0)
# Set up PIR pin with pull down
pir = Pin(26, Pin.IN, Pin.PULL_DOWN)
A = 440
As = 466
B = 494
C = 523
Cs = 554
D = 587
Ds = 622
E = 659
F = 698
Fs = 730
G = 784
Gs = 830
A2 = 440 * 2
As2 = 466 * 2
B2 = 494 * 2
C2 = 523 * 2
Cs2 = 554 * 2
D2 = 587 * 2
Ds2 = 622 * 2
E2 = 659 * 2
F2 = 698 * 2
Fs2 = 740 * 2
G2 = 784 * 2
Gs2 = 830 * 2
# Create volume variable (Duty cycle)
volume = 10000
# Create our function with arguments
def playtone(note,vol,delay1,delay2):
red.value(1) # Red ON
amber.value(1) # Amber ON
green.value(1) # Green ON
buzzer.duty_u16(vol)
buzzer.freq(note)
time.sleep(delay1)
red.value(0) # Red OFF
amber.value(0) # Amber OFF
green.value(0) # Green OFF
buzzer.duty_u16(0)
time.sleep(delay2)
# Warm up/settle PIR sensor
print("Warming up...")
time.sleep(10) # Delay to allow the sensor to settle
print("Sensor ready!")
def alarm(): # Our alarm function
# Set PWM duty (volume up)
buzzer.duty_u16(10000)
notes = [
[G, 0.2, 0.3],
[G, 0.2, 0.2],
[F, 0.1, 0.15],
[C, 0.2, 0.2],
[G, 0.1, 0.1],
[G, 0.1, 0.1],
[A2, 0.1, 0.1],
[F, 0.2, 0.2],
[D, 0.1, 0.1],
[D, 0.2, 0.15],
[G, 0.1, 0.1],
[G, 0.1, 0.1],
[A2, 0.2, 0.2],
[F, 0.2, 0.2],
[D, 0.2, 0.2],
[E, 0.1, 0.1],
[F, 0.1, 0.1],
[E, 0.1, 0.1],
[D, 0.2, 0.1],
]
for note, delay1, delay2 in notes:
playtone(note,volume,delay1,delay2)
# Set PWM duty (volume off)
buzzer.duty_u16(0)
while True: # Run forever
time.sleep(0.01) # Delay to stop unnecessary program speed
if pir.value() == 1: # If PIR detects movement
print("I SEE YOU!")
alarm() # Call our function
print("Sensor active") # Let us know that the sensor is active again