UnoArduSim: симулятор для изучения программирования плат Arduino


Arduino Uno – одна из самых популярных в настоящее время микроконтроллерных плат, поддерживаемая очень большим сообществом разработчиков. Стоимость и простота использования делают платы Arduino привлекательным вариантом для создания простых электронных проектов своими руками (DIY). Но как быть, если платы Arduino у вас еще нет (она, к примеру, в процессе доставки) или вы как начинающий радиолюбитель боитесь ее “сжечь” в результате ее неопытного использования? Здесь на помощь может прийти симулятор.

Симуляторы используется для ускорения процесса написания и отладки кодов программ, поскольку в этом случае вам не требуется никакого оборудования и не нужно осуществлять никаких физических подключений для тестирования работы ваших программ. Кроме того, симулятор упрощает процесс отладки как для программных, так и для аппаратных ошибок. В данной статье мы рассмотрим основы работы с симулятором UnoArduSim, который позволяет моделировать работу плат Arduino Uno и Arduino Mega и имеет возможность выбрать до 24 устройств ввода-вывода.

Внешний вид симулятора UnoArduSim

Симулятор UnoArduSim был разработан профессором Симмонсом из Королевского университета (Queen’s University), расположенного в городе Онтарио, Канада. Профессор Симмонс использовал его для обучения студентов второго курса факультета электротехники и вычислительной техники. Графический симулятор был разработан им для того, чтобы позволить студентам тестировать свои коды программ для роботов, не используя какого-либо дополнительного оборудования.

UnoArduSim – это симулятор Arduino, который позволяет выполнять отладку кода в реальном времени на платах Arduino Uno и Arduino Mega. Данный симулятор используется для компиляции и тестирования кодов. Он поддерживает все элементы родного языка Arduino, кроме инструкции ‘goto’. Кроме того, не поддерживаются некоторые элементы языка C/C++, включающие сохранение битов, объединение.

Интерфейс симулятора

Симулятор UnoArduSim имеет очень интерактивный и простой для понимания интерфейс, который разделен на три части: панель кода, панель переменных и панель лабораторного стенда. Помимо этих трех панелей есть также строка меню, содержащая все опции меню, и панель инструментов, содержащая значок для быстрых действий. На следующем рисунке показан интерфейс симулятора UnoArduSim.

Интерфейс симулятора UnoArduSim

Панель кода

Данная панель содержит код программы. Панель кода можно использовать для мониторинга процесса выполнения программы. Она также выделяет найденные ошибки в коде программы красным цветом.

Внешний вид панели кода в симуляторе UnoArduSim

Двойной щелчок на панели кода открывает окно Редактирования/просмотра (Edit/View), где вы можете изменить код программы. У данного окна есть полезная функция, которая позволяет вам удобно выбирать встроенные вызовы функций (или встроенные константы '#define') для включения в ваш код из предоставленного списка. Также есть возможность автоматически добавлять точку с запятой или выделять цветом нужные функции.

Панель переменных

Внешний вид панели переменных в симуляторе UnoArduSim

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

Панель лабораторного стенда (Lab Bench Pane)

На панели лабораторного стенда отображается выбранная плата Arduino, то есть Uno или Mega. Она также содержит различные периферийные устройства, которые можно выбрать с помощью опции Configure. Микроконтроллер на панели лабораторного стенда ведет себя точно так же, как и настоящая плата. Все устройства ввода-вывода и обе платы Arduino, то есть "Uno" и "Mega", очень точно смоделированы. Электрическая модель компонентов хорошо подходит для анализа поведения вашей программы, используемые электрические контакты при тестировании работы программы помечаются. Например, при сбросе платы мигает соответствующий светодиод. Внешний вид панели лабораторного стенда представлен на следующем рисунке.

Внешний вид панели лабораторного стенда в симуляторе UnoArduSim

Панель лабораторного стенда также позволяет наблюдать форму сигнала на каждом контакте ввода-вывода во время выполнения программы. Для этого необходимо выбрать контакты (до 4-х контактов), на которых вы хотите посмотреть форму сигнала (осциллограмму).

Пример просмотра осциллограммы в симуляторе UnoArduSim

Строка меню

Строка меню содержит все опции для управления процессом симуляции, она предоставляет нам такие опции, как File (файл), Find (поиск), Execute (выполнить), Options (опции), Configure (конфигурирование), VarRefresh (обновление переменных), Windows и Help (поомщь). Краткое описание всех этих функций приведено ниже.

File

Load INO / PDE Prog – позволяет пользователю выбрать файл программы с необходимым расширением. При этом сразу же выполняется синтаксический анализ программы.

Edit/View (ctrl-E ) – открывает окно редактора.

Save – сохраняет текущий файл.

Save As – сохраняет текущий файл под новым именем.

Next ( '#include ') – используется для отображения next '#include' file в панели кода.

Previous – используется для отображения предыдущего файла в панели кода.

Exit – выход из симулятора.

Execute

Step-Into (F4) – выполнение одной инструкции.

Step-Over (F5) – выполнение одной инструкции с полным вызовом функции (если инструкция содержит вызов функции).

Step-Out-Of (F6) – выполнение программы до выхода из текущей функции.

Run-To (F7) – выполнение программы до определенной строки.

