Site Loader

Содержание

Структура программы на языке C++ для Arduino [Амперка / Вики]

Рассмотрим пример минимально возможной программы на C++ для Arduino, которая ничего не делает:

void setup()
{
}
 
void loop()
{
}

Разберёмся что здесь написано и почему это обязательно: почему нельзя обойтись просто пустым файлом.

Из чего состоит программа

Для начала стоит понять, что программу нельзя читать и писать как книгу: от корки до корки, сверху вниз, строку за строкой. Любая программа состоит из отдельных блоков. Начало блока кода в C/C++ обозначается левой фигурной скобкой {, его конец — правой фигурной скобкой }.

Блоки бывают разных видов и какой из них когда будет исполняться зависит от внешних условий. В примере минимальной программы вы можете видеть 2 блока. В этом примере блоки называются определением функции. Функция — это просто блок кода с заданным именем, которым кто-то затем может пользоваться из-вне.

В данном случае у нас 2 функции с именами setup и loop

. Их присутствие обязательно в любой программе на C++ для Arduino. Они могут ничего и не делать, как в нашем случае, но должны быть написаны. Иначе на стадии компиляции вы получите ошибку.

Классика жанра: мигающий светодиод

Давайте теперь дополним нашу программу так, чтобы происходило хоть что-то. На Arduino, к 13-му пину подключён светодиод. Им можно управлять, чем мы и займёмся.

void setup()
{
    pinMode(13, OUTPUT);
}
 
void loop()
{
    digitalWrite(13, HIGH);
    delay(100);
    digitalWrite(13, LOW);
    delay(900);
}

Скомпилируйте, загрузите программу. Вы увидите, что каждую секунду светодиод на плате помигивает. Разберёмся почему этот код приводит к ежесекундному миганию.

В наши ранее пустые функции мы добавили несколько

выражений. Они были размещены между фигурными скобками функций setup и loop. В setup появилось одно выражение, а в loop сразу 4.

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

Теперь давайте поймём в каком порядке исполняются сами блоки, т.е. функции setup и loop. Не задумывайтесь пока что значат конкретные выражения, просто понаблюдайте за порядком.

  • Как только Arduino включается, перепрошивается или нажимается кнопка RESET, «нечто» вызывает функцию setup. То есть заставляет исполняться выражения в ней.

  • Как только работа setup завершается, сразу же «нечто» вызывает функцию loop.

  • Как только работа loop завершается, сразу же «нечто» вызывает функцию loop ещё раз и так до бесконечности.

Если пронумеровать выражения по порядку, как они исполняются, получится:

void setup()
{
    pinMode(13, OUTPUT);     ❶
}
 
void loop()
{
    digitalWrite(13, HIGH);  ❷    ❻    ❿
    delay(100);              ❸    ❼    …
    digitalWrite(13, LOW);   ❹    ❽ 
    delay(900);              ❺    ❾ 
}

Ещё раз напомним, что не стоит пытаться воспринимать всю программу, читая сверху вниз. Сверху вниз читается только содержимое блоков. Мы вообще можем поменять порядок объявлений setup и loop.

void loop()
{
    digitalWrite(13, HIGH);  ❷    ❻    ❿
    delay(100);              ❸    ❼    …
    digitalWrite(13, LOW);   ❹    ❽ 
    delay(900);              ❺    ❾ 
}
 
void setup()
{
    pinMode(13, OUTPUT);     ❶
}

Результат от этого не изменится ни на йоту: после компиляции вы получите абсолютно эквивалентный бинарный файл.

Что делают выражения

Теперь давайте попробуем понять почему написанная программа приводит в итоге к миганию светодиода.

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

Это делается выражением в функции setup:

pinMode(13, OUTPUT);

Выражения бывают разными: арифметическими, декларациями, определениями, условными и т.д. В данном случае мы в выражении осуществляем вызов функции. Помните? У нас есть свои функции

setup и loop, которые вызываются чем-то, что мы назвали «нечто». Так вот теперь мы вызываем функции, которые уже написаны где-то.

Конкретно в нашем setup мы вызываем функцию с именем pinMode. Она устанавливает заданный по номеру пин в заданный режим: вход или выход. О каком пине и о каком режиме идёт речь указывается нами в круглых скобках, через запятую, сразу после имени функции. В нашем случае мы хотим, чтобы 13-й пин работал как выход. OUTPUT означает выход, INPUT — вход.

Уточняющие значения, такие как 13 и OUTPUT называются аргументами функции. Совершенно не обязательно, что у всех функций должно быть по 2 аргумента. Сколько у функции аргументов зависит от сути функции, от того как её написал автор. Могут быть функции с одним аргументом, тремя, двадцатью; функции могут быть без аргументов вовсе. Тогда для их вызова круглые скобка открывается и тут же закрывается:

