уровень 5 · практика

ЖД переезд

Железнодорожный путь идёт поперёк экрана, автодорога пересекает его сверху вниз — рельсы уложены поверх асфальта. С обеих сторон переезда стоят шлагбаум и светофор. Поезд идёт сам и не тормозит; ваша программа должна вовремя закрыть переезд и открыть его после прохода.

Чем управляете

ВыводЧто это
D2SB1, датчик приближения — ВХОД. HIGH, пока поезд в зоне подхода. От срабатывания до переезда около 8 секунд — успеть закрыть переезд надо в этот запас.
D3SB2, датчик проезда — ВХОД. HIGH, когда поезд уже за переездом.
D9Привод шлагбаумов, ШИМ: analogWrite(9, 0) — стрелы подняты, analogWrite(9, 255) — опущены. Промежуточные значения дают промежуточный угол, поэтому стрелу можно опускать плавно.
D11 / D12Красные огни светофора. Мигают попеременно: горит то один, то другой.
D13Зелёный сигнал: переезд открыт, можно ехать.

Порядок закрытия

  1. Сработал SB1 — гасим зелёный и включаем мигалку.
  2. Через пару секунд опускаем шлагбаум: водители успевают освободить переезд.
  3. Поезд проходит.
  4. Сработал SB2 — поднимаем шлагбаумы, гасим мигалку и снова зажигаем зелёный.

Обе стрелы и оба светофора работают от одних и тех же выводов: на живом переезде стороны показывают одно и то же. Машина, уже въехавшая на пути, всегда их освобождает — подставить её сценарием нельзя. Авария бывает только если переезд не закрыт вовремя.

Что проверяется

  • Закрытие по датчику, а не по таймеру.
  • Мигалка раньше шлагбаума.
  • Ни одной машины на путях в момент прохода.
  • Открытие после SB2.
  • Простой не дольше 20 секунд — дорогу нельзя держать закрытой «на всякий случай».

← Ко всем заданиям