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)