noInterrupts();

На самом деле, вы могли заметить, наши функции setup и loop также не принимают никакие аргументы. И загадочное «нечто» точно так же вызывает их с пустыми скобками в нужный момент.

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

setup: настроить плату как нужно, чтобы затем с ней работать.

Перейдём к функции loop:

void loop()
{
    digitalWrite(13, HIGH);
    delay(100);
    digitalWrite(13, LOW);
    delay(900);
}

Она, как говорилось, вызывается сразу после setup. И вызывается снова и снова как только сама заканчивается. Функция loop называется основным циклом программы и идеологически предназначена для выполнения полезной работы. В нашем случае полезная работа — мигание светодиодом.

Пройдёмся по выражениям по порядку. Итак, первое выражение — это вызов встроенной функции digitalWrite

. Она предназначена для подачи на заданный пин логического нуля (LOW, 0 вольт) или логической единицы (HIGH, 5 вольт) В функцию digitalWrite передаётся 2 аргумента: номер пина и логическое значение. В итоге, первым делом мы зажигаем светодиод на 13-м пине, подавая на него 5 вольт.

Как только это сделано процессор моментально приступает к следующему выражению. У нас это вызов функции delay. Функция delay — это, опять же, встроенная функция, которая заставляет процессор уснуть на определённое время. Она принимает всего один аргумент: время в миллисекундах, которое следует спать. В нашем случае это 100 мс.

Пока мы спим всё остаётся как есть, т.е. светодиод продолжает гореть. Как только 100 мс истекают, процессор просыпается и тут же переходит к следующему выражению. В нашем примере это снова вызов знакомой нам встроенной функции digitalWrite. Правда на этот раз вторым аргументом мы передаём значение LOW. То есть устанавливаем на 13-м пине логический ноль, то есть подаём 0 вольт, то есть гасим светодиод.

После того, как светодиод погашен мы приступаем к следующему выражению. И снова это вызов функции delay. На этот раз мы засыпаем на 900 мс.

Как только сон окончен, функция loop завершается. По факту завершения «нечто» тут же вызывает её ещё раз и всё происходит снова: светодиод поджигается, горит, гаснет, ждёт и т.д.

Если перевести написанное на русский, получится следующий алгоритм:

  1. Поджигаем светодиод

  2. Спим 100 миллисекунд

  3. Гасим светодиод

  4. Спим 900 миллисекунд

  5. Переходим к пункту 1

Таким образом мы получили Arduino с маячком, мигающим каждые 100 + 900 мс = 1000 мс = 1 сек.

Что можно изменить

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

Вы можете подключить внешний светодиод или другое устройство, которым нужно «мигать» на другой пин. Например, на 5-й. Как в этом случае должна измениться программа? Мы должны всюду, где обращались к 13-му пину заменить номер на 5-й:

void setup()
{
    pinMode(5, OUTPUT);
}
 
void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);
    delay(900);
}

Компилируйте, загружайте, проверяйте.

Что нужно сделать, чтобы светодиод мигал 2 раза в секунду? Уменьшить время сна так, чтобы в сумме получилось 500 мс:

void setup()
{
    pinMode(5, OUTPUT);
}
 
void loop()
{
    digitalWrite(5, HIGH);
    delay(50);
    digitalWrite(5, LOW);
    delay(450);
}

Как сделать так, чтобы светодиод при каждом «подмигивании» мерцал дважды? Нужно поджигать его дважды с небольшой паузой между включениями:

void setup() { pinMode(5, OUTPUT); }   void loop() { digitalWrite(5, HIGH); delay(50); digitalWrite(5, LOW); delay(50); digitalWrite(5, HIGH); delay(50); digitalWrite(5, LOW); delay(350); }

Как сделать так, чтобы в устройстве были 2 светодиода, которые мигали бы каждую секунду поочерёдно? Нужно общаться с двумя пинами и работать в loop то с одним, то с другим:

void setup()
{
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
}
 
void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);
    delay(900);
    digitalWrite(6, HIGH);
    delay(100);
    digitalWrite(6, LOW);
    delay(900);
}

Как сделать так, чтобы в устройстве были 2 светодиода, которые переключались бы на манер железнодорожного светофора: горел бы то один то другой? Нужно просто не выключать горящий светодиод тут же, а дожидаться момента переключения:

void setup()
{
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
}
 
