Full text
синтаксических конструкций сред разработки Arduino IDE (C++), VEXcode V5 (C++) и LEGO Mindstorms EV3 (MicroPython), а также метод структурного моделирования алгоритмов. В результате анализа выявлены общие паттерны в представлении команд управления датчиками, независимые от аппаратной платформы и предложены унифицированные графические блоки, позволяющие визуализировать алгоритм работы программы образовательной робототехнической платформы с указанием конкретных данных. Теоретическая и практическая значимости статьи состоят в обосновании перехода от наглядно-образного представления алгоритмов к абстрактно-логическому через детализацию блок-схем. Предложенный подход позволяет облегчить переход от визуального представления алгоритмов к составлению программ в выбранной среде разработки. Ключевые слова: образовательная робототехника, датчики, методика обучения программированию, алгоритмы, блок-схемы. Введение Рост интереса к изучению робототехники в образовательных учреждениях требует совершенствования методов преподавания основ программирования для робототехнических образовательных платформ. Современные образовательные стандарты смещают фокус с простого составления алгоритмов на глубокое понимание принципов работы робототехнических систем через написание управляющих программ. Датчики представляют собой устройства различной степени сложности в зависимости от типа обрабатываемых данных и позволяют сделать мобильные или статические робототехнические платформы более интеллектуальными, а алгоритмы работы более сложными. В настоящее время существует множество образовательных решений, формирующие алгоритмическое мышление. Однако разнообразие платформ ведет к тому, что существующие блок-схемы становятся слишком абстрактными и не позволяющими конкретизировать настройку датчиков. Классический блок «Получить данные с датчика» в учебных материалах часто представляет собой «черный ящик», скрывающий процессы инициализации порта, настройки режима работы и обработки типа данных. Это не позволяет учащимся быстро перейти от визуального представления к формированию корректного текстового кода или блочно-модульного представления. Обзор отечественной и зарубежной литературы Анализ современного состояния методики обучения робототехнике показывает, что ключевой проблемой остается формирование у учащихся глубокого понимания взаимосвязи между программным кодом и физическими процессами, происходящими в сенсорах робота. В российской педагогической науке акцент традиционно делается на системно-деятельностный подход. Л. Л. Босова (2019) в своих трудах подчеркивает, что развитие алгоритмического мышления в курсе информатики невозможно без этапа формализации задачи. Она указывает, что современные школьники, работая в визуальных средах, часто пропускают этап проектирования, воспринимая программирование как «сборку пазла», а не как построение логической структуры [1]. В этом контексте В. В. Любимова (2020) проводит подробный анализ современных программных средств виртуальной робототехники (Open Roberta, VEXcode VR, TRIK Studio). Автор отмечает, что виртуальные среды позволяют с высокой точностью моделировать физические процессы и работу сенсоров, решая проблему нехватки оборудования. Однако эффективность их использования напрямую зависит от способности учащегося перенести логику работы реального устройства в виртуальную среду, что требует предварительной алгоритмической подготовки [2]. Специфику перехода от визуальных образов к текстовому коду рассматривают В. В. Тарапата и Н. Н. Самылкина (2021). В своем методическом пособии они указывают, что использование промежуточных графических моделей (блок-схем) при изучении Arduino и C++ снижает когнитивную нагрузку на учащихся, позволяя отделить логику алгоритма от синтаксических сложностей языка [3]. Вопросы формирования базовых алгоритмических навыков поднимаются в работе Н. А. Воробьевой (2020). Автор подчеркивает, что системно-ориентированные среды (на примере Scratch) эффективно развивают алгоритмическое мышление на начальном этапе, позволяя учащимся оперировать готовыми логическими блоками. Однако, как показывает практика, при переходе от «чистого» программирования в Scratch к робототехнике этого базиса становится недостаточно: стандартные блоки скрывают физику процесса (работу сенсоров), что требует внедрения дополнительных методов декомпозиции команд [4]. Однако внедрение робототехники требует особых компетенций и от самого учителя. Н. В. Абрамовских и Е. С. Асланова в своем исследовании акцентируют внимание на проблеме методического сопровождения педагогов. Авторы указывают, что отсутствие унифицированных и понятных инструментов (схем, моделей) затрудняет объяснение принципов работы технических устройств, превращая уроки в механическую сборку по инструкции. Это подтверждает необходимость разработки универсальных средств декомпозиции, доступных для понимания как учителем, так и учеником [5]. Зарубежные исследования (Scopus/WoS) последних лет акцентируют внимание на концепции Computational Thinking (вычислительного мышления). В систематическом обзоре Anwar et al. (2019), охватывающем более 50 исследований, делается вывод, что большинство учебных программ игнорируют этап предварительного моделирования, что негативно сказывается на способности студентов работать со сложными сенсорными системами [6]. В частности, в работе «The Role of Flowcharts in Problem Solving and Process Visualization» (2023) авторы убедительно доказывают, что использование блок-схем является не просто способом документации, а критически важным когнитивным этапом. Исследование подтверждает, что визуализация процесса в виде графических блоков до написания кода позволяет учащимся структурировать сложное решение и избежать логических ошибок, характерных для новичков при прямой работе с синтаксисом [7]. Фундаментальное сравнение подходов к обучению программированию проводят Д. Вайнтроп и У. Виленский (D. Weintrop, U. Wilensky). В своем исследовании они экспериментально подтверждают, что, хотя блочные среды снижают порог входа для новичков, учащиеся сталкиваются со значительными трудностями при переходе к текстовым языкам (Java, C++), так как блоки скрывают синтаксическую структуру и типы данных. Авторы делают вывод о необходимости “строительных лесов” (scaffolding) — промежуточных инструментов, облегчающих этот переход, роль которых в нашей методике выполняют декомпозированные блок-схемы [8]. Практический аспект этой проблемы рассматривают G. Wang и J. Chen в работе «From LEGO to Arduino». Авторы подчеркивают, что переход от закрытой архитектуры LEGO к открытой платформе Arduino является критическим этапом инженерного образования. Исследование показывает, что учащиеся, привыкшие к высокой абстракции LEGO (где сенсоры подключаются «одним щелчком»), испытывают значительные трудности с пониманием схемотехники и физики сигналов на Arduino. Это подтверждает потребность в методике, объясняющей внутреннюю логику работы датчиков до начала работы с «железом» [9]. Наконец, потенциал среды VEXcode VR раскрывается в исследовании «VEXCODE VR: A Virtual Tool as Support in the Teaching of Analytical Geometry» (2024). Авторы демонстрируют, что работа в виртуальной среде требует от учащихся применения строгой математической логики (координаты, векторы) для управления роботом. Это доказывает, что успешное программирование датчиков и движений невозможно без понимания лежащей в их основе математической модели, что подтверждает наш тезис о необходимости предварительной декомпозиции команд [10]. Анализ литературы выявляет противоречие: исследователи (Босова, Weintrop, Wang) единогласно заявляют о необходимости предварительного моделирования, но практически отсутствуют работы, предлагающие унифицированную методику декомпозиции, инвариантную к платформе. Это обосновывает цель нашего исследования. Методологическая база исследования Исследование проводилось на базе анализа технической документации и API трех наиболее распространенных в школьном образовании платформ: Arduino (язык C++), VEX (C++) и LEGO Mindstorms EV3 (MicroPython). Для достижения поставленной цели применялись следующие методы: Сравнительный анализ кода: Сопоставление синтаксических конструкций, отвечающих за инициализацию и опрос датчиков. Метод декомпозиции: Разбиение сложных программных объектов (классов и функций) на элементарные составляющие. Моделирование: Создание графических примитивов (блоков), отображающих логическую структуру команды. В качестве объектов анализа были выбраны три наиболее распространенных типа сенсоров, реализующих различные принципы передачи данных: Датчик касания (Touch Sensor) — как пример бинарного источника данных (нажат/не нажат). Датчик расстояния (Distance/Ultrasonic Sensor) — как пример источника числовых данных с плавающей точкой. Датчик цвета (Color Sensor) — как пример мультимодального устройства, требующего предварительной настройки режима (определение цвета, яркость отраженного света или RGB-значения). Результаты исследования Теоретический анализ Сравнение команд получения данных с датчиков в средах разработки Arduino IDE, VEXcode и Lego Mindstorm EV3. Одним из ключевых элементов образовательных робототехнических платформ является система сбора данных об окружающей среде, реализованная через опрос датчиков. Необходимость поиска путей рационализации структуры работы с входными данными приводит к разработке простых и наглядных средств перехода от алгоритмов к конкретным программным решениям через конкретизацию параметров датчиков, представленных в виде элементов блок-схем. Для дальнейшего исследования необходимо рассмотреть особенности выбранных сред программирования посредством изучения команд (методов и функций) работы с тремя типами датчиков: дискретным (касания), аналоговым (расстояния) и мультимодальным (цвета). В качестве изучаемых сред были выбраны наиболее популярные среды разработки: Arduino IDE, VEXcode, LEGO Mindstorm. Arduino IDE В среде Arduino работа с датчиками требует понимания физической природы сигнала (цифровой или аналоговый) и часто — использования формул пересчета. Таблица 1. Пример кода для датчиков в среде Arduino IDE. // 1. Датчик касания (кнопка) на цифровом пине 2 const int touchPin = 2; // 2. Датчик расстояния (HC-SR04): пины Trig (выход) и Echo (вход) const int trigPin = 9; const int echoPin = 10; void setup() { Serial.begin(9600); // Запуск порта для вывода данных pinMode(touchPin, INPUT); // Настройка пина кнопки на вход pinMode(trigPin, OUTPUT); // Настройка пина Trig pinMode(echoPin, INPUT); // Настройка пина Echo } void loop() { // --- Опрос датчика касания --- // Считываем состояние: 1 (HIGH) или 0 (LOW) int touchState = digitalRead(touchPin); // --- Опрос датчика расстояния --- // Генерируем импульс 10 мкс digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Замеряем длину импульса (время возврата звука) long duration = pulseIn(echoPin, HIGH); // Пересчитываем время в сантиметры (физическая формула) int distanceCm = duration / 58; // Вывод данных Serial.print("Touch: "); Serial.println(touchState); Serial.print("Dist: "); Serial.println(distanceCm); } Разъяснения: pinMode(..., INPUT) — обязательная настройка пина на считывание данных. digitalRead(touchPin) — возвращает только 0 или 1 (бинарная логика). duration / 58 — ученик должен знать коэффициент пересчета времени в расстояние, иначе данные будут абстрактным числом. VEXcode V5 (C++) Среда VEXcode использует объектно-ориентированный подход с высоким уровнем абстракции. Таблица 2. Пример кода для датчиков в среде VEXcode V5. #include "vex.h" using namespace vex; // Объявление объектов датчиков bumper BumperA = bumper(Brain.ThreeWirePort.A); // Датчик касания distance Distance1 = distance(PORT1); // Датчик расстояния optical Optical1 = optical(PORT2); // Датчик цвета int main() { while(true) { // --- Опрос датчика касания --- // Метод .pressing() возвращает true (истина) или false (ложь) bool isPressed = BumperA.pressing(); // --- Опрос датчика расстояния --- // Метод требует указания единиц измерения (mm или inches) double distVal = Distance1.objectDistance(mm); // --- Опрос датчика цвета --- // Датчик мультимодальный: можно узнать имя цвета или яркость if (Optical1.color() == red) { // Действие, если увидели красный } // Или считываем яркость (0-100%) double brightness = Optical1.brightness(); task::sleep(20); } } Разъяснения: BumperA.pressing() — строго возвращает булево значение, что удобно для условий if. Distance1.objectDistance(mm) — ключевая особенность: необходимо явно указать единицы измерения (аргумент функции). Optical1.color() vs .brightness() — один датчик имеет разные методы для разных режимов работы. LEGO Mindstorms EV3 (MicroPython) Использует классы Python, скрывающие низкоуровневую работу с портами. Таблица 3. Пример кода для датчиков в среде LEGO Mindstorms EV3. from pybricks.hubs import EV3Brick from pybricks.ev3devices import TouchSensor, UltrasonicSensor, ColorSensor from pybricks.parameters import Port, Color # Инициализация объектов (связь софта с портами) ts = TouchSensor(Port.S1) # Датчик касания us = UltrasonicSensor(Port.S2) # Ультразвуковой датчик cs = ColorSensor(Port.S3) # Датчик цвета while True: # --- Опрос датчика касания --- # Возвращает True/False if ts.pressed(): print("Нажато!") # --- Опрос датчика расстояния --- # По умолчанию возвращает миллиметры (int) dist_mm = us.distance() # --- Опрос датчика цвета --- # Режим определения цвета (возвращает объект Color.RED и т.д.) detected_color = cs.color() # Режим отраженного света (яркость 0-100%) reflection = cs.reflection() Разъяснения: TouchSensor(Port.S1) — создание объекта с привязкой к порту. us.distance() — метод по умолчанию работает в миллиметрах, переключение на дюймы или сантиметры требует математических операций. cs.color() и cs.reflection() — методы разделяют режимы работы датчика (распознавание цвета или движение по линии). Результаты сравнения: В качестве базового параметра у всех датчиков выступает порт подключения устройства. Для датчиков в различных средах нет разницы для входных данных, то есть программирование устройств является типовым и поддается шаблонизации. 4. Представление команд работы с датчиками в средах разработки Arduino IDE, VEXcode и Lego Mindstorm EV3 в виде декомпозированных блоков. В результате анализа фрагментов кода можно сделать вывод о том, что среды программирования имеют схожий алгоритм опроса сенсоров, что позволяет нам разделить параметры команды считывания на три группы (рисунок 1). Рисунок 1. Декомпозиция команд управления датчиками 4. Методическая ценность декомпозиции команд управления для преподавания робототехники и алгоритмизации в школе. Предлагаемый в метод декомпозиции команд управления моторами обладает высокой практической значимостью для школьных педагогов информатики и технологии, сталкивающихся с проблемой перехода от наглядно-образного к абстрактно-логическому мышлению у учащихся. Основная методическая ценность подхода заключается в создании эффективного «моста» между классического представления алгоритмов в виде блок-схем и реальной практикой программирования платформ по образовательной робототехнике (текстовый код на языках C++, Python). Во-первых, метод решает одну из главных дидактических проблем образовательной робототехники — проблему «черного ящика». При использовании стандартных графических сред или упрощенных блок-схем ученик оперирует абстракцией «Включить мотор», не задумываясь о физической и логической реализациях этого процесса. Декомпозиция команды на элементарные составляющие (порт подключения, режим работы, мощность) помогает обучающемуся анализировать устройство как систему взаимосвязанных параметров. Это формирует инженерное мышление и глубокое понимание аппаратно-программных связей, что критически важно для курсов физики и информатики. Во-вторых, данный подход способствует развитию навыков структурного программирования и профилактике синтаксических ошибок. Визуализация параметров в виде отдельных блоков на этапе проектирования алгоритма позволяет ученику заранее «собрать» структуру будущей команды кода. Когда школьник переходит к написанию программы на C++ (VEXcode, Arduino IDE) или Python (EV3), он не просто копирует примеры, а переносит в синтаксис языка уже сформированную логическую структуру. Это существенно снижает когнитивную нагрузку и уменьшает количество ошибок, связанных с пропуском аргументов функций или неверной инициализацией портов. В-третьих, метод обладает универсальностью и метапредметностью. Учитель получает инструмент, который работает независимо от используемой аппаратной платформы. Будь то Arduino, VEX или LEGO, принцип декомпозиции остается единым. Это позволяет педагогу строить урок не вокруг изучения особенностей конкретного конструктора, а вокруг фундаментальных принципов управления кибернетическими системами. Такой подход соответствует требованиям ФГОС к формированию единой информационной картины мира и позволяет легко адаптировать учебную программу под любое имеющееся в школе оборудование. Наконец, использование детализированных блок-схем повышает самостоятельность учащихся. Имея перед глазами развернутую карту действий с указанием всех входных и выходных параметров, школьники могут самостоятельно конструировать сложные алгоритмы движения роботов, проводить отладку и модификацию программ без постоянного обращения к учителю за подсказками по синтаксису. Это высвобождает время урока для решения творческих и олимпиадных задач. Заключение Проведенное исследование показывает: переход к декомпозиции системы блоков управления способствует формированию у школьников целостной картины процессов организации и реализации сложных исполнительных механизмов. Использование декомпозированных блоков при составлении алгоритмов увеличивает внимательность в силу необходимости самостоятельного создания блоков действий и улучшает понимание устройства моторов. Перспективными являются дальнейшее исследование декомпозиции систем управления для других устройств из образовательных наборов и процесс автоматизация преобразования программного кода на основе графических блок-схем алгоритмов с использованием выделенных параметров.