Визуальное программирование для Arduino на основе Scratch Blocks

Наша новейшая функция в Tinkercad Circuits - это блоки визуального кода, работающие на Scratch Blocks!

Мы * разработали блоки кода, чтобы максимально упростить обучение программированию на Arduino. Имея это в виду, наши основные цели заключались в следующем:

  1. Упростите процесс программирования Arduino, чтобы уменьшить распространенные синтаксические ошибки (например, неправильный ввод имени функции или забывание точки с запятой)
  2. Сосредоточьтесь на желаемом взаимодействии (что вы хотите ощущать и контролировать), создавая при этом все необходимые настройки, необходимые для этого.
  3. Соедините миры визуального программирования и текстового программирования, чтобы сделать все, созданное в Tinkercad Circuits, расширяемым до реального физического оборудования с помощью Arduino IDE.

Здесь я подробно объясню, как работают блоки кода, и опишу, как наша философия дизайна повлияла на создание этой функции.

* Мы = команда Tinkercad Circuits (Джошуа Брукс, ведущий разработчик программного обеспечения, а я - ведущий специалист по UX)

Блоки кода - подробный пример

Блоки кода Tinkercad - это визуальные блоки, которые можно перетаскивать для создания программ Arduino. Используя симулятор Tinkercad Circuits, вы можете протестировать любой код, который вы создаете, непосредственно в браузере, прежде чем создавать и программировать свои устройства с реальными физическими компонентами.

Блоки кода разделены на несколько категорий:

  • Выход - блоки для управления исполнительными механизмами, подключенными к вашему программируемому микроконтроллеру.
  • Вход - блоки для считывания входного сигнала датчика.
  • Обозначение - блоки для добавления комментариев, как для обзора вашего кода (в основной надписи), так и в соответствии с вашим кодом.
  • Контроль - управляющие структуры, такие как добавление задержек, повторов и операторов if else.
  • Math - блоки для логики и вычислений.
  • Переменные - пользовательские переменные, которые можно редактировать в вашей программе.

Эти категории упрощают просмотр всех основных функций, которые вы, возможно, захотите использовать в своей программе. Вместо того, чтобы искать справочник по всем функциям, доступным, например, для управления динамиком, основные параметры отображаются в категории «Вывод». Мы также пользуемся всеми преимуществами визуального программирования с блоками, которые соединяются вместе только в том случае, если они «подходят» и создают рабочий код.

Когда вы перетаскиваете любой программируемый элемент в редактор Tinkercad Circuits и нажимаете кнопку Редактор кода, вы автоматически увидите блоки кода рядом с текстовым редактором. Давайте рассмотрим приведенный ниже пример управления серводвигателем с помощью потенциометра.

Все программы Arduino имеют две основные функции: setup () и loop (). Когда вы перетаскиваете любой блок в область сценария, код добавляется к функции loop (), и мы динамически создаем любые строки кода, необходимые в setup (). .

Например, когда добавляется первый блок для поворота сервопривода (поворот сервопривода на выводе от 0 до 0 градусов), автоматически происходит несколько вещей:

  1. Библиотека сервопривода добавлена ​​в код (#include ‹Servo.h›)
  2. Создан экземпляр сервопривода (Servo servo_3)
  3. В setup () сервопривод подключается к указанному выводу (servo_3.attach (0))
  4. Мы говорим серво переместиться на 0 градусов (servo_3.write (0))

Все это произошло путем добавления в наш код одного блока - довольно мощно!

Точно так же, когда добавляется блок чтения аналогового вывода A0 (для управления положением сервопривода с помощью потенциометра), проверьте, как мы добавляем дополнительную информацию в функцию setup (), чтобы указать pinMode ( pinMode (A0, INPUT)).

С помощью этой функции мы решили Цель № 2 - помочь пользователям сосредоточиться на взаимодействиях. Мы обеспечиваем базовую настройку, необходимую для управления вашей программой, поэтому все, о чем вам нужно думать, это то, что вы хотите, чтобы ваши датчики и исполнительные механизмы делали.

Поскольку мы генерируем текстовый код бок о бок с блоками кода (цель № 3), вы всегда можете увидеть, как ваши блоки преобразуются в реальный синтаксис Arduino. Мы считаем, что это имеет невероятную ценность для обучения программированию с помощью Arduino, потому что с каждым новым блоком, который вы используете, вы точно видите, как он влияет на код. В приведенном выше примере мы фактически превратили 3 блока в ~ 16 строк кода. Для других датчиков предусмотрена еще большая герметичность. Например, если вы перетащите блок чтения ультразвукового датчика расстояния, он будет содержать ~ 24 строки кода!

Перевод между визуальными блоками и текстовым синтаксисом также дает нам некоторые возможности настроить семантику функций Arduino, чтобы упростить их понимание. Мы хотели максимально приблизиться к структуре предложения, поэтому вместо того, чтобы создавать блок, называемый, например, Serial.read (), мы создали блок , читаемый из последовательного .

Другой пример этого - наш блок wait, который эквивалентен delay в Arduino. Задержка обычно указывается в миллисекундах, что, по нашему мнению, может быть трудно учесть, когда вы начинаете программировать. Вместо этого мы по умолчанию используем секунды, но в процессе мы автоматически добавляем в текстовый редактор комментарии, объясняющие перевод между 1 секундой и 1000 мс:

В конечном итоге пользователи могут загрузить код в виде эскиза Arduino из редактора схем, открыть его в настольной среде IDE Arduino и загрузить прямо на устройство, когда они будут готовы.

Попробуйте!

Чтобы начать работу с блоками кода, перейдите на свою панель управления (tinkercad.com, когда вы вошли в систему), нажмите Цепи и нажмите кнопку Создать цепь. Когда у вас открыт редактор схем, перетащите Arduino и нажмите кнопку Редактор кода. Там вы автоматически увидите блоки кода и код по умолчанию для включения и выключения встроенного светодиода - нажмите кнопку Начать моделирование, чтобы проверить это!

Многие из наших стартовых программ также включают блоки кода. Чтобы протестировать эти готовые схемы, нажмите кнопку Компоненты, выберите вкладку Стартеры и выберите что-нибудь в разделе Arduino, чтобы начать возиться (я рекомендую серво-стартер !).

Если вы ищете идеи для создания проектов, вот несколько дополнительных примеров, которые помогут вам освоить кодирование с помощью блоков кода:

Предстоящие функции

В наш предварительный выпуск входят блоки для воспроизведения динамиков, управления сервоприводами, считывания ультразвуковых датчиков расстояния и многого другого. В ближайшем будущем мы добавим еще больше блоков.

Мы также планируем немного обновить редактор, чтобы оптимизировать площадь экрана, как показано ниже:

Есть вопросы или предложения? Пожалуйста, оставьте комментарий ниже!

Благодарности

Спасибо команде Scratch Team, особенно Эндрю Сливински и Полу Каплану, за то, что помогли нам начать работу с Scratch Blocks, и большой команде Tinkercad за их отзывы и исправление ошибок!