void loop()
{
    digitalWrite(5, HIGH);
    digitalWrite(6, LOW);
    delay(1000);
    digitalWrite(5, LOW);
    digitalWrite(6, HIGH);
    delay(1000);
}

Можете проверить другие идеи самостоятельно. Как видите, всё просто!

О пустом месте и красивом коде

В языке C++ пробелы, переносы строк, символы табуляции не имеют большого значения для компилятора. Там где стоит пробел, может быть перенос строки и наоборот. На самом деле 10 пробелов подряд, 2 переноса строки и ещё 5 пробелов — это всё эквивалент одного пробела.

Пустое пространство — это инструмент программиста, с помощью которого можно или сделать программу понятной и наглядной, или изуродовать до неузнаваемости. Например, вспомним программу для мигания светодиодом:

void setup()
{
    pinMode(5, OUTPUT);
}
 
void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);
    delay(900);
}

Мы можем изменить её так:

void setup(
)
    {
pinMode(5, OUTPUT);
    }
 
        void loop
    () {
digitalWrite(5,HIGH);
delay(100
)
;
    digitalWrite(5,LOW);
    delay(900); }

Всё, что мы сделали — немного «поработали» с пустым пространством. Теперь можно наглядно видеть разницу между стройным кодом и нечитаемым.

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

1. Всегда, при начале нового блока между { и } увеличивайте отступ. Обычно используют 2 или 4 пробела. Выберите одно из значений и придерживайтесь его всюду.

Плохо:

void loop()
{
digitalWrite(5, HIGH);
delay(100);
digitalWrite(5, LOW);
delay(900);
}

Хорошо:

void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);
    delay(900);
}

2. Как и в естественном языке: ставьте пробел после запятых и не ставьте до.

Плохо:

digitalWrite(5,HIGH);
digitalWrite(5 , HIGH);
digitalWrite(5 ,HIGH);

Хорошо:

digitalWrite(5, HIGH);

3. Размещайте символ начала блока { на новой строке на текущем уровне отступа или в конце предыдущей. А символ конца блока } на отдельной строке на текущем уровне отступа:

Плохо:

void setup()
{
    pinMode(5, OUTPUT); }
 
void setup()
    {
    pinMode(5, OUTPUT);
    }
 
void setup()
        {
    pinMode(5, OUTPUT);
        }

Хорошо:

void setup()
{
    pinMode(5, OUTPUT); 
}
 
void setup() {
    pinMode(5, OUTPUT); 
}

4. Используйте пустые строки для разделения смысловых блоков:

Хорошо:

void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);
    delay(900);
    digitalWrite(6, HIGH);
    delay(100);
    digitalWrite(6, LOW);
    delay(900);
}

Ещё лучше:

void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
 
    digitalWrite(5, LOW);
    delay(900);
 
    digitalWrite(6, HIGH);
    delay(100);
 
    digitalWrite(6, LOW);
    delay(900);
}

О точках с запятыми

Вы могли заинтересоваться: зачем в конце каждого выражения ставится точка с запятой? Таковы правила C++. Подобные правила называются синтаксисом языка. По символу ; компилятор понимает где заканчивается выражение.

Как уже говорилось, переносы строк для него — пустой звук, поэтому ориентируется он на этот знак препинания. Это позволяет записывать сразу несколько выражений в одной строке:

void loop()
{
    digitalWrite(5, HIGH); delay(100); digitalWrite(5, LOW); delay(900);
}

Программа корректна и эквивалентна тому, что мы уже видели. Однако писать так — это дурной тон. Код гораздо сложнее читается. Поэтому если у вас нет 100% веских причин писать в одной строке несколько выражений, не делайте этого.

О комментариях

Одно из правил качественного программирования: «пишите код так, чтобы он был настолько понятным, что не нуждался бы в пояснениях». Это возможно, но не всегда. Для того, чтобы пояснить какие-то не очевидные моменты в коде его читателям: вашим коллегам или вам самому через месяц, существуют так называемые комментарии.

Это конструкции в программном коде, которые полностью игнорируются компилятором и имеют значение только для читателя. Комментарии могут быть многострочными или однострочными:

/*
   Функция setup вызывается самой первой,
   при подаче питания на Arduino
 
   А это многострочный комментарий
 */
void setup()
{
    // устанавливаем 13-й пин в режим вывода
    pinMode(13, OUTPUT);
}
 
void loop()
{
    digitalWrite(13, HIGH);
    delay(100); // спим 100 мс
    digitalWrite(13, LOW);
    delay(900);
}

Как видите, между символами /* и */ можно писать сколько угодно строк комментариев. А после последовательности // комментарием считается всё, что следует до конца строки.

