Add reed switch code.
This commit is contained in:
parent
8930c5ba63
commit
1b362192d7
2 changed files with 77 additions and 0 deletions
77
WiFi_Mailbox_Notifier/reed_switch_code/code.py
Normal file
77
WiFi_Mailbox_Notifier/reed_switch_code/code.py
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
# SPDX-FileCopyrightText: 2022 Brian Rossman
|
||||||
|
# SPDX-FileCopyrightText: 2022 Kattni Rembor for Adafruit Industries
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
"""
|
||||||
|
A CircuitPython program to identify reed switch terminals on a switch with three
|
||||||
|
terminals (normally closed, normally open, and common). This code is not designed
|
||||||
|
for two terminal reed switches.
|
||||||
|
"""
|
||||||
|
import time
|
||||||
|
import board
|
||||||
|
import digitalio
|
||||||
|
import supervisor
|
||||||
|
|
||||||
|
# Update these pins to match the pins to which you connected the reed switch.
|
||||||
|
TERMINAL_ONE = board.D14
|
||||||
|
TERMINAL_TWO = board.D32
|
||||||
|
TERMINAL_THREE = board.D15
|
||||||
|
|
||||||
|
# Create digital pin objects using the pins defined above.
|
||||||
|
pin_1 = digitalio.DigitalInOut(TERMINAL_ONE)
|
||||||
|
pin_2 = digitalio.DigitalInOut(TERMINAL_TWO)
|
||||||
|
pin_3 = digitalio.DigitalInOut(TERMINAL_THREE)
|
||||||
|
|
||||||
|
# Wait for the serial connection to be established.
|
||||||
|
while not supervisor.runtime.serial_connected:
|
||||||
|
time.sleep(0.25)
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
# Prompt and wait for confirmation the magnet is NOT near the reed switch.
|
||||||
|
print("Ensure no magnet is near the reed switch.")
|
||||||
|
print("Press ENTER to continue")
|
||||||
|
input() # Waits for you to press enter to continue.
|
||||||
|
|
||||||
|
# Set Terminal 1 as the only output.
|
||||||
|
pin_1.switch_to_output()
|
||||||
|
|
||||||
|
# Set Terminal 2 & 3 as inputs to detect connectivity.
|
||||||
|
pin_2.switch_to_input(pull=digitalio.Pull.UP)
|
||||||
|
pin_3.switch_to_input(pull=digitalio.Pull.UP)
|
||||||
|
|
||||||
|
# Set the output pin to False.
|
||||||
|
pin_1.value = False
|
||||||
|
|
||||||
|
# Negate pin logic due to use of pull-up.
|
||||||
|
ab_common = not pin_2.value
|
||||||
|
ac_common = not pin_3.value
|
||||||
|
|
||||||
|
# Prompt and wait for confirmation the magnet IS near the reed switch.
|
||||||
|
print("Place the magnet against the reed switch.")
|
||||||
|
print("Press ENTER to continue")
|
||||||
|
input() # Waits for you to press enter to continue.
|
||||||
|
|
||||||
|
# Negate pin logic due to use of pull-up.
|
||||||
|
b_when_closed = not pin_2.value
|
||||||
|
c_when_closed = not pin_3.value
|
||||||
|
|
||||||
|
# Print pin assignments for reference.
|
||||||
|
print(f"Terminal pin assignments:\nTerminal 1 = {TERMINAL_ONE}" +
|
||||||
|
f"\nTerminal 2 = {TERMINAL_TWO}\nTerminal 3 = {TERMINAL_THREE}\n")
|
||||||
|
|
||||||
|
# Print which terminal is Normally Closed, Common, and Normally Open.
|
||||||
|
if ab_common and not ac_common and not b_when_closed and not c_when_closed:
|
||||||
|
print("Normally Closed: Terminal 1, Common: Terminal 2, Normally Open: Terminal 3")
|
||||||
|
elif not ab_common and ac_common and not b_when_closed and not c_when_closed:
|
||||||
|
print("Normally Closed: Terminal 1, Common: Terminal 3, Normally Open: Terminal 2")
|
||||||
|
elif ab_common and not ac_common and not b_when_closed and c_when_closed:
|
||||||
|
print("Normally Closed: Terminal 2, Common: Terminal 1, Normally Open: Terminal 3")
|
||||||
|
elif not ab_common and not ac_common and not b_when_closed and c_when_closed:
|
||||||
|
print("Normally Closed: Terminal 2, Common: Terminal 3, Normally Open: Terminal 1")
|
||||||
|
elif not ab_common and ac_common and b_when_closed and not c_when_closed:
|
||||||
|
print("Normally Closed: Terminal 3, Common: Terminal 1, Normally Open: Terminal 2")
|
||||||
|
elif not ab_common and not ac_common and b_when_closed and not c_when_closed:
|
||||||
|
print("Normally Closed: Terminal 3, Common: Terminal 2, Normally Open: Terminal 1")
|
||||||
|
else:
|
||||||
|
# All options are covered above. If none are valid, there may be an issue with your wiring.
|
||||||
|
print("Something went wrong, check connections and try again.")
|
||||||
Loading…
Reference in a new issue