// Робот-курьер: моя программа итоговой задачи. // Это заготовка, а не решение. Наполни функции своим проверенным кодом // из прошлых уроков и проверяй каждую отдельно, прежде чем собирать маршрут. // --- Моторы (урок 2.1) --- const int LEFT_DIR_PIN = 7; const int LEFT_SPEED_PIN = 6; const int RIGHT_DIR_PIN = 4; const int RIGHT_SPEED_PIN = 5; const int FORWARD = HIGH; // --- Датчики линии (уроки 3.1 и 3.2) --- const int LEFT_SENSOR_PIN = A4; const int RIGHT_SENSOR_PIN = A5; // Перенеси сюда свои измерения белого и чёрного и коэффициент П-регулятора. // --- Ультразвук (урок 5.1) и захват (урок 5.2) --- // Перенеси сюда контакты и настройки из своих проверенных скетчей. void stopMotors() { // Остановить оба мотора (урок 2.1). } void driveStraight() { // Проехать прямо проверенное время (урок 2.1), например въезд в зону финиша. } void turnLeft() { // Повернуть налево на 90° (урок 2.2) или с перекрёстка до линии (урок 4.2). } void turnRight() { // Повернуть направо. } void turnAround() { // Развернуться на 180° (урок 2.2). } void followLineToCrossing() { // Ехать по линии с П-регулятором до перекрёстка (уроки 3.2, 4.1). // После перекрёстка сначала съедь с широкой чёрной области. } void approachCan() { // Ехать по линии и остановиться перед грузом по ультразвуку (урок 5.1). } void pickUp() { // Остановить моторы и закрыть захват (урок 5.2). } void putDown() { // Открыть захват и отпустить груз (урок 5.2). } void setup() { // Подготовь выводы, датчики и захват. Убедись, что моторы стоят. // Здесь — твой маршрут: вызывай функции в порядке своего плана. stopMotors(); } void loop() { // Задание выполняется один раз в setup(). После финиша робот стоит. }