Итак, надеемся самые основные принципы составления написания программ стали понятны. Полученные знания позволяют программно управлять подачей питания на пины Arduino по определённым временны́м схемам. Это не так уж много, но всё же достаточно для первых экспериментов.

Программирование Arduino: справочник разработчика программиста

Главная

Программирование Ардуино – это задание определённых алгоритмов, переведённых на компьютерный язык, с целью выполнения машиной конкретной задачи, поставленной пользователем.

Мы предлагаем вам самый полный и дополняемый справочник программиста Arduino. Справочник постоянно дополняется и обновляется.

Ардуино – платформа, позволяющая множеству инженеров со всего мира создавать свои проекты с минимальными вложениями. В первую очередь – это специальный микроконтроллер с одноимённой системой управления и библиотеками, построенными на языке С++. Соответственно, если вы планируете создавать что-то уникальное, вам следует изучить все нюансы, которые имеет программирование Arduino.

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

Основы Arduino

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

Для упрощения работы пользователей в Ардуино созданы готовые библиотеки функций, вам достаточно лишь вводить команды из них, чтобы добиться какой-то цели. Естественно, таким образом вы многого не добьётесь, но для создания собственных библиотек потребуется знание языка С++ на котором и построена прошивка чипа.

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

Все функции строятся из простейших операнд, которые характерны для С++. Этими операндами являются переменные различных типов и способы их применения. Поэтому любая функция, используемая в микроконтроллере для получения сведений или отправки сигнала, – это набор простейших операций, который записан в главной библиотеке. И вы будете ограничены до тех пор, пока не получите достаточно опыта и практики, чтобы понимать, какую библиотеку и для какой цели вам стоит написать.

Главный же недостаток конструирования с Arduino сложных проектов в том, что вам придётся с нуля писать код и подбирать компоненты для системы, поэтому лучше сначала попрактиковаться на простейших задачах.

Также, учитывайте, что язык написания библиотек системы – низкоуровневый, а соответственно, состоит из простейших команд, в отличие от высокоуровневых python или pascal, удобных для пользователей. С другой стороны, он также является мультипарадигмальным, поэтому подходит для решения любой задачи с помощью удобной вам парадигмы программирования.

Чаще всего применяется ООП. Сам С++ имеет ядро из многочисленных библиотек и дополнительных функций или методов, поэтому, если вы собираетесь разобраться во всём кардинально, стоит начинать с освоения языка с нуля.

Особенности Arduino программирования

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

У программирования на Ардуино имеются как свои достоинства, так и недостатки, и вам стоит изучить обе стороны вопроса, чтобы понимать, с чем вы имеете дело и чего ожидать от микроконтроллера в принципе, во время работы с ним. Среди достоинств Ардуино, пользователи отмечают:

  1. Низкий порог вхождения. Этот пункт будет и в недостатках, так как из-за простоты системы и отсутствия требований к базису по программированию в сети гуляет множество библиотек, написанных ужасным образом. На то, чтобы разобраться, как они работают, уйдёт больше времени, чем на создание своей собственной. А стандартных функций от разработчиков не хватает для серьёзных задач.
  2. Обширное комьюнити. Это главное достоинство Ардуино перед его конкурентами, ведь вы найдёте пользователей, занимающихся созданием проектов на нём, как русскоязычных, так и англоязычных. Но если вы хотите получать действительно ценные советы и погрузиться в работу комьюнити, следует всё же изучить английский язык. Так как большая часть проблем, что вам встретятся, уже давно решены в Гугле, но, зачастую, ответы на английском.
  3. Большое количество библиотек, под разные случаи. Но, как уже описано чуть выше, у этого есть и свои недостатки.

Имеется у программирования на Ардуино и ряд весомых минусов:

  1. Низкая планка для вхождения превращает большую часть библиотек, коими наполнена сеть, в полностью бесполезный мусор. Ведь какие-то из них работают просто медленно и написаны без каких-либо знаний основ алгоритмизации, а часть – вовсе не работает, и непонятно, зачем авторы их создавали. Чтобы найти подспорье под конкретный проект, необходимо перелопатить несколько англоязычных форумов или же самостоятельно создать функции с нуля.
  2. Сложности программирования на С++. На деле – это один из сложнейших языков мультипарадигмального программирования, для создания прошивок и низкоуровневых задач. Однако, если вы имели опыт работы с ним и знаете хотя бы основные алгоритмы, а также работали хоть с одним другим мультипарадигмальным ЯП, тем более используя объектно-ориентированное программирование, вам будет значительно проще освоиться.
  3. Низкая скорость отклика самих чипов и их слабые характеристики. Да, микроконтроллеры Ардуино можно подстраивать под конкретную задачу, докупать компоненты и датчики, но это играет с ними злую шутку. Так как разработчики не знают, для чего будут использовать их детище, они усредняют все показатели, чтобы значительно уменьшить стоимость конечного продукта. В результате люди, создающие простейшие поделки, переплачивают за ненужную мощность, а тем, кто занимается робототехникой или автоматизацией каких-то процессов, приходится докупать и паять множество дополнительных плат.

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