Run (F9) – выполнение всего кода программы.

Halt (F10) – остановка выполнения программы.

Reset – сброс программы в исходное состояние.

Slow Motion – замедление времени в 10 раз.

Устройства ввода/вывода (I/O devices)

Устройства ввода/вывода в программе разделены на “большие” и “маленькие” устройства. Разделение основано на физическом размере устройства в реальном мире. К маленьким устройствам относятся кнопки, резисторы, пьезо-элементы, светодиоды, семисегментные индикаторы, джамперы и аналоговые слайдеры. К большим устройствам ввода/вывода относятся сервомоторы, электродвигатели постоянного тока, мультиплексоры, дисплеи и т.д. Все доступные в симуляторе UnoArduSim устройства ввода/вывода показаны на следующем рисунке.

Доступные в симуляторе UnoArduSim устройства ввода/вывода

Суммарно вы может выбрать до 8 “больших” устройств и до 16 “маленьких” устройств.

Ограничения симулятора UnoArduSim

Как известно, любой симулятор обладает определенными ограничениями. Не является в этом плане исключением и UnoArduSim. Одним из самых больших его ограничений является то, что такие библиотеки как <Servo.h>, <Wire.h>, <OneWire.h>, <SPI.h>, <EEPROM.h> в нем могут только эмулироваться. Их функционал полностью “зашит” в симулятор и поиск реальных файлов этих библиотек не производится.

Небольшое количество поддерживаемых библиотек

Симулятором UnoArduSim поддерживаются следующие библиотеки: 'SoftwareSerial.h', 'SPI.h', 'Wire.h', 'OneWire.h', 'Servo.h', 'Stepper.h', 'SD.h','TFT.h' и 'EEPROM.h'. Другие библиотеки не поддерживаются.

Эмуляция в реальном времени

Время выполнения программы для платы Arduino в симуляторе не будет точно таким же, как на реальной плате, поэтому для каждого цикла в программе необходимо использовать оператор задержки ‘delay()’ чтобы синхронизировать скорость выполнения программы в симуляторе с ее выполнением на реальной плате.

Альтернативы симулятору UnoArduSim

Сейчас в сети доступно достаточно много симуляторов, подобных UnoArduSim, к наиболее известным из них можно отнести следующие:

  • Tinkercad Circuits;
  • Virtual Breadboard & Avatar Hardware;
  • PICSimLab;
  • Wokwi;
  • IO Simulator;
  • Proteus;
  • Fritzing.

Как работать с UnoArduSim

Сначала скачайте дистрибутив симулятора по следующей ссылке и извлеките его из архива.

Страница для скачивания симулятора UnoArduSim

В распакованном из архива каталоге найдите файл UnoArduSim.exe и двойным щелчком мыши запустите его на выполнение.

После запуска симулятора сначала выберите используемый вами микроконтроллер. Для этого в строке меню выберите Configure и затем откройте preference из выпадающего меню. Появится новое окно, в котором вам необходимо выбрать плату, количество байт TWI, опции вида “автоматический отступ”, “автоматическое закрытие вставки” и т.д. Выберите плату и нажмите на load.

Выбор основных настроек в симуляторе UnoArduSim

Теперь, для выбора периферийный устройств ввода и вывода, снова нажмите на Configure в строке меню, затем из появившегося выпадающего меню выберите ‘I/O Devices’. Откроется новое окно, в котором вы можете выбрать все необходимые вам периферийные устройства.

Выбор периферийных устройств в симуляторе UnoArduSim

Программирование

Если у вас уже есть код какой либо программы для Arduino в формате ‘.ino’ или ‘.pde’, вы можете непосредственно загрузить его в симулятор выбрав пункт меню File>Load INO или PDE.

Чтобы начать писать код, сделайте двойной щелчок мышью в панели кода (Code Pane) чтобы открыть редактор кода. Также для запуска редактора вы можете в пункте меню File выбрать пункт Edit/View. Еще данный редактор можно запустить, нажав одновременно клавиши Ctrl + E.

После окончания написания программы нажмите на кнопку ее компиляции (compile button).

Программа готова к компиляции

После того как компиляция будет закончена, выберите необходимые контакты ввода/вывода (I/O) в соответствии с теми контактами, которые вы использовали в программе. Назначьте контакты периферийным устройствам ввода/вывода нажав на пробел, предусмотренный в каждом периферийном блоке.

Назначение контактов периферийным устройствам

Затем в меню выберите пункт Execute и в нем пункт Run чтобы запустить программу на выполнение.

Запуск программы на выполнение в симуляторе UnoArduSim

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

Тестирование работы программы в симуляторе UnoArduSim

Заключение

Таким образом, мы выяснили UnoArduSim - это простой в использовании симулятор. Он имеет множество функций, которые вы легко сможете использовать, немного поэкспериментировав с программным обеспечением. Также в нем значительно проще про сравнению с Arduino IDE производить отладку программ.

То есть, если вы только делает первые шаги в мире микроконтроллеров и пытаетесь освоить программирование на Arduino, не тратя время и ресурсы на покупку компонентов и сборку из них схемы, то симулятор UnoArduSim будет для вас отличным выбором.

Видео, демонстрирующее работу с симулятором UnoArduSim

(Проголосуй первым!)
Загрузка...
6 720 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *