Как написать скетч для ардуино
Перейти к содержимому

Как написать скетч для ардуино

  • автор:

Sketch

In the getting started guide (Windows, MacOS, Linux), you uploaded a sketch that blinks an LED. In this tutorial, you’ll learn how each part of that sketch works.

A sketch is the name that Arduino uses for a program. It’s the unit of code that is uploaded to and run on an Arduino board.

Comments

The first few lines of the Blink sketch are a comment:

/* * Blink * * The basic Arduino example. Turns on an LED on for one second, * then off for one second, and so on. We use pin 13 because, * depending on your Arduino board, it has either a built-in LED * or a built-in resistor so that you need only an LED. * * http://www.arduino.cc/en/Tutorial/Blink */

Everything between the /* and */ is ignored by the Arduino when it runs the sketch (the * at the start of each line is only there to make the comment look pretty, and isn’t required). It’s there for people reading the code: to explain what the program does, how it works, or why it’s written the way it is. It’s a good practice to comment your sketches, and to keep the comments up-to-date when you modify the code. This helps other people to learn from or modify your code.

There’s another style for short, single-line comments. These start with // and continue to the end of the line. For example, in the line:

int ledPin = 13; // LED connected to digital pin 13

the message «LED connected to digital pin 13» is a comment.

Variables

A variable is a place for storing a piece of data. It has a name, a type, and a value. For example, the line from the Blink sketch above declares a variable with the name ledPin , the type int , and an initial value of 13. It’s being used to indicate which Arduino pin the LED is connected to. Every time the name ledPin appears in the code, its value will be retrieved. In this case, the person writing the program could have chosen not to bother creating the ledPin variable and instead have simply written 13 everywhere they needed to specify a pin number. The advantage of using a variable is that it’s easier to move the LED to a different pin: you only need to edit the one line that assigns the initial value to the variable.

Often, however, the value of a variable will change while the sketch runs. For example, you could store the value read from an input into a variable. There’s more information in the Variables tutorial.

Functions

A function (otherwise known as a procedure or sub-routine) is a named piece of code that can be used from elsewhere in a sketch. For example, here’s the definition of the setup() function from the Blink example:

void setup()  pinMode(ledPin, OUTPUT); // sets the digital pin as output >

The first line provides information about the function, like its name, «setup». The text before and after the name specify its return type and parameters: these will be explained later. The code between the < and >is called the body of the function: what the function does.

You can call a function that’s already been defined (either in your sketch or as part of the Arduino language). For example, the line pinMode(ledPin, OUTPUT); calls the pinMode() function, passing it two parameters: ledPin and OUTPUT . These parameters are used by the pinMode() function to decide which pin and mode to set.

pinMode(), digitalWrite(), and delay()

The pinMode() function configures a pin as either an input or an output. To use it, you pass it the number of the pin to configure and the constant INPUT or OUTPUT. When configured as an input, a pin can detect the state of a sensor like a pushbutton; this is discussed in a later tutorial. As an output, it can drive an actuator like an LED.

The digitalWrite() functions outputs a value on a pin. For example, the line:

digitalWrite(ledPin, HIGH);

set the ledPin (pin 13) to HIGH, or 5 volts. Writing a LOW to pin connects it to ground, or 0 volts.

The delay() causes the Arduino to wait for the specified number of milliseconds before continuing on to the next line. There are 1000 milliseconds in a second, so the line:

delay(1000);

creates a delay of one second.

setup() and loop()

There are two special functions that are a part of every Arduino sketch: setup() and loop() . The setup() is called once, when the sketch starts. It’s a good place to do setup tasks like setting pin modes or initializing libraries. The loop() function is called over and over and is heart of most sketches. You need to include both functions in your sketch, even if you don’t need them for anything.

Exercises

1. Change the code so that the LED is on for 100 milliseconds and off for 1000.

2. Change the code so that the LED turns on when the sketch starts and stays on.

Arduino для начинающих. Часть 1

Доброго времени суток, Хабр. Запускаю цикл статей, которые помогут Вам в знакомстве с Arduino. Но это не значит, что, если Вы не новичок в этом деле – Вы не найдёте ничего для себя интересного.

Введение