Как начать правильно пользоваться Arduino

Если вы никогда ранее не программировали, и это ваш первый опыт, то программирование микроконтроллеров Arduino пойдёт куда проще, если вы начнёте с основ. Конечно, когда в планах у вас нет никаких сложных проектов, можете работать на готовых библиотеках и параллельно разбирать, из чего состоят их функции. Это один из хороших способов обучения, но тогда стоит искать наборы функций, которые писались профессионалами, чтобы быть уверенным в их правильности. Иначе вы можете увидеть неправильное решение задачи и, в результате, применять те в своих проектах.

Но куда лучше начать с основ и посвятить хотя бы неделю освоению алгоритмизации и научиться разбивать свои проекты на блоки, а те – уже на конкретные шаги. Подобное построение блок-схем вам не раз пригодится в будущем. Когда вы изучите весь базис, можно переходить к практике и самообучению на С++, подойдут любые простейшие проекты или заготовленные в интернете задачи. На этом этапе вашей целью станет понять основные парадигмы и научиться их использовать, а также изучить возможности языка, чтобы вы чётко знали, что он может, и могли здраво оценить реализуемость ваших проектов.

Программирование микроконтроллеров

Само программирование Ардуино делится на три этапа:

  1. Создание или скачивание готовой библиотеки функций.
  2. Загрузка этих библиотек в постоянную память чипа. Это ещё называют прошивкой.
  3. Ввод этих функций в командную строку, например, АТ, чтобы плата выполнила те или иные действия.

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

Самые простые проекты с использованием Arduino

Примеров простых проектов с Ардуино множество, например, вы можете:

  1. Создать датчик освещённости, который будет подстраивать специальные LED лампы под ту яркость, которая необходима в комнате.
  2. Автоматизация любых вещей в вашем доме. Например, включения-выключения света, открытия дверей и прочее.
  3. Автоматизация оранжереи.

Хотя это и звучит достаточно страшно, на большую часть этих проектов, благодаря обилию информации по ним в интернете, вы не потратите много времени и сил.

Arduino сайт на русском для начинающих мастеров ардуино

Ардуино для начинающих

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

Arduino – это электронные платы, к которым можно подсоединять различные датчики, двигатели, экраны и много других электронных компонентов. Плата Ардуино будет управлять этими компонентами с помощью программы, который вы в нее загрузите. Самые популярные платы для начинающих – это Arduino Uno, Arduino Mega, Arduino Nano и Arduino Leonardo. Кроме этого есть множество  других вариантов, подходящих для конкретных случаев.

Arduino – это еще и совершенно бесплатная среда программирования Arduino IDE, в которой можно писать программы (скетчи) для контроллера. Программа прошивается в микроконтроллер буквально одним нажатием на кнопку. Никаких особых знаний не требуется!  Вы можете даже не писать программу – просто найти и скачать готовый скетч, который просто откроете в Arduino IDE.

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

Arduino для детей

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

Arduino – это целый мир, в котором можно почувствовать себя волшебником. Лучший инструмент для приобщения детей к технологиям и вдохновленного инженерного творчества! Для обучения детей электронике вы можете использовать как отдельные контроллеры Arduino Uno, Mega или Nano, а также наборы и конструкторы ардуино российских и китайских производителей. Обучение детей программированию Ардуино возможно с использованием среды программирования Arduino IDE или же в визуальных средах ArduBlock, S4A, mBlock, основанных на Scratch.

Симулятор Arduino Tinkercad. Эмуляторы и online IDE для ардуино

Можно ли заниматься ардуино проектами без самой платы Arduino? Оказывается, вполне. Благодаря многочисленным онлайн сервисам и программам, которые имеют свое название: эмулятор или симулятор Arduino. Самыми популярными представителями таких программ являются системы Tinkercad от Autodesc, Virtual BreadBoard, Proteus, PSpice, Fritizing и российская FLProg. Также удобную online IDE для работы с Ардуино представляют сами разработчики платформы. В этой статье мы рассмотрим один из самых крупных и удобных эмуляторов для начинающих: Tinkercad Circuits Arduino.

Симулятор или эмулятор Arduino?

