Конечные автоматы и временные циклы
ЗАЧЕМ ЭТО НУЖНО? 🎯
Суть проблемы: большинство начинающих программируют роботов по принципу “что вижу - то и делаю”, что приводит к хаотичному поведению и трудноотлаживаемому коду.
Решение: Конечные автоматы (state machines) - это карта поведения устройства, где:
- Четко определены состояния (красный, желтый, зеленый)
- Прописаны переходы между ними (по времени/событиям)
- Указаны действия в каждом состоянии
Олимпиадная ценность: 90% заданий требуют реализации многорежимных систем с четкими переходами!
КАК ИЗУЧАЕМ? 🚀
Без кода - только логика:
Пример: Дверь-автомат
Состояния: [ЗАКРЫТО] → (кнопка нажата) → [ОТКРЫВАЕТСЯ] → (5 сек) → [ОТКРЫТО]
→ (10 сек) → [ЗАКРЫВАЕТСЯ] → (5 сек) → [ЗАКРЫТО]
Методика обучения:
- “Живые автоматы” - дети становятся роботами и выполняют переходы
- Рисуем графы состояний на доске цветными маркерами
- Составляем таблицы переходов - от события к новому состоянию
- Находим автоматы в жизни - лифт, стиральная машина, светофор
Временные циклы вместо delay():
// НЕПРАВИЛЬНО - робот "засыпает"
delay(5000);
digitalWrite(red, LOW);
// ПРАВИЛЬНО - робот активен в ожидании
if (millis() - lastChange > 5000) {
digitalWrite(red, LOW);
lastChange = millis();
}
Результат: Ученики начинают мыслить категориями “в каком состоянии система?” вместо “что делать сейчас?”