Было бы не плохо начать со знакомства с Arduino. Arduino – аппаратно-программные средства для построения систем автоматики и робототехники. Главным достоинством есть то, что платформа ориентирована на непрофессиональных пользователей. То есть любой может создать своего робота вне зависимости от знаний программирования и собственных навыков.

Начало

Создание проекта на Arduino состоит из 3 главных этапов: написание кода, прототипирование (макетирование) и прошивка. Для того, чтоб написать код а потом прошить плату нам необходима среда разработки. На самом деле их есть немало, но мы будем программировать в оригинальной среде – Arduino IDE. Сам код будем писать на С++, адаптированным под Arduino. Скачать можно на официальном сайте. Скетч (набросок) – программа, написанная на Arduino. Давайте посмотрим на структуру кода:

main() < void setup()< >void loop() < >>

Важно заметить, что обязательную в С++ функцию main() процессор Arduino создаёт сам. И результатом того, что видит программист есть:

void setup() < >void loop()

Давайте разберёмся с двумя обязательными функциями. Функция setup() вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция loop() — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера.

Первая программа

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

int Led = 13; // объявляем переменную Led на 13 пин (выход) void setup() < pinMode(Led, OUTPUT); // определяем переменную >void loop()< digitalWrite(Led, HIGH); // подаём напряжение на 13 пин delay(1000); // ожидаем 1 секунду digitalWrite(Led, LOW); // не подаём напряжение на 13 пин delay(1000); // ожидаем 1 секунду >

Принцип работы этой программы достаточно простой: светодиод загорается на 1 секунду и тухнет на 1 секунду. Для первого варианта нам не понадобиться собирать макет. Так как в платформе Arduino к 13 пину подключён встроенный светодиод.

Прошивка Arduino

Для того, чтоб залить скетч на Arduino нам необходимо сначала просто сохранить его. Далее, во избежание проблем при загрузке, необходимо проверить настройки программатора. Для этого на верхней панели выбираем вкладку «Инструменты». В разделе «Плата», выберете Вашу плату. Это может быть Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo или другие. Также в разделе «Порт» необходимо выбрать Ваш порт подключения (тот порт, к которому вы подключили Вашу платформу). После этих действий, можете загружать скетч. Для этого нажмите на стрелочку или во вкладке «Скетч» выберете «Загрузка» (также можно воспользоваться сочетанием клавиш “Ctrl + U”). Прошивка платы завершена успешно.

Прототипирование/макетирование

Для сборки макета нам необходимы следующие элементы: светодиод, резистор, проводки (перемычки), макетная плата(Breadboard). Для того, чтоб ничего не спалить, и для того, чтоб всё успешно работало, надо разобраться со светодиодом. У него есть две «лапки». Короткая – минус, длинная – плюс. На короткую мы будем подключать «землю» (GND) и резистор (для того, чтоб уменьшить силу тока, которая поступает на светодиод, чтоб не спалить его), а на длинную мы будем подавать питание (подключим к 13 пину). После подключения, загрузите на плату скетч, если вы ранее этого не сделали. Код остаётся тот же самый.

На этом у нас конец первой части. Спасибо за внимание.

Работа с Arduino IDE

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

  • Проверить – компиляция (сборка, проверка на ошибки…) кода без его загрузки в плату. То есть код можно написать и проверить на ошибки даже не подключая плату к компьютеру.
  • Загрузить – компиляция и загрузка прошивки в плату.
  • Создать/открыть/сохранить – действия с текущим скетчем (файл с кодом программы).
  • Монитор порта – кнопка открывает монитор последовательного пора для общения с платой.
  • Меню вкладок – работа с вкладками, о них поговорим ниже.
  • Текущее состояние – тут выводится краткая информация о последнем действии: загрузка завершена, ошибка загрузки, автоформатирование завершено и т.д.
  • Лог работы – тут выводится лог компиляции и вообще все системные сообщения, отчёты об ошибках и размере скомпилированного кода.
  • Конфигурация оборудования – выводится название выбранной платы, версии микроконтроллера и номер выбранного COM порта.

blank

Пробежимся по пунктам меню, которые я считаю первостепенно важными, с остальными можно познакомиться самостоятельно по ходу работы с программой. Версия моей IDE – 1.8.8, в новых что-то может отличаться

