for i in range(len(zones)):
pin = i + 2 # Номер пина соответствует номеру зоны + 1
if i+1 in in_zones:
# Если объект находится в зоне, зажигаем светодиод
board.digital[pin].write(1)
else:
pin = i + 2
# Если объект не находится в зоне, гасим светодиод <--- НАПРАСНО
board.digital[pin].write(0)
Косяк вот тут. Если текущий объект не находится в зоне, это не значит что никакой другой, ранее найденный объект не находится в этой зоне.
Сделай массив bool по числу зон, в начале итерации выставь все элементы в false. По ходу итерации выставляй элемент в true если в зоне найден человек.
В конце итерации выставляй светодиоды по элементам массива.