Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Что такое Arduino? За этим словом прячется легкое и простое устройство, которое способно превратить кучу проводов и плат в робота, управлять умным домом и многое другое. Разнообразие устройств ввода/вывода — датчиков, индикаторов, дисплеев и электромоторов — позволяет создавать самые невероятные проекты. Второе издание этой книги было полностью переработано, ведь технологии не стоят на месте. Познакомившись с основами Arduino, вы сможете экспериментировать с сенсорными экранами и жидкокристаллическими дисплеями, займетесь робототехникой, освоите работу с датчиками и беспроводной передачей данных и научитесь дистанционно управлять устройствами с помощью телефона. В мире продано уже более 35000 экземпляров этой книги.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 361
Veröffentlichungsjahr: 2023
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Перевод А. Киселев
Научный редактор А. Трондина
Литературный редактор Т. Сажина
Джон Бокселл
Изучаем Arduino. 65 проектов своими руками. 2-е издание. — СПб.: Питер, 2022.
ISBN 978-5-4461-1918-9
© ООО Издательство "Питер", 2022
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Джон Бокселл (John Boxall) более 26 лет занимается разработкой, распространением и продажей электроники. Последние годы в свободное время он пишет учебные пособия, проекты и делает обзоры об Arduino.
Ксандер Солдаат (Xander Soldaat) — бывший партнер по связям с сообществом Mindstorms в LEGO MINDSTORMS. Прежде чем стать штатным разработчиком программного обеспечения в Robomatter, а потом в VEX Robotics, 18 лет был архитектором и инженером ИТ-инфраструктуры. Сейчас трудится инженером-исследователем в сфере разработки встроенных решений Wi-Fi. В свободное время Ксандер любит возиться с роботами и домашними ретрокомпьютерами, увлекается 3D-печатью.
Благодарим Владимира Трондина за помощь в подготовке издания.
Владимир окончил Иркутский университет по специальности «Радиофизика и электроника» в 1984 году. В 2002–2004 годах работал инженером-разработчиком программного обеспечения для встроенных процессоров (Embedded Software Engineer) в Polar Electro OY. C 2004 года инженер по применению (Applications Engineer) в National Semiconductor Finland OY и Texas Instrument Finland OY после приобретения National Texas в 2011 году.
Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
Прежде всего я хотел бы выразить огромную благодарность коллективу разработчиков Arduino: Массимо Банци (Massimo Banzi), Дэвиду Куартиллье (David Cuartielles), Тому Иго (Tom Igoe), Джанлуке Мартино (Gianluca Martino) и Дэвиду Меллису (David Mellis). Без вашей прозорливости, идей и упорного труда не было бы этого проекта.
Благодарю всех читателей первого издания за их отзывы и конструктивную критику.
Огромное спасибо моему научному редактору Ксандеру Солдаату (Xander Soldaat) за его вклад в этот большой проект и настойчивость в доведении книги до логического конца.
Хочу выразить глубокую признательность за понимание и поддержку следующим компаниям: Adafruit, Keysight Technologies, Freetronics, PMD Way, Seeed Studio, Sharp Corporation, SparkFun и Tronixlabs.
Кроме того, мне хочется отдельно поблагодарить Freetronics PMD Way за предоставление великолепных электронных компонентов. Спасибо всем тем, кто потратил свое время на создание библиотек для Arduino, которые упрощают работу многим разработчикам.
Выражаю свое уважение и благодарность команде Fritzing за их превосходный открытый инструмент проектирования электронных схем, которым я пользовался во время работы над книгой.
Спасибо всем, кто вдохновлял и поддерживал меня: Элизабет Прайс (Elizabeth Pryce), Джонатану Оксеру (Jonathan Oxer), Филипу Линдси (Philip Lindsay), Кену Ширрифу (Ken Shirriff), Натану Кеннеди (Nathan Kennedy) и Дэвиду Джонсу (David Jones).
И наконец, хочу сказать спасибо всем сотрудникам издательства No Starch Press за их труд над этим обновленным изданием: Патрику Диджусто (Patrick DiJusto) за редакторский вклад, Дапиндеру Досанжу (Dapinder Dosanjh) и Натану Хайдельбергеру (Nathan Heidelberger) за их бесконечное терпение, Рэйчел Монаган (Rachel Monaghan) за управление всем процессом издания книги, Пауле Флеминг (Paula Fleming) за литературную правку, Рэйчел Хед (Rachel Head) за корректуру, Джоанне Бурек (JoAnne Burek) за создание предметного указателя. Отдельная благодарность Биллу Поллоку (Bill Pollock) за поддержку, советы и способность убедить, что иногда авторское объяснение темы — это не лучшее и не единственно верное решение.
Приходилось ли вам, разглядывая какое-нибудь устройство, задумываться над тем, как оно работает в действительности? Возможно, это был катер на дистанционном управлении, лифт, автомат с напитками или электронная игрушка? А может быть, вам хотелось самому создать робота или придумать электронное управление для модели железной дороги? Или, возможно, вы бы хотели в течение длительного времени собирать данные о погоде и анализировать их? Как и с чего вы могли бы начать свой проект?
Плата Arduino (рис. 1.1) поможет на практике раскрыть некоторые секреты электроники. Arduino, созданная Массимо Банци и Дэвидом Куартиллье, предлагает бюджетный способ создания интерактивных проектов и таких объектов, как дистанционно управляемые роботы, GPS-трекеры и электронные игры.
Рис. 1.1. Плата Arduino
Проект Arduino рос экспоненциально с момента рождения в 2005 году. Теперь это процветающая индустрия, поддерживаемая множеством людей, объединенных общим стремлением к поиску нового. Здесь вы найдете и отдельных энтузиастов, и целые группы, от небольших клубов и местных кружков по интересам до объединений специалистов и образовательных учреждений, заинтересованных в использовании этой платформы.
Узнать о разнообразии проектов на основе Arduino вы можете, просто воспользовавшись поисковиком. Уверен, вы найдете невероятное количество проектов, блогов и статей.
Быстро пролистав эту книгу, вы увидите, что плату Arduino можно использовать для создания устройств, от самых простых, незатейливо мигающих светодиодами, до очень сложных, взаимодействующих со смартфоном, и множества проектов, по сложности находящихся между ними.
Взгляните на Wi-Fi-метеостанцию, сконструированную Бекки Стерн (Becky Stern). На рис. 1.2 вы можете увидеть разные примеры вывода информации на ней. Это устройство работает на Arduino-совместимой плате с интерфейсом Wi-Fi. Оно показывает цифры максимальной дневной температуры и отображает прогноз погоды на день с помощью треугольников, меняющих цвета.
Рис. 1.2. Разные примеры отображения прогноза погоды на табло устройства1
Благодаря простоте получения различной информации в интернете вы можете с помощью этого устройства отображать не только прогноз погоды, но и другие данные. Подробнее об этом вы можете узнать по ссылке https://www.instructab-les.com/id/WiFi-Weather-Display-With-ESP8266/.
Не хотите ли сделать собственный классический компьютер из прошлого? Благодаря возможностям процессора Arduino можно эмулировать подобные устройства. На рис. 1.3 показан один из примеров — устройство KIM Uno Оскара Вермёлена (Oscar Vermeulen), имитирующее компьютер KIM-1 1976 года. Больше информации вы найдете на странице https://en.wikipedia.org/wiki/KIM-1.
Рис. 1.3. Эмулятор компьютера KIM-1 на Arduino
Поработав над этим проектом, можно понять принцип функционирования первых процессоров и получить базовые знания, необходимые для понимания современных компьютеров. Вы сможете воспроизвести Kim Uno, потратив меньше 50 долларов. Благодаря такой низкой цене подобными проектами можно поделиться с другими энтузиастами. Дополнительную информацию вы найдете на странице https://obsolescence.wixsite.com/obsolescence/kim-uno-summary-c1uuh/.
А вот еще один пример: Михалис Василакис (Michalis Vasilakis) обожает вручную создавать недорогие инструменты. Отличный пример — его мини-плоттер с ЧПУ на основе Arduino (рис. 1.4). В этом проекте используются плата Arduino, механизмы от старых приводов компакт-дисков и другие недорогие детали для создания устройства с числовым программным управлением (ЧПУ), которое может рисовать с высокой точностью на плоской поверхности. Больше информации вы найдете на странице http://www.ardumotive.com/new-cnc-plotter.html.
Рис. 1.4. Мини-плоттер с ЧПУ на основе Arduino
Это лишь несколько случайных примеров, показывающих возможности применения Arduino. Уже сейчас вы сможете создавать собственные простые проекты, а после прочтения этой книги — и более сложные.
Если вы сторонник социального обучения, то найдите в сети местных единомышленников и форумы энтузиастов Arduino, чтобы увидеть, что они делают, используя Arduino. Члены этих групп помогут взглянуть на мир Arduino с творческой стороны. Во многих сообществах создаются маленькие Arduino-совместимые платы. Там вы найдете массу интересного, познакомитесь с новыми людьми и поделитесь своими знаниями об Arduino с другими участниками.
ПРИМЕЧАНИЕ
На веб-странице https://nostarch.com/arduino-workshop-2nd-edition/ вы сможете загрузить файлы скетчей и найти дополнения и обновления к тексту книги.
Как и любые электронные устройства, плату Arduino можно приобрести в розницу, а продавцы предложат вам широкий выбор компонентов и аксессуаров. Я рекомендую во время покупок выбирать оригинальные версии Arduino или качественные копии, иначе вы рискуете купить неисправный товар. Не рискуйте, приобретая плату неизвестного производителя. Это увеличит как финансовые, так и физические и временные затраты на реализацию проекта. Список авторизованных распространителей Arduino можно найти по адресу http://arduino.cc/en/Main/Buy/.
Ниже приводится список поставщиков (в алфавитном порядке), к которым я рекомендую обращаться, если нужно купить компоненты и аксессуары для создания проектов на основе Arduino:
• Adafruit Industries (http://www.adafruit.com/);
• Arduino Store USA (https://store.arduino.cc/usa/);
• PMD Way (https://pmdway.com/);
• SparkFun Electronics (http://www.sparkfun.com/).
Список компонентов из этой книги, обновления и дополнения к тексту можно найти на сайте https://nostarch.com/arduino-workshop-2nd-edition/. Но пока отложите поход в магазин и ознакомьтесь с первыми главами, чтобы понять, что же потребуется в первую очередь, и не тратить деньги на ненужное.
Итак, программировать платы Arduino можно почти на любом компьютере, но важно иметь программное обеспечение (ПО), которое называют интегрированной средой разработки (Integrated Development Environment, IDE). Чтобы запустить это программное обеспечение, нужен компьютер, подключенный к интернету, с установленной на нем одной из следующих операционных систем:
• Mac OS X или выше;
• Windows 10 Home 32- или 64-разрядной или выше;
• Linux 32- или 64-разрядной (Ubuntu или подобной ей).
Разработка IDE ведется с 2005 года, и к настоящему времени широко используются версии 2.x (точное число x в номере версии у всех может быть разным, но сами инструкции из этой книги остаются актуальными). По сравнению с версией 1.x, у версии 2.x есть некоторые функции, упрощающие разработку скетчей, включая интерактивное автодополнение, улучшенную навигацию и более удобные средства управления платами и библиотеками. Кроме того, для некоторых плат отладчик позволяет запускать и останавливать выполнение скетча в интерактивном режиме. Но если вы новичок в мире Arduino, вам об этом беспокоиться не нужно. Просто помните, что команда Arduino всегда работает над улучшением инструментария.
А сейчас самое время загрузить и установить IDE. Для этого перейдите к разделу с названием вашей операционной системы и следуйте инструкциям по установке. Не забудьте вместе с платой Arduino купить подходящий кабель USB. Даже если у вас еще нет этой платы, все равно загрузите IDE и займитесь ее исследованием.
В этом разделе вы найдете инструкции по загрузке и настройке Arduino IDE в macOS.
1. Откройте страницу загрузки (https://www.arduino.cc/en/software/) и загрузите последнюю доступную версию IDE для вашей операционной системы.
2. Дважды щелкните на файле .dmg в папке Downloads (Загрузки). Когда откроется окно установки, перетащите значок Arduino в папку Applications (Приложения).
3. Откройте IDE (рис. 1.5).
Рис. 1.5. Окно IDE в macOS
4. Теперь нужно настроить IDE для использования платы Arduino Uno. Щелк-ните на верхнем значке на левой боковой панели окна IDE, чтобы открыть Boards Manager (Менеджер плат). Найдите вариант с названием платы Arduino Uno и нажмите кнопку Install (Установить).
5. Разверните список в верхней части окна IDE, где виден текст no board selected (плата не выбрана), и выберите пункт Select Other Board & Port (Выбрать другую плату и порт). Затем выберите Arduino Uno из предложенного списка плат.
Вам может быть предложено установить пакет инструментов командной строки для разработчика (Command Line Developer tools) — установите его.
Теперь аппаратное и программное обеспечение готовы к работе, и можно перейти к разделу «Безопасность».
Здесь вы найдете инструкции по загрузке и настройке Arduino IDE в Windows.
1. Откройте страницу загрузки (http://arduino.cc/en/software/) и загрузите последнюю доступную версию IDE для вашей операционной системы.
2. Браузер может предложить выбор между сохранением и запуском загруженного файла. Выберите Run (Запустить), чтобы установка началась автоматически по завершении загрузки. Если этого не произошло, после окончания загрузки отыщите файл Arduino.exe в папке Downloads (Загрузки) и запустите его для установки IDE. После завершения установки запустите IDE.
3. Теперь нужно настроить IDE на использование платы Arduino Uno. Щелкните на верхнем значке на боковой панели слева в окне IDE, чтобы открыть Boards Manager (Менеджер плат). Отыщите вариант с названием платы Arduino Uno и нажмите кнопку Install (Установить).
4. Разверните список в верхней части окна IDE, где виден текст no board selected (плата не выбрана), и выберите пункт Select Other Board & Port (Выбрать другую плату и порт). Затем выберите Arduino Uno из предложенного списка плат.
Теперь аппаратное и программное обеспечение готовы к работе, и можно перейти к разделу «Безопасность».
Если вы пользуетесь Ubuntu Linux, ниже вы найдете инструкции по загрузке и настройке Arduino IDE в этой среде.
Для установки IDE следуйте указаниям ниже.
1. Откройте страницу загрузки (https://www.arduino.cc/en/software/) и загрузите последнюю доступную версию IDE для вашей операционной системы.
2. В диалоге выберите вариант Save File (Сохранить файл) и нажмите OK.
3. По завершении загрузки найдите файл .zip в папке Downloads (Загрузки), откройте его в Archive Manager (Диспетчер архивов) и извлеките содержимое на рабочий стол.
4. Перейдите в папку с извлеченным программным обеспечением и в окне терминала введите команду ./arduino-ide для запуска IDE.
5. Теперь нужно настроить IDE. Для этого подключите плату Arduino к компьютеру с помощью кабеля USB.
6. Выберите пункт меню ToolsPort (ИнструментыПорт) и затем порт /dev/ttyACMx в подменю, где x — цифра (для выбора должен быть доступен только один порт с подобным именем2).
Теперь аппаратное и программное обеспечение готовы к работе.
Чем бы вы ни занимались, нужно сначала обезопасить себя и окружающих. Как вы потом увидите, я буду использовать в работе простые ручные инструменты, электрические устройства с питанием от аккумуляторов, разные ножи и резаки и иногда — паяльник. Ни в одном из представленных далее проектов вам не придется работать с напряжением обычной электросети. Оставим это специалистам-электрикам. Но не забывайте, что нельзя прикасаться к оголенным проводам под высоким напряжением!
Вы собираетесь пуститься в увлекательное путешествие, где будете создавать устройства, прежде казавшиеся фантастическими. В этой книге вас ждут 65 проектов на основе Arduino, от очень простых до относительно сложных. Все они были спроектированы специально, чтобы помочь вам научиться создавать что-нибудь полезное. Итак, в путь!
1 Температура в градусах Фаренгейта. — Примеч. пер.
2 Для некоторых клонов порт будет выглядеть как dev/ttyUSBx. — Примеч. науч. ред.
В этой главе мы займемся исследованием платы Arduino и среды разработки Arduino IDE, которая будет использоваться для создания скетчей (так в мире Arduino называются программы) и загрузки их в плату Arduino. Вы познакомитесь с базовой структурой скетча и основными функциями, а также создадите и загрузите свой первый скетч.
Что такое Arduino? Согласно определению на сайте Arduino (http://www.arduino.cc/), это открытая аппаратная платформа для макетирования электронных устройств, основанная на гибком и простом в использовании аппаратном и программном обеспечении. Она предназначена для всех, кто интересуется созданием интерактивных устройств.
Проще говоря, Arduino — это маленький компьютер, который можно запрограммировать для взаимодействия с разными физическими объектами с помощью разных входных и выходных сигналов. Основная модель Arduino, Uno, небольшая и может легко поместиться на ладони, как можно видеть на рис. 2.1.
На первый взгляд плата выглядит не очень внушительно, но она позволяет создавать устройства, взаимодействующие с окружающим миром. Используя практически неограниченный спектр устройств ввода и вывода, таких как датчики, индикаторы, дисплеи, электромоторы и т.д., вы сможете запрограммировать любые взаимодействия для создания функционального устройства. Например, художник может создать светодиодную инсталляцию, мигающую в такт движениям проходящих мимо посетителей, студенты — сконструировать автономного робота, который будет обнаруживать открытый огонь и гасить его, а синоптики — спроектировать систему измерения температуры и влажности и передавать эти данные в свои системы в виде текстовых сообщений. Еще больше примеров вы сможете найти, просто поискав в интернете.
Рис. 2.1. Небольшая плата Arduino Uno
Теперь подробнее исследуем аппаратную часть Arduino Uno (ее физическое устройство). Если вы не поймете что-то в этой главе, не расстраивайтесь, потому что все, о чем будет рассказываться, мы детально разберем в следующих.
Осмотрите плату Uno со всех сторон. Поверните ее к себе стороной с разъемами, как показано на рис. 2.2.
Рис. 2.2. Разъем USB и разъем подключения питания
Слева находится разъем подключения универсальной последовательной шины (Universal Serial Bus, USB). С его помощью плата подключается к компьютеру, он выполняет такие три функции, как питание устройства, загрузка ваших скетчей с инструкциями и обмен данными с компьютером. Справа находится разъем подключения блока питания. С его помощью можно подключить плату к стандартному блоку питания (понижающему напряжение до 5 В)3.
В центре, чуть ниже середины, находится микроконтроллер (рис. 2.3).
Рис. 2.3. Микроконтроллер
Микроконтроллер — это «мозг» Arduino, маленький выполняющий инструкции компьютер с микропроцессором, имеющий несколько видов памяти для хранения данных и инструкций и имеющий различные входы и выходы для вывода или ввода данных. Чуть ниже микроконтроллера есть две группы контактов, как показано на рис. 2.4.
Рис. 2.4. Контакты питания и аналоговые входы
Слева находятся контакты питания и контакты для подключения внешней кнопки сброса. Группа справа — шесть контактов аналоговых входов. Они используются для измерения уровней напряжения электрических сигналов. Контакты A4 и A5 могут использоваться для обмена данными с другими устройствами.
Вдоль верхнего края платы располагаются еще две группы разъемов, как показано на рис. 2.5.
Рис. 2.5. Контакты цифровых входов/выходов
Контакты с номерами от 0 до 13 — это цифровые входы/выходы. С их помощью можно определять наличие или отсутствие входных электрических сигналов или генерировать выходные. Контакты с номерами 0 и 1 известны как последовательный порт и могут использоваться для обмена данными с другими устройствами, например с компьютером через преобразователь последовательного интерфейса — USB (UART-USB). Разъемы со знаком тильды (~) могут генерировать электрический сигнал переменного напряжения (который на экране осциллографа выглядит как морские волны, именно поэтому и выбран волнообразный знак тильды). Эти контакты можно использовать, к примеру, для создания световых эффектов или управления электродвигателями.
На плате Arduino есть несколько хорошо знакомых нам устройств — светодиодов. Они испускают свет, когда через них течет ток. На плате четыре светодиода: один, с подписью ON, находится возле правого края и служит индикатором подключенного к плате электропитания. Другие три располагаются ближе к левому краю, рядом друг с другом, как показано на рис. 2.6.
Светодиоды с подписями RX и TX зажигаются во время обмена данными между платой Arduino и подключенными устройствами через последовательный порт и USB. Светодиод L предназначен для нужд пользователя (он подключен к контакту цифрового входа/выхода с номером 13). Небольшой черный квадрат слева от светодиодов — это микроконтроллер, управляющий интерфейсом USB. Именно он позволяет Arduino обмениваться данными с компьютером, но вам едва ли придется иметь с ним дело.
И наконец, на рис. 2.7 показана кнопка RESET (Сброс).
Как это иногда случается с компьютерами, в плате Arduino тоже может что-то пойти не так. Когда все ваши попытки «привести ее в чувство» не возымеют успеха, останется только нажать кнопку сброса и перезапустить Arduino. Простая кнопка RESET (Сброс) на плате предназначена для перезапуска Arduino и решения проблем, неустранимых другими способами.
Рис. 2.6. Светодиоды на плате
Рис. 2.7. Кнопка RESET (Сброс)
Одна из замечательных особенностей системы Arduino — простота ее расширения. К ней легко добавляются новые аппаратные функции. Два ряда контактов вдоль каждой стороны позволяют подключить плату расширения (shield в терминах Arduino) — другую плату с контактами, которые подключаются в разъемы на Arduino. На рис. 2.8 показана плата расширения с интерфейсом Ethernet, с помощью которой Arduino может обмениваться данными через сети и интернет.
Рис. 2.8. Плата расширения Ethernet для Arduino
Обратите внимание, что у платы расширения Ethernet тоже есть дополнительные гнездовые ряды контактов. Это позволяет подключать сверху дополнительные платы расширений. На рис. 2.9 показана еще одна, вставленная сверху, плата с большими цифровыми индикаторами, датчиком температуры, дополнительным устройством хранения данных и большим светодиодом.
Помните, что во избежание «конфликтов» вы должны знать назначение контактов платы расширения. В продаже есть макетные платы, на которых можно собирать свои схемы. Об этой возможности мы поговорим в главе 7.
Рис. 2.9. Плата с цифровыми индикаторами и датчиком температуры
Аппаратную часть Arduino дополняет программная — набор инструкций, сообщающих аппаратной части, что и как делать.
В главе 1 вы уже установили ПО IDE на свой компьютер и настроили для работы с платой Arduino. Теперь мы поближе познакомимся с IDE и напишем первую простую программу (или скетч) для Arduino.
Из рис. 2.10 мы видим, что среда разработки Arduino IDE напоминает простой текстовый процессор. Окно IDE делится на три основные области: управление, ввод текста и вывод сообщений.
Область управления (см. рис. 2.10, вверху) содержит заголовок окна, меню и панель инструментов. В заголовке окна отображается имя файла скетча (например, Blink) и версия IDE (например, Arduino 2.0.0-beta.4). Ниже находится полоса меню (File (Файл), Edit (Правка), Sketch (Скетч), Tools (Инструменты) и Help (Помощь)) и панель инструментов с пиктограммами.
Рис. 2.10. Среда разработки Arduino IDE
Как и в другом текстовом процессоре или редакторе щелчком на любом элементе меню выводится список соответствующих команд:
• File (Файл) — команды для сохранения, загрузки и печати скетчей; богатый набор примеров скетчей, которые можно открыть; подменю Preferences (Настройки);
• Edit (Правка) — команды копирования, вставки и поиска, обычные для любого текстового процессора;
• Sketch (Скетч) — команда для проверки и компиляции скетча перед загрузкой в плату, команда доступа к папке со скетчем и команда импортирования;
• Tools (Инструменты) — много разных команд и команды для выбора типа платы Arduino и порта USB;
• Help (Помощь) — ссылки на разные темы и версию IDE.
Под полосой меню есть панель инструментов с шестью пиктограммами. Если навести указатель мыши на любую из них, появится название соответствующей команды. Ниже кратко описываются пиктограммы в порядке слева направо:
• Verify (Проверить) запускает проверку скетча на корректность и отсутствие программных ошибок;
• Upload (Загрузить) запускает проверку скетча и последующую его загрузку в плату Arduino;
• New (Новый) открывает новый пустой скетч в новом окне;
• Open (Открыть) открывает ранее сохраненный скетч;
• Save (Сохранить) сохраняет открытый скетч. Если у него еще нет названия, вам будет предложено ввести его;
• SerialMonitor (Монитор порта) открывает новое окно для обмена данными между платой Arduino и IDE.
Область ввода текста (см. рис. 2.10, в центре) служит для ввода исходного кода скетчей. Имя текущего скетча отображается на вкладке вверху слева (по умолчанию скетчу присваивается имя с текущей датой). Здесь вводится исходный код скетча, как в обычном текстовом редакторе.
Область вывода сообщений (см. рис. 2.10, внизу) — черная прямоугольная область в нижней части окна IDE. В ней будут выводиться самые разные сообщения, включая результаты проверки скетчей, успешность загрузки в плату и др.
Справа внизу под областью вывода сообщений отображается тип вашей платы Arduino и порт USB, к которому она подключена, — в данном случае Arduino Uno on COM6.
Скетч для Arduino — это набор инструкций, определяющий пути решения стоящей перед вами задачи. Другими словами, это программа. В этом разделе вы создадите и загрузите простой скетч, который заставит мигать светодиод на плате (рис. 2.11), включая и выключая его ежесекундно.
Рис. 2.11. Светодиод с меткой L на плате Arduino
ПРИМЕЧАНИЕ
Не стремитесь досконально разобраться в командах в скетче, представленном здесь. Его цель — показать, насколько просто заставить Arduino работать по заданной вами программе. Поэтому, встретив что-то непонятное, не останавливайтесь и продолжайте читать.
Для начала подключите плату Arduino к компьютеру с помощью кабеля USB. Затем запустите IDE и в раскрывающемся списке выберите вашу плату (Arduino Uno) и тип порта USB, как показано на рис. 2.12. Это позволит убедиться, что плата правильно подключена.
Рис. 2.12. Выбор платы Arduino Uno
Сначала введем комментарий, описывающий назначение скетча. Комментарий — это примечание любой длины, находящееся в исходном коде скетча и написанное для пользователя. С помощью комментариев можно оставлять примечания для себя или других, инструкции или описание важных деталей. При создании скетчей для Arduino всегда полезно добавлять комментарии, описывающие ваши намерения. Они пригодятся вам и в том случае, если вы вновь вернетесь к скетчу позднее.
Чтобы добавить однострочный комментарий, введите два символа слеша и текст комментария, например:
// Скетч мигает светодиодом. Автор: Мэри Смит, создан 07/01/21
Два слеша подряд сообщают среде разработки, что она должна игнорировать следующую за ними строку во время проверки скетча на отсутствие ошибок.
Чтобы написать комментарий из нескольких строк, введите символы /* в строке перед ним и символы */ в строке после него:
/*
Скетч мигает светодиодом
Автор: Мэри Смит, создан 07/01/21
*/
Комбинации символов /* и */ сообщают среде разработки, что она должна игнорировать текст между ними.
Оставьте комментарий одним из этих способов и сохраните скетч, выбрав пункт меню FileSaveAs (ФайлСохранить как). Введите короткое имя скетча (например, blinky) и нажмите OK.
По умолчанию среда разработки сохраняет скетчи в файлах с расширением .ino и добавляет его автоматически. В данном случае скетч должен сохраниться в файле с именем blinky.ino и появиться в папке с вашими скетчами.
Следующий этап в создании любого скетча — добавление функции voidsetup(). Она содержит инструкции, которые плата Arduino выполняет только один раз после каждого сброса или включения питания. Чтобы создать функцию setup(), добавьте после комментария следующие строки:
void setup()
{
}
Наша программа должна включать и выключать светодиод L на плате Arduino. Этот светодиод подключен к контакту цифрового входа/выхода с номером 13. Цифровые входы/выходы либо определяют наличие электрического сигнала, либо генерируют сигнал по команде. В этом проекте мы будем генерировать сигнал, включающий светодиод.
Введите следующую строку между фигурными скобками ({ и }):
pinMode(13, OUTPUT); // настроить контакт 13 как цифровой выход
Число 13 в листинге определяет нужный нам контакт. Он настраивается на работу в режиме OUTPUT, то есть он будет генерировать (выводить — output) электрический сигнал. Если нужно определять наличие входящего электрического сигнала, следует указать режим INPUT. Обратите внимание, что вызов функции pinMode() завершается точкой с запятой (;). Каждая строка с инструкциями в скетчах Arduino должна завершаться именно так.
В конце сохраните скетч еще раз, чтобы случайно не потерять результаты своих трудов.
Как вы помните, наша цель — заставить светодиод включаться и выключаться снова и снова. Для этого создадим функцию loop(), которую плата Arduino будет выполнять, пока кто-то не выключит питание или не нажмет кнопку RESET (Сброс).
Введите код, выделенный полужирным шрифтом в следующем листинге, чтобы создать пустую функцию loop(). Не забудьте завершить новый раздел закрывающей фигурной скобкой (}) и затем снова сохраните скетч.
/*
Скетч мигает светодиодом
Автор: Мэри Смит, создан 07/01/21
*/
void setup()
{
pinMode(13, OUTPUT); // Настроить контакт 13 как цифровой выход
}
void loop()
{
// Поместите сюда код, который должен выполняться в цикле
}
ВНИМАНИЕ
Среда разработки Arduino IDE не поддерживает автоматическое сохранение скетчей, поэтому старайтесь почаще сохранять свою работу!
Теперь поместите в тело voidloop() вызовы функций, которые будет выполнять Arduino.
Введите следующий код между фигурными скобками, ограничивающими тело функции loop(), а после щелкните на пиктограмме Verify (Проверить), чтобы убедиться, что при вводе не было допущено ошибок:
digitalWrite(13, HIGH); // Включить напряжение на выходе 13
delay(1000); // Пауза в одну секунду
digitalWrite(13, LOW); // Выключить напряжение на выходе 13
delay(1000); // Пауза в одну секунду
Давайте поближе познакомимся с этими командами. Функция digitalWrite() управляет напряжением, которое подается на цифровой выход — в нашем случае на контакт 13, к которому подключен светодиод L. Второй параметр в вызове этой функции (HIGH) указывает, что она должна установить «высокий» (high) уровень напряжения. В результате через контакт и светодиод L потечет электрический ток и светодиод включится.
Функция delay() приостанавливает работу скетча на указанный период времени — в данном случае после включения светодиода. delay(1000) гарантирует, что он останется включенным следующие 1000 миллисекунд (одну секунду).
Затем мы снимаем напряжение со светодиода вызовом digitalWrite(13,LOW);. Течение электрического тока останавливается, и светодиод гаснет. В конце вызовом delay(1000); выполняется еще одна пауза в одну секунду, в течение которой светодиод остается выключенным.
Ниже приводится полный исходный код скетча:
/*
Скетч мигает светодиодом
Автор: Мэри Смит, создан 07/01/21
*/
void setup()
{
pinMode(13, OUTPUT); // Настроить контакт 13 как цифровой выход
}
void loop()
{
digitalWrite(13, HIGH); // Включить напряжение на выходе 13
delay(1000); // Пауза в одну секунду
digitalWrite(13, LOW); // Выключить напряжение на выходе 13
delay(1000); // Пауза в одну секунду
}
Прежде чем продолжить, сохраните скетч!
Проверка скетча позволяет убедиться, что в нем нет ошибок и он понятен Arduino. Для проверки скетча щелкните на пиктограмме Verify (Проверить) в IDE и немного подождите. Когда проверка скетча закончится, в области вывода сообщений должен появиться текст, как показано на рис. 2.13.
Рис. 2.13. Скетч успешно проверен
Сообщение Done compiling (Компиляция завершена) говорит о том, что скетч проверен и готов к загрузке в плату Arduino. Здесь показано, какой объем памяти будет использован (в данном случае 924 байта) из имеющихся 32 256 байт.
А что, если проверка не увенчалась успехом? Допустим, вы забыли добавить точку с запятой после второго вызова функции delay(1000). Если во время проверки в скетче найдутся ошибки, в области вывода сообщений должно появиться сообщение об ошибке, как показано на рис. 2.14.
Рис. 2.14. Информация об ошибке в области вывода сообщений
IDE выводит текст с описанием ошибки (expected';'before'}'token — «отсутствует точка с запятой перед }») и выделяет в исходном коде строку с ошибкой или строку, следующую за ней. Это помогает быстро найти ошибку и устранить ее.
Убедившись, что скетч был введен верно, сохраните его, проверьте подключение платы Arduino и щелкните на пиктограмме Upload (Загрузить) на панели инструментов IDE. Среда разработки проверит скетч еще раз и потом загрузит его в плату. В процессе загрузки мигание светодиодов TX/RX на плате (рис. 2.6) подтвердит, что идет обмен информацией между Arduino и компьютером.
После этого наступит момент истины: плата Arduino начнет выполнять ваш скетч. Если все было сделано правильно, светодиод L начнет мигать с секундными интервалами!
Поздравляю. Теперь вы знаете, как ввести, проверить и загрузить скетч Arduino.
После запуска скетча у вас может возникнуть желание поменять его поведение, например изменить длительность интервала времени включения/выключения светодиода. IDE во многом похож на текстовый редактор, поэтому вы можете открыть сохраненный скетч, изменить необходимые значения, сохранить его и загрузить в плату. Чтобы увеличить частоту мигания, уменьшите параметры в обоих вызовах функции delay до одной четверти секунды (до 250 миллисекунд), как показано ниже:
delay(250); // Пауза в одну четвертую секунды
Затем снова загрузите скетч. После этого светодиод начнет мигать чаще, с интервалами в одну четверть секунды.
Вооруженные новоприобретенными знаниями и умениями ввода, правки, сохранения и загрузки скетчей Arduino, вы готовы перейти к следующей главе. Там вы познакомитесь с другими функциями и принципами проектирования, сконструируете простую электронную схему и узнаете еще много интересного.
3 Согласно спецификации рекомендованное напряжение должно находиться в диапазоне 7–12 В. — Примеч. науч. ред.