Skip to content

Commit 4c409df

Browse files
authored
Merge pull request #620 from adafruit/Sitcom_SFX_Door_Trigger
Sitcom sfx door trigger
2 parents 43a4e72 + 0b4ca16 commit 4c409df

4 files changed

Lines changed: 65 additions & 0 deletions

File tree

Sitcom_SFX_Door_Trigger/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Sitcom_SFX_Door_Trigger
2+
3+
Code to accompany this tutorial:
4+
https://learn.adafruit.com/sitcom-sfx-door-trigger
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import time
2+
import board
3+
from digitalio import DigitalInOut, Direction
4+
import pygame.mixer
5+
6+
# setup inputs
7+
door_switch_pin = board.D23
8+
motion_sensor_pin = board.D24
9+
10+
door = DigitalInOut(door_switch_pin)
11+
door.direction = Direction.INPUT
12+
13+
motion = DigitalInOut(motion_sensor_pin)
14+
motion.direction = Direction.INPUT
15+
16+
# setup output LED indicators
17+
motion_led_pin = board.D18
18+
door_led_pin = board.D25
19+
20+
door_led = DigitalInOut(door_led_pin)
21+
door_led.direction = Direction.OUTPUT
22+
door_led.value = False
23+
24+
motion_led = DigitalInOut(motion_led_pin)
25+
motion_led.direction = Direction.OUTPUT
26+
motion_led.value = False
27+
28+
prev_door = False
29+
30+
# audio settings
31+
pygame.mixer.init(44100, -16, 2, 1024)
32+
33+
# sound files expect to be in the same directory as script
34+
enter_sound = pygame.mixer.Sound("./enter.wav")
35+
exit_sound = pygame.mixer.Sound("./exit.wav")
36+
37+
while True:
38+
39+
# toggle door LED based on door sensor
40+
if door.value:
41+
door_led.value = True
42+
else:
43+
door_led.value = False
44+
45+
# toggle motion LED based on motion (PIR) sensor
46+
if motion.value:
47+
motion_led.value = True
48+
else:
49+
motion_led.value = False
50+
51+
# When the door is opened, if there is movement outside,
52+
# It means that someone is entering.
53+
# If not, someone is exiting.
54+
if door.value and not prev_door:
55+
if motion.value:
56+
enter_sound.play()
57+
else:
58+
exit_sound.play()
59+
60+
prev_door = door.value
61+
time.sleep(0.01)

Sitcom_SFX_Door_Trigger/enter.wav

305 KB
Binary file not shown.

Sitcom_SFX_Door_Trigger/exit.wav

223 KB
Binary file not shown.

0 commit comments

Comments
 (0)