Что такое скетч в ардуино

Урок 5. Arduino IDE

К этому уроку курса «Ардуино для начинающих» мы уже узнали, что такое микроконтроллер, изучили платы Arduino и главную плату Arduino Uno. Также мы изучили понятие макетных плат и того, как с ними работать.

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

Скачать программу

На данный момент мы готовы скачать это бесплатное программное обеспечение Arduino IDE, в которой мы будем писать скетчи, которые будут «говорить» плате что делать.

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

Вы можете скачать нужную версию Arduino IDE по ссылке в таблице ниже. Рекомендуем скачивать последнюю версию. Текущая стабильная версия 1.8.10:

Скачать более ранние версии можно по этой ссылке.

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

Скетч

Просто помните, что в интернете часто встречается именно слово скетч в отношении работы с платами типа Ардуино.

После установки

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

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

В программе есть основные инструменты:

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

Источник

Скетчи для Arduino

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

Давайте поговорим об основных нюансах, которые связаны с библиотеками и прошивкой – и вы поймете, насколько это интересно и увлекательно. Последний этап можно разделить на 2 основные шага:

Первый вариант является наиболее простым и самым распространенным. Ничего искать и скачивать из сети не нужно. Просто открываем среду Arduino IDE, заходим в меню, выбираем Файл, затем пункт Примеры, иподпункт Basics. Кликаем на один из самых простых примеров:

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

Запускаем его и работаем.

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

Обратите внимание на Панель управления софта (мы незаслуженно обходили ее стороной, исправляемся). Она имеет несколько клавиш.

Напомним их предназначение:

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

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

Ну и поговорим немного о сторонних скетчах, которые вы наверняка заметили в каждом нашем материале и схеме подключения на конкретных проектах. Если описывать наглядно, как выглядит методология их применения, то получится так. Сначала вы копируете скетч, вставляете его в соответствующее окно в утилите, кликаете на кнопку Компиляция, дожидаетесь ее окончания. Просто, не так ли?

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

Ну и напоследок отметим, скачать скетчи для Arduino можно на нашем веб-сайте в данном разделе. Выбирайте тот файл, что вам нужен и дерзайте!

Источник

Как написать скетч?

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

Послесловие к базовым урокам

Вот и закончился базовый курс уроков программирования Arduino. Мы с вами изучили самые базовые понятия, вспомнили (или изучили) часть школьной программы по информатике, изучили большую часть синтаксиса и инструментов языка C++, и вроде бы весь набор Ардуино-функций, который предлагает нам платформа. Подчеркну – мы изучили C++ и функции Ардуино, потому что никакого “языка Arduino” нет, это ложное понятие. Arduino программируется на C или ассемблере, а платформа предоставляет нам всего лишь несколько десятков удобных функций для работы с микроконтроллером, именно функций, а не язык. Теперь перед нами чистый лист блокнота Arduino IDE и желание творить и программировать, давайте попробуем!

Структура программы

Прежде, чем переходить к реальным задачам, нужно поговорить о некоторых фундаментальных вещах. Микроконтроллер, как мы обсуждали в самом начале пути, это комплексное устройство, состоящее из вычислительного ядра, постоянной и оперативной памяти и различных периферийных устройств (таймеры/счётчики, АЦП и проч.). Обработкой нашего с вами кода занимается именно ядро микроконтроллера, оно раздаёт команды остальным “железкам”, которые в дальнейшем могут работать самостоятельно. Ядро выполняет различные команды, подгоняемое тактовым генератором: на большинстве плат Arduino стоит генератор с частотой 16 МГц. Каждый толчок тактового генератора заставляет вычислительное ядро выполнить следующую команду, таким образом Ардуино выполняет 16 миллионов операций в секунду. Много ли это? Для большинства задач более чем достаточно, главное использовать эту скорость с умом. Зачем я об этом рассказываю: микроконтроллер может выполнить только одну задачу в один момент времени, так как у него только одно вычислительное ядро, поэтому реальной “многозадачности” нет и быть не может, но за счёт большой скорости выполнения ядро может выполнять задачи по очереди, и для человека это будет казаться многозадачностью, ведь что для нас “раз Миссисипи“, для микроконтроллера – 16 миллионов действий! Есть всего два варианта организации кода:

“Многозадачность” с yield()

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

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

“Многозадачность” с millis()

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