Давайте сразу договоримся, что в статье мы будем использовать оба этих термина, хотя их значение вовсе не идентично. Симулятором называют устройство или сервис, имитирующие определенные функции другой системы, но не претендующим на создание точной копии. Это некоторая виртуальная среда, в которой мы просто моделируем другую систему. Эмулятор – это полноценный аналог, способный заменить оригинал. Например, Tinkercad симулирует работу электронных схем и контроллера, но при этом он является эмулятором ардуино, реализуя практически все базовые функции Arduino IDE – от среды редактирования и компилятора до монитора порта и подключения библиотек.

С помощью этого класса программ можно не только рисовать электронные схемы, но и виртуально подключать их к электрической цепи с помощью встроенного симулятора. В режиме реального времени можно наблюдать за поведением схемы, проверять и отлаживать ее работоспособность. Если в такой симулятор добавить виртуальнyю плату Arduino, то можно отследить поведение схемы и в ардуино-проектах. Для отладки скетчей во многих известных сервисах присутствует также возможность загрузки настоящих скетчей, которые “загружаются” в модель и заставляют вести схему с подключенными элементами так же, как и со включенной реальной платой. Таким образом, мы сможем эмулировать работу достаточно сложных проектов без физического подключения Arduino, что существенно ускоряет разработку.

Tinkercad для ардуино

Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, удивительно простой и одновременно мощный эмулятор Arduino, с которого можно начинать обучение электронике и робототехнике. Он предоставляет очень удобную среду для написания своих проектов. Не нужно ничего покупать, ничего качать – все доступно онлайн. Единственное, что от вас потребуется – зарегистрироваться.

Что такое Tinkercad?

Thinkercad circuits arduinoTinkercad – это онлайн сервис, который сейчас принадлежит мастодонту мира CAD-систем – компании Autodesk. Тинкеркад уже давно известен многим как простая и бесплатная среда для обучения 3D-моделированию. С ее помощью можно достаточно легко создавать свои модели и отправлять их на 3D-печать. Единственным ограничением для русскоязычного сегмента интернета долгое время являлось отсутствие русскоязычного интерфейса, сейчас эта ситуация исправляется.

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

История создания

Tinkercad  был создан в 2011 году, его авторы – Кай Бекман (Kai Backman) и Микко Мононен (Mikko Mononen). Продукт изначально позиционировался как первая Web-платформа для 3D-проектирования, в которой пользователи могли делиться друг с другом результатами. В 2013 году сервис был куплен компанией Autodesk и дополнила семейство продуктов 123D. За все это время в рамках сервиса пользователями было создано и опубликовано более 4 млн. проектов (3D-моделей).

Tinkercad Arduino - лучший онлайн симулятор ардуино на русскомВ июне 2017 г. Autodesk решил перенести часть функционала другого своего сервиса Electroinics Lab Circuits.io, после чего Tinkercad получил крайне важные и мощные инструменты, способные существенно облегчить начинающим разработчикам Arduino процессы обучения, проектирования и программирования новых схем. Если вы уже пользовались Circuits.io, то имейте в виду, что все старые проекты  Circuits.io могут быть экспортированы в Tinkercad без каких-либо проблем (о сервисе Circuits.io от Autodesk Electroinics Lab мы постараемся подробно рассказать в одной из следующих статей).

Возможности симулятора Tinkercad для разработчика Arduino

Список основного функционала и полезных фич Tinkercad Circuits:

  • Онлайн платформа, для работы не нужно ничего кроме браузера и устойчивого интернета.
  • Удобный графический редактор для визуального построения электронных схем.
  • Предустановленный набор моделей большинства популярных электронных компонентов, отсортированный по типам компонентов.
  • Симулятор электронных схем, с помощью которого можно подключить созданное виртуальное устройство к виртуальному источнику питания и проследить, как оно будет работать.
  • Симуляторы датчиков и инструментов внешнего воздействия. Вы можете менять показания датчиков, следя за тем, как на них реагирует система.
  • Встроенный редактор Arduino с монитором порта и возможностью пошаговой отладки.
  • Готовые для развертывания проекты Arduino со схемами и кодом.
  • Визуальный редактор кода Arduio.
  • Возможность интеграции с остальной функциональностью Tinkercad и быстрого создания для вашего устройства корпуса и других конструктивных элементов – отрисованная модель может быть сразу же сброшена на 3D-принтер.
  • Встроенные учебники и огромное сообщество с коллекцией готовых проектов.