Вкладка “Файл”

  • Новый
  • Открыть
  • Открыть недавние
  • Папка со скетчами – список скетчей, которые сохранены туда, куда программа предлагает их сохранять по умолчанию (Документы/Arduino)
  • Примеры – список установленных библиотек с подсписком примеров к каждой.
  • Закрыть
  • Сохранить
  • Сохранить как…
  • Настройки страницы (для печати)
  • Печать
  • Настройки
  • Выход

Окно настроек

blank

  • Размещение папки скетчей – куда по умолчанию сохраняются скетчи
  • Показать подробный вывод – показывает подробный лог при компиляции и загрузке, нужно при поиске багов и непонятных глюков/ошибок
  • Использовать внешний редактор – запрещает редактирование кода из Arduino IDE, чтобы редактировать его в других редакторах, например Notepad++. Редактируем там, а загружаем через IDE.
  • Дополнительные ссылки для менеджера плат – сюда вставляются ссылки на пакеты для работы с другими платами, например такими основанными на ESP8266 или ATtiny85.

Вкладка “Скетч”

blank

  • Проверить/компилировать – то же, что кнопка “галочка”.
  • Загрузка – то же, что кнопка “стрелочка”.
  • Загрузить через программатор – загрузить скетч напрямую в МК через программатор.
  • Экспорт бинарного файла – компилирует код и сохраняет в бинарник.
  • Показать папку скетча
  • Подключить библиотеку – подключает в код библиотеку.
    • Управлять библиотеками… – открывает менеджер библиотек, из которого можно устанавливать библиотеки.
    • Добавить .zip библиотеку – установка библиотеки из zip файла, если вы его откуда-то скачали.

    Вкладка “Инструменты”

    blank

    • АвтоФорматирование – выравнивает код по табуляции. Крайне важная фишка, используйте её (комбинация Ctrl+T) как можно чаще.
    • Архивировать скетч – сохраняет скетч как .zip архив.
    • Исправить кодировку и перезагрузить – полезная штука, когда скачал чей-то код из интернета, а там поехала кодировка.
    • Управлять библиотеками… – открывает менеджер библиотек, из которого можно устанавливать библиотеки.
    • Монитор порта.
    • Плоттер по последовательному соединению – встроенный построитель графиков по идущим в порт данным.
    • Плата – выбор платы, куда хотим загрузить прошивку.
    • Порт – COM порт, к которому подключена плата. Это всегда порт, отличный от COM1 (системный порт)
    • Программатор – выбор программатора для загрузки кода через программатор.
    • Записать загрузчик – прошивает загрузчик, соответствующий выбранной плате и процессору в микроконтроллер при помощи программатора.

    Меню вкладок

    blank

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

    Аналоги Arduino IDE

    Всем нетерпимо относящимся к кривой официальной IDE могу посоветовать следующие аналоги, работа в которых чем-то лучше, а чем-то хуже официальной IDE:

    • Notepad++ + Arduino IDE – вполне работоспособная связка – прогерский блокнот, в котором очень удобно писать код, и Arduino IDE, в которой удобно выбирать железо и загружать прошивку. Скачать блокнот можно с официального сайта.
    • Atmel Studio – официальная среда для программирования микроконтроллеров AVR. Никаких детских ардуиновских функций – только работа напрямую с МК, только хардкор! Подробнее можно почитать на сайте амперки.
    • PlatformIO – очень мощная взрослая среда разработки, подробнее можно почитать даже в статье у меня на сайте. Автор – не я. Лично мне платформио не понравилась. Да, есть автодополнение кода и всякие удобные фишки, но конфигурировать проект приходится вручную (в 2019 году не сделать пару кнопок для того же выбора порта – разработчики – АУ. ), также есть проблемы с библиотеками.
    • Programino IDE – вот эта среда мне довольно таки понравилась, есть автодополнение и другие удобные фичи. Единственный минус – она платная, но на всё платное можно нагуглить кряк =) Подробнее на официальном сайте
    • B4R – среда, позволяющая программировать Арудино на языке Basic. Кому интересно – вот официальный сайт
    • XOD – очень интересная среда разработки, в которой программа составляется из нод (node) – блоков. Полностью другая концепция программирования, посмотрите обязательно. Официальный сайт.
    • FLProg – ещё одна блочная среда разработки, в которой используются блоки вместо кода. Подойдёт для очень молодых или очень старых ардуинщиков. Официальный сайт.

    Симуляторы

    • Wokwi – пожалуй лучший онлайн-симулятор Arduino. Полностью эмулирует работу микроконтроллера, отлично подходит для теста различных алгоритмов. Имеет автодополнение кода и менеджер библиотек. Можно собирать схемы из доступных железок, тоже всё работает как в жизни. Официальный сайт.
    • Tinkercad – “детский” симулятор с небольшим набором железок и возможностей, не рекомендую. Официальный сайт.

    Полезные страницы

    • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
    • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
    • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
    • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
    • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
    • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
    • Поддержать автора за работу над уроками
    • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

    Супер-быстрый старт с Ардуино: берёшь и делаешь

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

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

    Ардуино — это просто, как конструктор Lego. Но когда его начинают объяснять, то всплывает куча баззвордов: среда разработки, железо, камень, прошивка, библиотека, драйвер, скетч, исполняемый файл, компоненты, навыки программирования, программно-аппаратная часть, ардуино-совместимая платформа… Да тут кто хочешь с ума сойдёт, надо же так усложнять простой набор игрушек для детей! =)
    На самом деле всё просто: у нас есть сама Ардуино — это мозг наших будущих игрушек, которые мы с ней соберём.

    У нас есть две готовых шилды на выбор. Почему? Мы сейчас «воткнем» Ардуину в одну шилду, посмотрим, как она работает, а затем перепрограммируем и воткнём в другую — и снова убедимся, что работает. Так нам сразу станет понятно, и мы сможем двигаться дальше — благо направлений развития вместе с Ардуиной — много.

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

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

    Шаг 1: Cоберите первую шилду

    Берём этот набор. Собираем радио по инструкции. Это просто, как собрать игрушку из киндер-сюрприза. Только гораздо более увлекательно!

    Что мы только что сделали? Мы «навтыкали» компонентов в готовую шилду, «воткнули» в неё же Ардуину с загруженным заранее скетчем для работы всех этих компонентов. Всё, у нас готовое устройство. И оно работает! =)

    Шаг 2: установите IDE

    Всё, с первой шилдой мы увидели, как это всё собирается и работает. Теперь — самое главное: ОТКЛЮЧАЕМ ПИТАНИЕ. Достаём Ардуино и берём следующую шилду.

    Наша новая шилда, если верить надписям на ней, называется MP 1051. У Ардуино глаз нет, поэтому она не знает эту шилду и не может с ней работать пока что. Сейчас мы это исправим.

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

    Хозяйке на заметку:
    Если Ардуино — это голова, мозг, то:

    Библиотека — это файлы .h и .cc — это руки-ноги. То есть то, чем можно ходить, бегать, танцевать, светить. Библиотека даёт Ардуине представление о том, во что её (Ардуину) «воткнули» и чем она теперь может светить-шевелить.

    Скетч — это файлы .ino, и, собственно, это сам танец, сама ходьба, сама последовательность мигания или яркость свечения — словом, скетч отвечает за то, что Ардуина со своими «руками-ногами» делает.

    Загрузить в Arduino библиотеку и скетч можно при помощи программы IDE. Если сам конструктор Ардуино похож на лего, то программа IDE похожа на iTunes: для того, чтобы загрузить музыку в телефон, вам нужна специальная программа? Миллионы людей справляются с этой задачей, справимся и мы с IDE.

    2. Установите IDE как обычную программу.
    Узнать больше: для Windows

    3. Подключите Ардуину по USB

    4. Запустите IDE (с правами супер-пользователя, если вам это о чем-либо говорит. Если нет, то забейте на эти права. Если да — скачайте версию 1.0.1 — всё, что старше, на Linux работает криво).

    5. Выберите тип Ардуины. (Выберется, скорее всего, автоматически. Но у нас в руках из набора Arduino Nano 3.0 и на квадратном процессоре сверху написано Amtel Mega 328p — это значит, из меню выбираем Nano ATmega328).

    6. Проверьте, компьютер видит Ардуину: виден её порт, через который мы её подключили.

    Всё готово? Сейчас разберёмся с тем, что загрузить и как, и через 5 минут лампочки (диоды!) на нашей новой шилде будут весело освещать наш дом.

    Если порт не найден, отсоедините всё и закройте программу. Присоедините Ардуино заново, можно к новому порту, откройте программу. Это похоже на мобильное приложение у вас в телефоне: если оно зависло, вы его перезапускаете, и оно снова работает. Здесь тот же принцип troubleshooting. =)

    Шаг 3: Используйте скетч и библиотеку по назначению

    Здесь-то и начинается самый magic! =) Но, почему-то, именно к этому волнующему моменту объяснения были самые скучные:

    Для того, чтобы запрограммировать микроконтроллер, у нас есть три типа файлов: .h, .cc, .ino Файлы компилируются, к библиотекам шлются обращения. Всё это написано на языке C, который оперирует функциями, переменными, после чего, чтобы написанная на языке C программа стала понятна микроконтроллеру, она переводится в машинный код — компилируется и затем загружается в контроллер… вы себе не представляете, насколько сейчас нам на это пофиг =) Всё гораздо проще.

    • Распакуйте её — вы получите папку MP1051
    • Зайдите туда, где у вас лежит ваша программа Arduino IDE с её папками.

    В моём случае это была папка Downloads — куда я скачала программу, там она у меня лежит, оттуда и запускается — ничего сложного.

    • Скопируйте получившуюся папку MP1051 в папку libraries
    • Скачайте набор скетчей\драйверов для нашей новой шилды MP1051
    • Распакуйте
    • Возьмите полученную папку examples и положите в MP1051, которая уже лежит в libraries. Или — в папку examples, всё там же, в директории программы Arduino, но тогда её надо будет переименовать во что-нибудь.

    Всё! Давайте скорее объединим Библиотеку + Скетч, скомпилируем их в машинный код и загрузим на контроллер. Это быстро.

    • Подключите Arduino через USB
    • Откройте программу IDE
    • Выберите: Скетч — Импортировать библиотеку — MP1051 (появится в выпавшем меню среди прочих библиотек)
    • Выберите: Файл — Примеры — MP1051 — Step_1
    • Нажмите: Галочку (= Проверить)

    Произойдёт: Компилирование — Компилирование выполнено

    • Нажмите: Стрелку вправо (= Загрузить скетч в Arduino)

    Произойдёт: Загрузка — Загрузка выполнена

    • Отсоедините Ардуино от USB
    • Посадите его на плату (Важно! Разъем для мини-USB смотрит наружу!)
    • Присоедините его обратно к USB (в этот раз USB будет подавать питание)
    • Перед пересадкой\высадкой Ардуино на шилду\с шилды всегда обесточивайте прибор
    • Перед загрузкой скетча, вынимайте Ардуино из шилды

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

    Назад в будущее

    Если вы теперь вернёте Ардуино на место, на шилду радио (Важно! Обесточьте плату перед пересадкой на шилду!), то радио больше «не будет работать». Хотите вернуть всё как было? Вы уже знаете, как это сделать!

    Обратите внимание на нужные нам папки — libraries и examples. А также на то, что название папок и файлов должно писаться латиницей в одно слово. Можно использовать цифры и нижнее подчёркивание. Итак, возвращаем всё как было:

    Откройте все нужные библиотеки (см. изобр.) + копируйте сюда скетч. Компилируйте. Загружайте. Готово! Можно поставить Ардуино обратно в шилду радио и снова его (радио) включить.

    Вот так быстро мы с вами разобрались с:

    1. Как перепрограммировать Ардуино под разные шилды при помощи готовых скетчей и библиотек.
    2. Зачем нам скетч, зачем нам библиотека. Что куда класть.
    3. Как работать с программой Arduino IDE, чтобы загрузить скетч вместе с библиотекой.

    Как видите, всё просто. У меня ушло несколько дней на то, чтобы «въехать» самостоятельно. Надеюсь, кому-то я сэкономлю эти несколько дней. Удачи вам с Ардуино DIY и до новых встреч: я планирую ещё много с чем разобраться на базе имеющихся у меня модулей и компонентов и обязательно поделюсь с вами идеями и навыками.

    Традиционно, в конце статьи — спасибо!

    Большое спасибо пользователю Алексею Коротичу за присланные специально для подготовки этой статьи полезные ссылки:

    • arduino
    • мастер кит
    • программирование микроконтроллеров
    • diy или сделай сам

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

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