Хитрый ход, запомните его! Такой алгоритм позволяет переключать состояние при каждом вызове. Сейчас наш код всё ещё заторможен задержкой в 1 секунду, давайте от неё избавимся:

Что здесь происходит: цикл loop() выполняется несколько сотен тысяч раз в секунду, как ему и положено, потому что мы убрали задержку. Каждую свою итерацию мы проверяем, не настало ли время переключить светодиод, не прошла ли секунда? При помощи этой конструкции и создаётся нужная многозадачность, которой хватит для 99% всех мыслимых проектов, ведь таких “таймеров” можно создать очень много!

Данный код всё ещё мигает светодиодом раз в секунду, но помимо этого он с разными промежутками времени отправляет сообщения в последовательный порт. Если открыть его, можно увидеть следующий текст:

Это означает, что у нас спокойно работают 4 таймера с разным периодом срабатывания, работают “параллельно”, обеспечивая нам многозадачность: мы можем выводить данные на дисплей раз в секунду, и заодно опрашивать датчик 10 раз в секунду и усреднять его показания. Хороший пример для первого проекта! Обязательно вернитесь к уроку о функциях времени, там мы разобрали несколько конструкций на таймере аптайма!

“Многозадачность” с прерываниями таймера

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

Настройка таймера на нужную частоту и режим работы – непосильная для новичка задача, хоть и решается в 2-3 строчки кода, поэтому предлагаю использовать библиотеки. Для настройки прерываний по таймеру 1 и 2 есть библиотеки TimerOne и TimerTwo. Мы сделали свою библиотеку, GyverTimers, в которой есть также таймер 0 (для программирования без использования Arduino.h), а также все таймеры на Arduino MEGA, а их там целых 6 штук. Ознакомиться с документацией и примерами можно на странице библиотеки. Сейчас рассмотрим простой пример, в котором “параллельно” выполняющемуся Blink будут отправляться данные в порт. Пример оторван от реальности, так делать нельзя, но он важен для понимания самой сути: код в прерывании выполнится в любом случае, ему безразличны задержки и мёртвые циклы в основном коде.

Переключение задач

Важнейшим инструментом по организации логики работы программы является так называемый конечный автомат (англ. State Machine) – значение, которое имеет заранее известный набор состояний. Звучит сложно, но на самом деле речь идёт об операторе swith и переменной, которая переключается кнопкой или по таймеру. Например:

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

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

Аналогично при уменьшении:

Переключение с первой на последнюю и обратно делается точно так же:

Рассмотрим несколько готовых примеров на базе библиотеки GyverButton:

Флаги

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

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

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

Флаги – очень мощный инструмент, не забывайте о них!

Избавляемся от циклов и задержек

Как мигать светодиодом без задержки мы обсуждали выше. А как избавиться от цикла? Очень просто – цикл заменяется на счётчик и условие. Пусть у нас есть цикл for, выводящий значение счётчика:

Для избавления от цикла нам нужно сделать свою переменную-счётчик, поместить всё это дело в другой цикл (например, в loop) и самостоятельно увеличивать переменную и проверять условие:

И всё. А как быть, если в цикле была задержка? Вот пример

Как соединить несколько скетчей?

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

Можно внести все правки в схемы и программы объединяемых проектов, чтобы они не конфликтовали. Далее приступаем к сборке общей программы:

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

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

Пример “Метеостанция”

Сила Arduino как конструктора заключается в том, что абсолютно по любой железке вы сможете найти в Гугле подробное описание, библиотеку, схему подключения и пример работы: полностью готовый набор для интеграции в свой проект! Вернёмся к нашим метео-часам и попробуем “собрать” такой проект из скетчей-примеров, ведь именно для этого примеры и нужны! Нам понадобится:

Начинаем гуглить информацию по подключению и примеру для каждой железки:

Из уроков из Гугла мы узнаём такую важную информацию, как схемы подключения: дисплей и часы подключаются к шине i2c, а датчик ds18b20 можно подключить в любой другой пин. Схема нашего проекта: Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино Качаем библиотеки для наших модулей и устанавливаем. Библиотеку дисплея нам дают прямо в статье: https://iarduino.ru/file/134.html, библиотеку для часов по своему опыту советую RTClib (та, что в статье – не очень удобная). В статье про датчик температуры нам рассказали про библиотеку DallasTemperature.h, ссылку – не дали. Ну чтож, поищем сами “DallasTemperature.h”, найдём по первой ссылке. Для неё нужна ещё библиотека OneWire, ссылку на неё дали в статье про термометр. Итого у нас должны быть установлены 4 библиотеки. Сейчас наша цель – найти рабочие примеры для каждой железки, убедиться в их работоспособности и выделить для себя минимальный набор кода для управления модулем, это бывает непросто – в статьях бывают ошибки и просто нерабочий код: эти статьи чаще всего являются копипастой от людей, далёких от темы. Я взял пример работы с дисплеем из статьи, а вот часы и термометр пришлось смотреть в примерах библиотеки. Немного причешем примеры, оставим только нужные нам функции получения значений или вывода, я оставил всё что мне нужно в setup() :

Источник

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

Предисловие

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

Введение

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

Начало

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

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

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

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

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

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

Прошивка Arduino

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

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

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

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

Источник

Особенности программирования Ардуино

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

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

Начало работы с Arduino в системе Windows

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

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

Устанавливаются драйверы и средство разработки. Можно открывать подходящие примеры работ и на их основе создавать свои приложения.

Особенности работы с «Ардуино Мини»

Работа с Arduino Mini следует тем же правилам, что и с другими платами, за исключением некоторых моментов:

Научиться программировать и работать с этим контроллером под силу даже детям. Интегрированная среда предоставляет простой и логический интерфейс.

Краткие сведения об Arduino Mini

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

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

Основные функции

Язык программирования, используемый в «Ардуино ИДЕ», является усеченным вариантом С++. Основные функции, используемые для организации работы микроконтроллера, разбиты на группы, которые:

Что такое скетч и его функции

Программа (функция в терминах С++), имеющая заданную структуру и предназначенная для «Ардуино»-платформы называется скетчем. Скетч многое сохранил от C++:

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

Структура скетча включает две обязательные функции:

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

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

Обучение начинающих программировать микроконтроллерные платы freeduino лучше проводить на примерах простейших приложений. Иллюстрацией использования этих функций станет скетч, управляющий светодиодом, аналог классической «Hello, World!».

Для начала работы требуется загрузить скетч в микроконтроллер. Запускаем Arduino IDE и копируем или набираем скетч. Для переноса выбираем пункт меню среды «Залить». При этом осуществляется компиляция программы, перевод ее в машинный код. Предыдущие залитые скетчи нет необходимости удалять — все происходит автоматически. Перезапуск «Ардуино» приведет к работе скетча и миганию светодиода на микроконтроллере.

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

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

Как работают цифровые выводы

На цифровых выходах имеется возможность подключать и деактивировать подтягивающие резисторы. Управление ими осуществляется программным способом.

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

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

Нюансы аналоговых входов

Выходной аналоговый сигнал обеспечивается АЦП. В чипах Atmega использован шестиканальный АЦП. Его разрешение составляет 10 бит или значения от 0 до 1023. Основное назначение входов — чтение сигнала аналоговых датчиков.

Выводы Arduino, соответствующие аналоговым входам, нумеруются от 14 до 19. Выводы аналоговых входов могут подключать подтягивающие резисторы, работающие так же, как на цифровых выводах. Включение резисторов производится командой: digitalWrite(14, HIGH); // включить резистор на выводе аналогового входа 0

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

Память в «Ардуино»

В микроконтроллере ATmega168, используемом на платформах Arduino, применяется три вида памяти:

Во флеш-памяти и EEPROM данные сохраняются при отключении питания. ОЗУ теряет информацию. Микроконтроллер ATmega168 оснащен:

Малый объем ОЗУ, при большом числе строк, может полностью израсходоваться.

При отсутствии свободного места в ОЗУ происходит сбой программы. Существует несколько путей решения проблемы:

Что такое скетч в ардуино. Смотреть фото Что такое скетч в ардуино. Смотреть картинку Что такое скетч в ардуино. Картинка про Что такое скетч в ардуино. Фото Что такое скетч в ардуино

Работа с EEPROM ведется при помощи специализированной библиотеки.

Перепрошивка контроллера

Алгоритм перепрошивки контроллера примерно одинаков для всех схем, с ним разберутся даже дети. Рассмотрим, как образец, работу с Atmega8U2 для Mega2560:

Перепрошивка завершена, устройство готово к работе.

Создание библиотек

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

Источник

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

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