from machine import Pin
import time
SENSOR_ENTRY_PIN = 34
SENSOR_EXIT_PIN = 35
STATUS_INDICATOR_PINS = [2, 5, 4, 16, 17, 18, 21, 27]
BUTTON_DEBOUNCE_TIME_MS = 200
current_occupancy = 0
last_entry_activation_time_ms = 0
last_exit_activation_time_ms = 0
entry_sensor = Pin(SENSOR_ENTRY_PIN, Pin.IN, Pin.PULL_UP)
exit_sensor = Pin(SENSOR_EXIT_PIN, Pin.IN, Pin.PULL_UP)
occupancy_indicators = [Pin(pin_num, Pin.OUT) for pin_num in STATUS_INDICATOR_PINS]
print("System for Occupancy Monitoring Initiated. Current occupancy: 0.")
for indicator in occupancy_indicators:
indicator.value(0)
def update_occupancy_indicators(count):
for i, indicator in enumerate(occupancy_indicators):
if i < count:
indicator.value(1)
else:
indicator.value(0)
while True:
current_system_time_ms = time.ticks_ms()
if entry_sensor.value() == 0 and time.ticks_diff(current_system_time_ms, last_entry_activation_time_ms) > BUTTON_DEBOUNCE_TIME_MS:
if current_occupancy < len(occupancy_indicators):
current_occupancy += 1
print(f"Entry detected. Occupancy: {current_occupancy}")
update_occupancy_indicators(current_occupancy)
last_entry_activation_time_ms = current_system_time_ms
if exit_sensor.value() == 0 and time.ticks_diff(current_system_time_ms, last_exit_activation_time_ms) > BUTTON_DEBOUNCE_TIME_MS:
if current_occupancy > 0:
current_occupancy -= 1
print(f"Exit detected. Occupancy: {current_occupancy}")
update_occupancy_indicators(current_occupancy)
last_exit_activation_time_ms = current_system_time_ms
time.sleep_ms(10)