Звучит фантастично, не правда ли? Не нужно скачивать Arduino IDE, не нужно искать и скачивать популярные библиотеки и скетчи, не нужно собирать схему и подключать плату  – все, что нам нужно, находится сразу на одной странице.  И, самое главное –  это все действительно работает! Давайте уже перейдем от слов к делу и приступим к практическому знакомству.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

Первые шаги в Tinkercad

Регистрация онлайн

Для начала работы необходимо получить эккаунт Autocad. Регистрация в Tinkercad абсолютно бесплатная. Зайдите на сайт и выполните простые шаги.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

Thinkercad регистрация

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

Tinkercad Dashboard – Начальная страница

Tinkercad Arduino - лучший онлайн симулятор ардуино на русскомПреодолев этап регистрации, мы попадем на главную страницу, на которой слева видим список сервисов и под ним – список проектов. Навигация очень проста, хотя некоторые ссылки выглядят не очень заметными, но разобраться, что к чему, можно легко. Выбрав элемент слева мы видим справа список соответствующих объектов. Для раздела  Circuits, этими объектами будут схемы и скетчи.

Создаем и редактируем проект

Для создания проекта просто нажимаем кнопку «Создать проект», расположенную под списком проектов. Будет создан проект с названием типа Project N. Нажав на него, мы перейдем в режим просмотра списка схем, включенных в этот проект. Там же мы сможем изменить свойства проекта (включая название), нажав на соответствующий значок сразу под названием.

Добавляем новую схему Circuits

Создать новую схему в Tinkercad можно двумя способами:

  • В меню слева выбрать Circuits и справа над списком схем выбрать команду Create new Circuit (на момент написания статьи все основные интерфейсные элементы не переведены). Новая схема будет создана вне какого-либо проекта.
  • Создать схему в определенном проекте. Для этого надо сначала перейти в окно проекта, а затем нажать на кнопку «Create» сверху над списком. Появится перечень типов схем, мы выбираем Circuit. Созданная схема будет доступна в этом списке и в списке всех проектов в меню Circuits.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

После выполнения команды вы сразу же перейдете в режим редактирования схемы, не вводя названия. Имя для схемы формируется автоматически.

  • Чтобы изменить название схемы и отредактировать ее свойства нужно перейти в режим просмотра списка схем, навести на область с названием схемы и нажать на иконку «Настройки». Откроется окно, в котором вы сможете отредактировать параметры.
  • Для удаления схемы надо в том же режиме выбрать в настройках команду «Удалить».
  • Для просмотра краткой информации о схеме нужно просто щелкнуть на ней
  • Для перехода в режим редактирования нужно навести курсор мышки и выбрать появившуюся команду «Изменить».

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

Все изменения в процессе редактирования схемы сохраняются автоматически.

Описание интерфейса Тинкеркад в режиме редактирования

Нажав на команду «Изменить» мы попадаем в режим редактирования схемы. С помощью удобного и простого графического интерфейса можно нарисовать желаемую электрическую схему. Мы можем выделять, переносить объекты, удалять их привычным всем способом с помощью мыши.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

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

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

На полосе инструментов в верхней части слева находятся основные команды:

  • Повернуть элемент
  • Удалить
  • Масштабировать по размерам экрана
  • Отмена
  • Повтор

Кнопки в правой части панели:

  • Отобразить панель программирования, и отладки
  • Отобразить панель библиотеки компонентов
  • Запустить симулятор схемы
  • Экспорт в Eagle .brd
  • Поделиться

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

Создание схемы в Tinkercad шаг за шагом

В большинстве случае для работы с проектами Arduino выполняется следующий алгоритм действий:

  1. Создаем новую схему или открываем существующую для редактирования.
  2. Используя визуальный редактор, создаем схему (в нашем случае, с включением платы Arduino Uno).
  3. Готовим скетч в редакторе кода и загружаем его в виртуальный контроллер.
  4. Запускаем режим симуляции, при которой плата виртуально подключается к источнику питания и схема начинает работать. Вносим начальные данные для датчиков и наблюдаем реакцию схемы, как визуально, так и на виртуальном мониторе порта внутри самого сервиса.

Давайте рассмотрим каждый из шагов подробнее.

Первый шаг. Создаем схему Circuit

Будем считать, что проект мы уже создали описанным выше способом. Переходим в него и нажимаем на кнопку Create, выбирая тип – Circuit. После этого шага открывается визуальная среда редактирования, в которой мы сможем как нарисовать схему, так и написать и отладить скетч ардуино.

Подготовка электронной схемы

Создавая схему, мы выполняем такой порядок действий:

  • Выбираем нужные компоненты из библиотеки компонентов внизу экрана и размещаем их в поле редактора.
  • Соединяем компоненты с помощью виртуальных проводников, рисуя их мышкой.
  • Редактируем параметры компонентов (например, величину сопротивления у резисторов или цвет проводов).

Операция выбора из библиотеки достаточно проста. Список элементов находится внизу. Выбрав элемент, мы кликаем на нем, затем перемещаем в нужное место на схеме и кликаем повторно. Окно со списком компонентов можно скрыть или показать, нажимая на переключатель «Components» в панели инструментов.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русскомTinkercad Arduino - лучший онлайн симулятор ардуино на русскомTinkercad Arduino - лучший онлайн симулятор ардуино на русскомTinkercad Arduino - лучший онлайн симулятор ардуино на русском

Для работы нам доступно множество уже готовых элементов, от резистора и батарейки до модулей Arduino. Для удобства навигации все элементы разбиты на три вкладки:

  • Basic Components. Основные компоненты
  • Allcomponents. Все доступные компоненты
  • Starters. Готовые предустановленные схемы

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

Самой интересной для нас сейчас является третья закладка – Starters. Создатели сервиса подготовили несколько готовых схем, которые мы можем сразу же подгрузить в проект и редактировать на свое усмотрение.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

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

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

Если схема не влезает в экран – выполните масштабирование (нажмите на кнопку масштаба на панели инструментов).

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

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

Углы провода красиво скругляются, есть возможность выравнивать провод по вертикали или горизонтали (появлении синих линий подскажет нам вертикаль и горизонт соответственно). Для отмены установки провода нужно нажать на Esc или мышкой нажать на соответствующую иконку на панели инструментов.

Нажав на компонент, мы можем отредактировать его свойства.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

Третий шаг. Программируем скетч виртуального Arduino

Все инструменты для редактирования кода становятся доступны после перехода в соответствующий режим при нажатии на кнопку «Code Editor» в верхней панели.

В режиме редактирования кода нам доступны следующие варианты действий:

  • Загрузить скетч в «виртуальный контроллер» и запустить симулятор.
  • Переключение в  визуальный редактор кода типа Scratch.
  • Переключение в текстовый редактор кода.
  • Подключение библиотек.
  • Скачать код на свой компьютер в виде файла с расширением .ino (скетч ардуино).
  • Запустить отладчик с возможностью создания точек остановок и мониторингом состояний переменных.
  • Отобразить или скрыть окно монитора.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

Tinkercad Arduino - лучший онлайн симулятор ардуино на русскомTinkercad Arduino - лучший онлайн симулятор ардуино на русском

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

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

Четвертый шаг. Запускаем симулятор ардуино

Есть два способа запуска симулятора. Первый – нажать на кнопку «Start Simulation» в верхней панели. Второй – использовать кнопку Upload&Run в режиме редактирования кода.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русском

В обоих случаях для остановки работы симулятора нужно просто еще раз нажать на верхнюю кнопку (в режиме симуляции надпись изменится на «Stop Simulation»).

Что происходит во время симуляции? А практически то же, что и при подключении питания к реальной схеме. Лампочки горят, из пьезоизлучателя издаются звуки, двигатели крутятся. Мы можем отслеживать текущие показатели (напряжение, ток) с помощью инструментов мониторинга. А можем сами создавать внешние сигналы, подавая на датчики необходимые значения и отслеживать потом реакцию программы.  Например, можно задать мышкой расположение объекта до датчика расстояния, значение освещенности для фоторезистора, повернуть ручку потенциометра. Также прекрасно работают такие элементы как LCD дисплей – мы увидим выводимую информацию прямо на экране визуального компонента.

Tinkercad Arduino - лучший онлайн симулятор ардуино на русскомTinkercad Arduino - лучший онлайн симулятор ардуино на русском

Tinkercad Arduino - лучший онлайн симулятор ардуино на русскомTinkercad Arduino - лучший онлайн симулятор ардуино на русском

Tinkercad Arduino - лучший онлайн симулятор ардуино на русскомTinkercad Arduino - лучший онлайн симулятор ардуино на русском

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

Подводя итоги

В завершении этой статьи – краткого знакомства с новым интересным сервисом Tinkercad Arduino Circuits, хотелось бы еще раз подчеркнуть его ключевые возможности: визуальный редактор схем, визуальный и текстовые редакторы кода, режим отладки, режим симуляции схем, возможность экспорта полученных скетчей и электрических схем в реальные проекты. Возможно, по отдельности каждая из этих возможностей лучше реализована в других мощных инструментах, но собранные вместе, да еще и в виде удобного, простого для освоения web-сервиса, они делают Tinkercad крайне полезным для любого, особенно начинающего, ардуинщика.

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

alexxlab

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

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