Главная Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

0 / 0
Насколько вам понравилась эта книга?
Какого качества скаченный файл?
Скачайте книгу, чтобы оценить ее качество
Какого качества скаченные файлы?
Данное руководство описывает построение и программирование приложений для интернета вещей (loT). Первая часть книги посвящена экспериментам на популярной платформе Arduino с целью научить читателя основным принципам схе­мотехники, вторая часть посвящена примерам практической реализации проектов для IoT на базе Raspberry Pi 3, где затрагиваются как сервисы для приложения под ОС Android Тhings, так и облачные платформы интернета вещей.

Издание предназначено широкому кругу читателей, интересующихся современной электроникой, программированием и любящих собирать различные устройства своими руками.
Год:
2018
Издание:
1
Издательство:
ДМК Пресс
Язык:
russian
Страницы:
204 / 205
ISBN 13:
9785970607305
Файл:
PDF, 28,70 MB

Возможно Вас заинтересует Powered by Rec2Me

 

Ключевые слова

 
0 comments
 

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

Individual Differences and Personality (Third Edition)

سال:
2018
زبان:
english
فائل:
PDF, 7.29 MB
0 / 0
2

Exploring Lifespan Development

سال:
2017
زبان:
english
فائل:
PDF, 93.65 MB
5.0 / 0
С. Л. Макаров

Arduino Uno и Raspberry Pi 3:
от схемотехники к интернету вещей

Москва, 2019

УДК 004. 738, 004.62
ББК 32.973
М15

Макаров С. Л.
М 1 5 Arduino Uno и Raspberry P i 3 : от схемотехники к интернету вещей. - М. :
ДМКПресс, 20 18. - 204 с. : ил.

ISBN 978-5-97060-730-5

Данное руководство описывает построение и программирование приложений
для интернета вещей (loT). Первая часть книги посвящена экспериментам на по­
пулярной платформе Arduino с целью научить читателя основным принципам схе­
мотехники, вторая часть посвящена примерам практической реализации проектов
для IoT на базе Raspberry Pi 3, где затрагиваются как сервисы для приложения под
ОС Android Тhings, так и облачные платформы интернета вещей.

Издание предназначено широкому кругу читателей, интересующихся современ­

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

УДК 004. 738, 004.62
ББК 32.973

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

ISBN 978-5-97060-730-5

© Макаров С. Л., 2018
© Оформление, издание, ДМК Пресс, 2018

Содержание
Рецензия...............................................................................................................5
Введение. .............................................................................................................8
Часть 1. Практика на базе комплекта интернет-вещей
Arduino Uno R3 StarterLearning Kit с RFID-модулем.......................11
Введение.................................................................................................................12
Состав комплекта..................................................................................................14
Немного о макетной плате, резисторах и безопасности ...................................23
Практическое занятие 1. Hello, world!..................................................................28
Практическое занятие ; 2. Эксперимент с мигающим светодиодом...................30
Практическое занятие 3. Эксперимент с контролируемой
потенциометром яркостью свечения светодиода через порт PWM..................31
Практическое занятие 4. Эксперимент с внешним мигающим
светодиодом...........................................................................................................34
Практическое занятие 5. Эксперимент с рекламной расцветкой......................36
Практическое занятие 6. Светофорный эксперимент........................................38
Практическое занятие 7. Эксперимент с пищалкой............................................40
Практическое занятие 8. Эксперимент с датчиком наклона.............................42
Практическое занятие 9. Эксперимент с чистым входным сигналом...............44
Практическое занятие 10. Расширенный эксперимент с чистым сигналом.....47
Практическое занятие 11. Эксперимент по чтению аналогового значения.....49
Практическое занятие 12. Эксперимент по управлению звуком и светом.......52
Практическое занятие 13. Эксперимент с датчиком огня..................................54
Практическое занятие 14. Эксперимент с вольтметром.....................................57
Практическое занятие 15. Эксперимент с распознаванием голоса...................59
Практическое занятие 16. Эксперимент с температурным сенсором...............62
Практическое занятие 17. Разноцветный термостат..........................................64
Практическое занятие 18. Эксперимент с одноразрядным цифровым
светодиодным индикатором................................................................................66
Практическое занятие 19. Эксперимент с четырёхразрядным цифровым
светодиодным индикатором................................................................................71
Практическое занятие 20. Эксперимент со светодиодной матрицей................77
Практическое занятие 21. Эксперимент с трёхцветным светодиодом.............83
Практическое занятие 22. Эксперимент с модулем 74HC595.............................86
Практическое занятие 23. Кнопочный модуль 4×4 и библиотеки......................89
Практическое занятие 24. Часы реального времени DS1307..............................93

4



Содержание

Практическое занятие 25. Эксперимент с датчиком уровня воды....................97
Практическое занятие 26. Эксперимент с сенсором температуры
и влажности DHT11.............................................................................................100
Практическое занятие 27. Эксперимент с релейным модулем........................102
Практическое занятие 28. Эксперимент с жидкокристаллическим
монитором LCD1602A.........................................................................................104
Практическое занятие 29. Эксперимент с шаговым двигателем.....................107
Практическое занятие 30. Эксперимент с серводвигателем............................110
Практическое занятие 31. Эксперимент с игровым джойстиком....................113
Практическое занятие 32. Эксперимент с инфракрасным пультом
дистанционного управления..............................................................................115
Практическое занятие 33. Эксперимент с RFID-модулем RC522.....................120
Практическое занятие 34. Эксперимент с системой контроля доступа .........123

Часть 2. Практика на Raspberry Pi 3 (модель B)...............................126
Введение ..............................................................................................................127
Установка ОС Android Things..............................................................................129
Первый проект в ОС Android Things – трёхцветный светодиод.......................131
Второй проект в Android Things – система сигнализации................................135
Третий проект в Android Things – система мониторинга окружающей
среды....................................................................................................................147
Четвёртый проект в Android Things – объединение Android Things
с облачной платформой интернета вещей........................................................163
Пятый проект в Android Things – шпионский глаз............................................188
Заключение.....................................................................................................200
Список использованных источников....................................................202

Рецензия
Интернет вещей – перспективная развивающаяся область науки и техники,
включающая огромное количество направлений – от умной розетки до промышленного интернета вещей, от умного дома до кибербезопасности в облачных платформах интернета вещей. Теоретическая и практическая составляющие этой области привлекают всё больше внимания в последние годы, однако
в основном литература по интернету вещей имеет скорее теоретический, чем
практический характер. Поэтому существует потребность именно в разработке практической стороны вопроса интернета вещей, в учебниках и пособиях,
к которым относится и данное пособие, по приобретению практического опыта в этой области, находящегося на стыке аппаратного и программного обеспечения и поэтому одинаково необходимого как инженерам, так и программистам.
Рецензируемое учебное пособие С. Л. Макарова предназначено для студентов как бакалавриата, так и магистратуры, обучающихся по направлениям
подготовки группы 09.00.00 «Информатика и вычислительная техника», включая такие направления, как 09.03.01 и 09.04.01 «Информатика и вычислительная техника», 09.03.02 и 09.04.02 «Информационные системы и технологии»,
09.03.03 и 09.04.03 «Прикладная информатика», 09.03.04 и 09.04.04 «Программная инженерия», а также направления 11.04.02 «Инфокоммуникационные
технологии и системы связи». Пособие может быть также полезно студентам
технических специальностей, IT-специалистам, интересующимся областью
интернета вещей, а также всем тем, кто заинтересован в получении опыта различных схемотехнических решений и создании реальных проектов для интернета вещей.
Рукопись учебного пособия соответствует требованиям к содержанию образовательной программы ГОС подготовки бакалавров направления 09.03.04
«Программная инженерия» и других программ подготовки бакалавров и магистров, где изучаются курсы, связанные со схемотехникой, интернетом вещей
и киберфизическими системами.
Учебное пособие состоит из двух частей, содержащих как теоретические,
так и практические сведения о работе с платами Arduino Uno и Raspberry Pi
3, и осно­вано на двух англоязычных источниках, содержание которых переработано, исправлено и дополнено некоторыми элементами, например пользовательским интерфейсом для разрабатываемых приложений. В первой части книги представлены все рассматриваемые компоненты соответствующего
набора интернет-вещей, характеристики наиболее популярной для обучения
платы Arduino Uno, а также дана краткая теория по необходимым компонентам, их характеристикам, способам подключения. Далее рассмотрены 34 схе-

6



Рецензия

мотехнических задания-эксперимента, каждое из которых снабжено двумя
схемами подключения и описанием технической и программной сторон эксперимента.
Вторая часть пособия посвящена основам интернета вещей на примере
платы Raspberry Pi 3 и операционной системы для интернета вещей Android
Things от компании Google. В этой части рассматриваются пять практических
заданий, в том числе работа с облачной платформой интернета вещей Samsung
Artik и использование возможностей Google Firebase для хранения и обработки
данных. Каждое задание снабжено хорошо прокомментированным программным кодом и схемой подключения, а также базовой теорией о протоколах или
архитектуре интернета вещей там, где это необходимо.
В целом рассматриваемая книга производит хорошее впечатление. Изложение материала идёт по принципу от простых заданий к сложным. Стиль
представления и графический материал способствуют успешному освоению
материала – в частности, пособие снабжено 145 рисунками, и с первой части
к каждому эксперименту предусмотрена как принципиальная схема, так и схема с макетной платой, что дополнительно способствует изучению существую­
щих стандартов представления электронных компонентов и схем. Список источников содержит все необходимые сведения, в том числе библиотеки и коды
программ, необходимые для выполнения некоторых заданий пособия. Читатели приобретают навыки работы с платформой Arduino и средой Android
Studio, которая является официальным инструментом разработки нативных
приложений для операционной системы Android. При этом книга не требует
специальных навыков или подготовки в определённой области: всё, что требуется, – это уверенное владение компьютером.
Считаю целесообразным публикацию учебного пособия и его использование в качестве учебника по направлениям подготовки бакалавров и магистров
09.00.00 «Информатика и вычислительная техника» и 11.04.02 «Инфокоммуникационные технологии и системы связи», а также в рамках конкретного курса
«IoT Ecosystems», который послужил основой для его разработки.
Научный руководитель
образовательной (магистерской) программы
«Интернет вещей и киберфизические системы»,
руководитель научно-учебной группы интернета вещей,
к. т. н., профессор Департамента компьютерной инженерии
Московского института электроники и математики им. А. Н. Тихонова
Национального исследовательского университета
«Высшая школа экономики»
Восков Леонид Сергеевич

Рецензия

 7

Книга Макарова С. Л. «Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей» является практическим учебным пособием по схемотехническим
решениям и построению и программированию IoT-приложений, основанным
на двух англоязычных источниках, содержание которых переработано и дополнено. Основное внимание в книге уделено практической составляющей:
первая часть посвящена схемотехническим экспериментам на популярной
платформе Arduino с целью научить читателя основным принципам схемотехники, а также терпению; вторая же часть посвящена примерам практической
реализации проектов для интернета вещей на базе Raspberry Pi 3, в которой
затрагиваются как сервисы для приложения под ОС Android Things, так и облачные платформы интернета вещей.
Актуальность книги обусловлена тем, что литература по IoT чаще всего носит скорее теоретический, нежели практический характер, однако в данной
книге, наоборот, основной акцент сделан на практической составляющей области интернета вещей. Эта область является основой цифровизации экономики, перспективным направлением информационных технологий, которое уже
сейчас меняет многие аспекты нашей повседневной жизни и активно применяется в таких отраслях, как промышленность, энергетика, транспорт, сельское
хозяйство, умный город. Благодаря этой книге любой интересующийся может
получить практический опыт применения технологии интернета вещей и придумать свой проект в любой из этих областей, как и во многих других.
Книга является достаточно интересной и не требует каких-то выдающихся
навыков в области инженерии или программирования – её может освоить любой читатель, интересующийся современными информационными технологиями. Учебное пособие разработано для высших учебных заведений, готовящих
кадры будущей цифровой экономики нашей страны – инженеров и программистов, но также подойдёт для специалистов в разных областях технологий,
интересующихся именно практической стороной IoT. Читателей ждёт знакомство со средами проектирования Arduino IDE и Android Studio, с облачным сервисом Artik Cloud и другими сервисами, некоторыми возможностями Google
Firebase, а также с операционной системой Android Things, приложениям для
которой посвящена вторая часть книги. Автор даёт подробные комментарии
по ходу проектирования приложений, а также советы по созданию пользовательского интерфейса. В книге присутствуют теоретические сведения по некоторым базовым элементам принципиальных схем, по основам архитектуры
интернета вещей. Книга выполняет свою главную функцию – зажечь интерес
к области интернета вещей и мотивировать читателя на создание собственных
проектов, генерировать свои идеи IoT-приложений и реализовывать их.
Директор Ассоциации интернета вещей
Андрей Колесников

Введение
Интернет вещей – активно развивающееся направление, несмотря на отсутствие единых стандартов и разнообразие платформ и самих интернет-вещей,
предлагающихся различными компаниями в виде готовых решений со своим
дизайном. Существует огромное количество определений этого термина, однако в большинстве случаев под интернетом вещей понимается сбор и обмен
данными между различными физическими устройствами (также называемыми умными устройствами, подключёнными устройствами, интернет-вещами
и т. д.) на основе определённой сети (здесь иногда добавляют фразу «там, где
раньше это было невозможно»). Физическими устройствами могут быть автомобили, здания, камеры, бытовая техника, компьютерная техника и любые
другие устройства, оснащённые электроникой, программным обеспечением,
сенсорами, двигателями и модулями для подключения к сети интернет, даже
города. Данные, получаемые с физических устройств, как правило, собираются
в определённом сетевом хранилище – дата-центре, облаке, сервере, репозитории и т. д., которые затем могут быть подвержены анализу методами data
mining, machine learning, cloud computing и другими с целью решения тех или
иных задач, стоящих перед разработчиками. Для хранения, обработки и визуа­
лизации этих данных, а также для предоставления различных сервисов для
управления интернет-вещами и анализа данных существуют различные облачные платформы для интернета вещей.
Если взглянуть на кривую компании Гартнер по появляющимся технологиям (emerging technologies), то можно увидеть интернет вещей на пике в 2014–
2015 годах, исчезновение IoT в 2016–2017 годах и затем появление на кривой
в 2018 году на пути к области спада и разочарования. Однако реальные надёжные технологии (второй версии) появляются только после прохождения
через эту впадину избавления от иллюзий. Кроме того, если мы возьмём 2016–
2017 годы, на кривой Гартнер область интернета вещей представляет другое
направление – платформы для интернета вещей, – активно развивающееся
в настоящее время и находящееся на пике этой кривой в 2018 году. В одном из
практических заданий второй части данного учебного пособия применяется
одна из облачных платформ для интернета вещей и две небольшие вспомогательные платформы со своими сервисами.
С интернетом вещей вплотную я познакомился около полутора лет назад. До
этого я, конечно, слышал об этом направлении, или области, – ведь один из студентов, руководителем которого был Восков Л. С., ещё в МИЭМе показывал мне
свой проект по умной розетке, которая контролировалась удалённо через вебинтерфейс и зажигала включённую в неё настольную лампу. На слуху были разнообразные умные вещи – умный дом, умный автомобиль, умный холодильник,
умная подставка для яиц в холодильнике и т. д. Безусловно, тогда это всё было
непросто – датчики и сенсоры, платы и прочее оборудование стоили немало.

Введение

 9

Но потом появилась потребность подготовить курс «Экосистемы интернета вещей», и… началось. Прежде всего было не понятно, что делать с практическими
занятиями по этому курсу – что давать студентам? «Железок» никаких не было
и в помине, в то же время очень хотелось, чтобы студенты работали на реальном
оборудовании. Но на каком? Как построить практику? Времени оставалось всё
меньше, и тогда я решил попробовать купить комплект с Raspberry Pi 3 – тогда, в 2017 году, несмотря на то что операционная система Android Things была
ещё без официального релиза первой версии, по ней были довольно интересные
примеры и проекты на официальном сайте разработчиков под Android Things,
и не только там. Однако, начав разбираться с системой, я понял, что начинать
надо не с этого, а с самых основ, с физики, схемотехники, которых у студентовпрограммистов, для которых предназначался курс, конечно же, не было. Поэтому вторым шагом была покупка комплекта с платой Arduino Uno – такого, в котором было бы максимально возможное количество «железок». Этот комплект
заставил вспомнить основы физики, научиться терпению при определении
ошибки в проекте – в схеме она, или в компонентах, или в коде, или в методичке, или где? – и многому другому, в том числе пришлось пропустить через себя
методичку с огромным количеством ошибок на ломаном английском языке, которая была на сайте магазина, продававшего комплект. Так появилась первая
часть этой книги. Тогда же, когда в моём распоряжении оказались Raspberry Pi 3,
HDMI-мини-монитор и Android Things, на книжной полке внезапно появилась
и книга Android-разработчика Франческо Эззолы «Android Things Projects», которую пришлось печатать на заказ – недешёвое удовольствие. И, несмотря на
устаревший на 1 год код, английский язык и некоторые ошибки в заданиях, или
просто иногда пропуск некоторых важных деталей кода в книге, в этом году выросла вторая часть этой книги, посвящённая нескольким проектам под Android
Things на плате Raspberry Pi 3. Они приведены к реалиям существующей в настоящее время 1-й версии данной операционной системы и переработаны с целью
добавления пользовательского интерфейса, которого в оригинале в некоторых
заданиях просто нет. Осваивая книгу и пропуская задания через себя, я понимал, что вот оно – как это просто сделать, оказывается: контроль и полив растения удалённо через смартфон, контроль за удалённой квартирой с помощью
ИК-датчика и камеры, пока ты находишься в отпуске, или – получение всей информации о погоде за окном на твоём мониторе в комнате в виде приложения
Android Things, включая прогноз погоды.
Данное учебное пособие предлагает повторить этот путь. Первая часть этой
книги предназначена для того, чтобы читатели (студенты) освоили основы
схемотехники. Да-да, именно в этом и заключается предназначение комплекта
модулей, датчиков, проводов, экранов, двигателей, джойстиков, индикаторов,
карт и ключей, резисторов и светодиодов с кнопками, вместе с макетной платой и платой Arduino Uno – для того чтобы читатели освоили прежде всего схемы подключения, схемотехническую базу и вспомнили основы физики в части
тока и напряжения, а также номиналы резисторов, как их посчитать, – на реальных устройствах, которые могут выйти из строя или работать неправильно
при неправильном подключении. Задача же второй части данного учебного

10



Введение

пособия – перейти от схемотехники к реальным проектам для интернета вещей, с их типовой архитектурой, передачей данных от сенсоров к плате, от
платы в облако, из облака в мобильное приложение-компаньон, позволяющее
осуществить управление платой удалённо, или визуализировать и проанализировать полученные данные, и главное – воплотить в жизнь реальную архитектуру приложений для интернета вещей.
Практические эксперименты первой части учебного пособия построены по
определённой схеме. Сначала перечисляются компоненты, необходимые для
выполнения задания. Затем приводится описание задания – та часть, которую
все обычно пропускают (особенно студенты). После этого дается сначала принципиальная электрическая схема соединения компонентов, а затем – более интересная цветная схема с макетной платой, на которую обычно и ориентируется
большинство читателей (она красивее). Затем идёт код программы (иногда их
несколько), который необходимо скопировать в Arduino IDE и запустить. Для
того чтобы развлечь читателя, комментарии в исправленном коде оставлены
без изменений, как они есть в оригинале [9], – на ломаном английском.
Эксперименты из второй части построены немного по-другому – сначала идёт
небольшое введение, потом – перечень компонентов и их свойства и изобра­
жения. После этого приводится схема подключения компонентов, причём только цветная, с макетной платой. А затем идут этапы выполнения задания, в которых присутствует как исходный код для копирования в Android Studio, так
и пояснения к этому коду, а также, при необходимости, скриншоты различных
ресурсов и платформ интернета вещей, используемых для выполнения задания.
Отдельно хочется выразить слова благодарности студентам 3-го курса 2017–
2018 и 2018–2019 учебных годов образовательной программы «Программная
инженерия» департамента программной инженерии факультета компьютерных наук Национального исследовательского университета «Высшая школа
экономики», на которых проходила апробация всех заданий из этого пособия.
Они не только находили и исправляли ошибки и неточности в некоторых заданиях, но и предлагали разумные вещи для улучшения методических указаний, послуживших основой для этой книги, и даже предоставили материал для
научной статьи. И конечно, нельзя не сказать эти слова руководителю упомянутого департамента – Авдошину С. М., который в своё время ошарашил меня
курсом «Экосистемы интернета вещей», без которого не было бы никакого
учебного пособия.
Для выполнения заданий из этого учебного пособия необходимо приобрес­
ти, как минимум, 2 комплекта: [1] и [21]. Также отдельно могут понадобиться дополнительные модули и датчики для выполнения заданий из 2-й части
учебного пособия, а именно: модуль с Raspberry Pi камерой v 2.1, PIR сенсор
и датчик давления, влажности и температуры BME280.
Данная книга выложена в электронном виде на сайте [22], поэтому код из
любого рассмотренного практического задания можно скопировать непосредственно из электронной версии.
При подготовке этого учебного пособия не только ни одна плата, но и ни
один светодиод, модуль или датчик не пострадал.

Часть

1

Практика на базе
комплекта интернет-вещей
Arduino Uno R3 Starter
Learning Kit с RFID-модулем

Основано на 34 практических заданиях на английском языке [9]

12



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

Введение
Arduino – наиболее популярная платформа для разработки как простых, так и достаточно сложных проектов для интернета вещей. Популярность этой платформы обусловлена не только её низкой ценой, но и огромным количеством обучающих материалов, примеров проектов в сети, в том числе и на таких ресурсах, как
YouTube, различных форумов разработчиков, а также хорошим официальным
сайтом [2, 3], на котором Arduino Team постоянно предлагает ознакомиться с новыми проектами на базе одной из плат Arduino. Существует множество разновидностей плат Arduino, например: Uno, Leonardo, 101, Mega, Zero, Ethernet, Gemma,
MKR FOX 1200 и т. д. Все платы на официальном сайте разделены на категории:
начальный уровень (для обучения, к нему относится Uno), платы с расширенными функциями, платы для интернета вещей, платы для носимых устройств (в основном в тандеме с Lillypad, например для умной одежды). Несмотря на прос­
тоту среды Arduino IDE и её недостатки, в ней можно разрабатывать интересные
и сложные проекты; кроме того, существует официальный онлайн-аналог среды
и многочисленные библиотеки, способные нарастить её небольшой функционал.
Именно поэтому для данного учебного пособия выбрана эта платформа, а конкретно Arduino Uno версии R3, и наиболее богатый и разнообразный в отношении количества различных модулей, сенсоров, датчиков и других компонентов
комплект с этой платой – комплект интернет-вещей для начинающих на базе
Arduino Uno версии R3 (Starter Learning Kit) с RFID-модулем [1].
Arduino Uno Rev. 3 – лучшая плата для начинающих. Согласно официальному сайту, эта плата является наиболее используемой и обладает наибольшим
количеством документации из всех плат семейства Arduino. Arduino Uno – это
плата на основе 8-битного микроконтроллера ATmega328P, см. рис. 1 – самая
большая чёрная деталь на плате. Таким образом, по сути, плата Arduino Uno является платой расширения, или платой разработчика (developer board), сердце
которой – ATmega328P.

Рис. 1  Лицевая сторона платы Arduino Uno

Введение

 13

На плате есть и другой микроконтроллер – ATmega16U2, служащий для связи
микроконтроллера ATmega328P и USB порта платы (на рис. 1 – чёрный квад­
рат слева от TX и RX). У Arduino Uno есть 14 цифровых выходов (пинов) ввода/
вывода, обозначенных на плате цифрами (из них 6 ШИМ (PWM, Pulse-Width
Modulation) выходных пинов широтно-импульсной модуляции, обозначенных
символом ~), 6 аналоговых входов – A0-A6 (с разрешением в 10 бит, т. е. 1024
различных значения), кварцевый кристалл-резонатор на 16 Мгц, выход USB-Bf
(на рис. 1 – слева вверху под кнопкой перезагрузки), выход для подключения
питания от адаптера питания (7–12 В) или батарейки на 9 В (обычно – в виде
прямоугольного параллелепипеда; выход находится слева внизу на рис. 1),
ICSP-разъём (In Circuit Serial Programming, программирование по последовательному протоколу чипа, уже подключённого в некоторую схему, или прос­
то – программирование контроллера внутри схемы; на рис. 1 – посередине
правого края) и кнопка перезагрузки (слева вверху, см. рис. 1). Кроме этого,
плата располагает тремя пинами земли (GND), одним пином на 5 В, одним –
на 3.3 В, Vin-пином для подключения внешнего источника питания или для
получения напряжения, если плата подключена к внешнему адаптеру питания
через разъём питания (через USB-соединение питание ограничивается 5 В),
IOREF-пином (Input Output Reference – информация о напряжении микроконтроллера) и встроенным светодиодом L (или 13).
Микроконтроллер ATmega328 на Arduino Uno поставляется уже с загрузчиком (bootloader), что позволяет загружать код без использования внешнего
программатора. При желании можно обойти загрузчик и запрограммировать
микроконтроллер через ICSP. ATmega328 обладает 32 Кб встроенной памяти
(0.5 Кб из которых отведено загрузчику). В дополнение ко всему некоторые
пины платы имеют несколько функций, например пины 2 и 3 могут использоваться для вызова внешних прерываний при некоторых событиях, например
при событии смены высокого сигнала на пине на низкий (falling edge). Мы не
будем углубляться в мельчайшие подробности характеристик платы – приведённой информации вполне достаточно для знакомства с платой и выполнения 34 практических заданий части 1 этого учебного пособия. Также здесь не
будет приведена распиновка платы, так как, по сравнению с платой Raspberry
Pi 3, с которой мы познакомимся в части 2 этого учебного пособия, для Arduino
Uno делать распиновку нет смысла – все пины уже подписаны на плате, см.
рис. 1.
Далее рассмотрим, что же входит, помимо самой платы Arduino Uno R3, в состав упомянутого комплекта интернет-вещей для начинающих на базе Arduino
Uno версии R3 (Starter Learning Kit) с RFID-модулем. Этот комплект был выбран
также и потому, что позволяет сделать очень много практических заданий на
основе различных компонентов и устройств, которые в него входят: конечно
же, число возможных проектов на его основе далеко не ограничивается 34 экспериментами, приведёнными в этой части учебного пособия, а ограничивается лишь фантазией разработчика. Практические задания предусмотрены для

14



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

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

Состав комплекта
Комплект интернет-вещей Arduino Uno Starter Learning Kit с RFID-модулем [1]
состоит из следующих компонентов, показанных на рис. 2–38.

Рис. 2  Плата Arduino Uno R3 + USB-кабель (Am-Bm)

Рис. 3  Макетная плата (breadboard)

Состав комплекта

 15

Рис. 4  Резисторы на 220 Ом, 10 шт.

Рис. 5  Резисторы на 1 кОм, 10 шт.

Рис. 6  Резисторы на 10 кОм, 10 шт.

16



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

Рис. 7  Светодиоды, 15 шт. (5 синих, 5 жёлтых, 5 красных)

Рис. 8  Кнопки, 4 шт.

Рис. 9  Соединительные провода: m-m и f-f

Состав комплекта

Рис. 10  Шнур питания от батарейки на 9 В для Arduino Uno

Рис. 11  Динамик-пищалка, 2 шт.

Рис. 12  Датчик наклона (tilt switch), 2 шт.

 17

18



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

Рис. 13  Потенциометр (10 КОм)

Рис. 14  Фоторезистор, 2 шт.

Рис. 15  Инфракрасный датчик огня

Рис. 16  Температурный сенсор LM35

Рис. 17  Датчик уровня шума

Состав комплекта

Рис. 18  Одноразрядный цифровой
светодиодный индикатор

Рис. 20  Светодиодная матрица 8×8

Рис. 22  Модуль 74HC595

 19

Рис. 19  Четырёхразрядный цифровой
светодиодный индикатор

Рис. 21  Трёхцветный светодиод
с общим катодом (на модуле)

Рис. 23  Кнопочный модуль 4×4

20



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

Рис. 24  Часы реального времени
RTC DS1307

Рис. 25  Релейный модуль

Рис. 26  Датчик уровня воды (Water Sensor)

Рис. 27  Сенсор температуры и влажности DHT11

Состав комплекта

 21

Рис. 28  Жидкокристаллический монитор (дисплей) LCD1602A

Рис. 29  Два штырьковых коннектора по 8 пинов каждый

Рис. 30  Шаговый двигатель

Рис. 31  Модуль для шагового двигателя

22



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

Рис. 32  Серводвигатель (сервопривод)
с комплектом насадок

Рис. 33  Игровой джойстик

Рис. 34  Инфракрасный пульт
дистанционного управления NEC

Рис. 35  Инфракрасный приёмник

Рис. 36  RFID-модуль RC522

Немного о макетной плате, резисторах и безопасности

 23

Рис. 38  RFID-ключ
Рис. 37  RDIF-карта

Немного о макетной плате, резисторах и безопасности
Как в этой, так и во второй части книги вам понадобятся знания о том, что
такое макетная плата, как включать в схему светодиод и как отличить один
резистор от другого. Но сначала – о безопасности.
Главное правило обращения с электричеством, компонентами и модулями
гласит: помните, что как вы можете повредить технику, так и она может нанести вам вред! Перед тем как выполнять задания, нужно помнить о простых
правилах работы с электронными компонентами и тем более системами на
модуле (SoM, System on Module), к которым относится Arduino Uno, платами
и прочими электронными изделиями:
 собирать и разбирать/менять схему можно только при выключенном питании (отсоединённом USB-кабеле) – имейте терпение;
 светодиоды и другие чувствительные компоненты подключаются строго
согласно схеме – через резисторы;
 не стоит путать питание с землёй, плюс с минусом;
 никакого статического электричества! Если на вас свитер из синтетики
или шерсти, если вы любите часто поправлять свои волосы, заземляйте
свои руки, перед тем как дотрагиваться до электронных изделий (дотроньтесь до корпуса компьютера, железной ножки стола, батареи и т. д.)!
Макетная плата – удобное средство для соединения электрических компонентов в простые схемы и даже в схемы среднего уровня сложности. Макетные
платы бывают разных типов, но в основном выделяют два типа: с разрывом
горизонтальных линий земли и питания сверху и снизу посередине и без разрыва. В комплекте вам могут попасться оба типа. Макетная плата без разрыва горизонтальных линий земли и питания сверху и снизу показана на рис. 3.
Если разрыва нет, это явно показывается синими и красными линиями: на

24



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

рис. 3 линии идут непрерывно, значит, разрыва нет. В случае наличия разрыва
красные и синие линии прерываются посередине платы.
Соединения макетной платы без разрыва линий земли и питания показаны на рис. 39. Соединения макетной платы с разрывом этих линий, соответственно, проходят снизу и сверху по горизонтали от краёв только до середины
макетной платы. Что же касается вертикальных соединений, у макетных плат
обоих рассмотренных типов соединения прерываются 3 раза по вертикали:
между зелёными разъёмами верхнего и нижнего рядов на рис. 39 нет соединения, так же, как и между зелёными и красными рядами.
Все принципиальные схемы и схемы с макетной платой в этой книге нарисованы с помощью наиболее распространённой и популярной открытой биб­
лиотеки + редактора электронных компонентов и схем Fritzing [10].

Рис. 39  Соединения макетной платы без разрывов
верхних и нижних горизонтальных линий питания и земли

Теперь – светодиод. У каждого светодиода есть короткий и длинный выходы (пины) – см. рис. 7. Они представляют, соответственно, катод и анод. На
схеме у светодиодов эта особенность выражена следующим способом: более
длинный пин (анод) изогнут у основания цветной колбы светодиода, более короткий же (катод) входит в колбу прямо, без изгиба (см., например, рисунок
с макетной платой к практическому занятию 3 в этой части учебного пособия).
При подключении светодиода надо помнить, что ток по нему может протекать
только в одном направлении – от анода к катоду (светодиод – вид диода, который работает только в одном направлении), таким образом, анод (длинный
пин) всегда подключается к источнику питания или управляющему сигналу,
тогда как катод (короткий пин) обычно подключается к земле через сопротив-

Немного о макетной плате, резисторах и безопасности

 25

ление, ограничивающее ток, протекающий через светодиод. Светодиод нельзя
подключать без сопротивления, иначе он может сгореть. Чем больше сопротивление в схеме со светодиодом (от 220 Ом до 10 кОм), тем меньше яркость
свечения светодиода (меньший ток проходит через него). Подробнее о светодиодах можно почитать, например, в источнике [12].
И наконец, резисторы. На схемах резисторы обозначаются следующим образом (слева – в англоязычных источниках, справа – в русскоязычных источниках):
ИЛИ

Рис. 40  Обозначение резисторов на принципиальных схемах [11]

У каждого резистора есть номинал: 220 Ом, 1 кОм и т. д. Резисторы, входящие в комплект с Arduino Uno и в другие комплекты с иными платами, обладают цветовыми насечками, см., например, рис. 4–6. Каждый цвет обозначает
цифру, от 0 до 9, и цветовых насечек на резисторе несколько: таким образом
можно определить номинал резистора, пользуясь правилами, изображёнными
на рис. 41 [11]. Подобные резисторы, несмотря на их размер, всё же встречаются в реальных схемах, используемых в промышленности: например, управляющая плата холодильника Whirlpool собрана с помощью таких резисторов,
поскольку холодильник большой и делать миниатюрную плату с применением
сверхточных технологий, которые используются при производстве материнской платы для настольного компьютера, не имеет смысла.
Обладая знаниями из таблицы, взятой с сайта [11] и изображённой на рис. 41,
вы можете подсчитать номиналы и точность резисторов, входящих в комплект
с Arduino Uno и показанных на рис. 4, 5 и 6. На рис. 42 даны примеры резисторов и их номиналов.
Резисторы для схем бывают двух типов (здесь мы для простоты не говорим
о специфических типах резисторов – потенциометрах, термисторах, варисторах, фоторезисторах и т. д., хотя некоторые из них встретятся нам в этой части
книги): включённые последовательно в электрическую цепь (series resistors)
по отношению к пинам платы, и – параллельно, которые, в свою очередь, подразделяются на стягивающие и подтягивающие резисторы (pull-down и pullup resistors). Значения последовательных резисторов обычно варьируются от
100 до 300 Ом, стягивающих и подтягивающих – от 1 кОм до 10 кОм. Последовательные резисторы подключаются в электрическую цепь, чтобы защитить
оборудование и, главное, пины платы от больших значений тока: например,
так подключается светодиод через резистор номиналом 220 Ом, чтобы светодиод не перегорел. Каждый пин платы обладает ограниченной способностью
быть источником (высокое значение, логическая 1) или приёмником (низкое
значение, логический 0) электрического тока через электрическую схему, под-

26



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

ключённую к нему. Периферия, которая в схеме потребляет большие значения
тока – больше, чем может позволить себе пин платы, даже если это происходит
очень короткое время, может повредить пин на плате – именно поэтому в схему последовательно включается ограничивающий ток резистор, например как
показано на рис. 43 в схеме со светодиодом [19], где OUT – это пины платы,
а Vcc – источник питания.

Рис. 41  Правила подсчёта номинала резистора и его точности [11]

Рис. 42  Примеры резисторов и их номиналов [11]

Немного о макетной плате, резисторах и безопасности

 27

Рис. 43  Пример подключения последовательных резисторов [19]

Стягивающие и подтягивающие резисторы подключаются в схему параллельно по отношению к пинам и используются для того, чтобы, соответственно, «стягивать» значение напряжения на пине к низкому (обеспечивать стабильный сигнал логического 0) или «подтягивать» значение напряжения на
пине к высокому (стабильная логическая 1). Делается это потому, что цифровые входы, не подключённые ни к какой нагрузке, являются «плавающими»
(см. рис. 44, левую часть – представьте её без включённых туда резисторов;
I/O – пины платы): они подвержены различного рода помехам и искажениям, появляющимся из-за электромагнитных возмущений, которые влияют на
значения, читаемые с пинов платы приложениями, и могут способствовать
непредсказуемым изменениям этих значений. Стягивающие и подтягивающие резисторы заставляют пины показывать правильные значения 0 или 1,
даже если к ним ничего не подключено [19]. В правой части рис. 44 изображён
случай с переключателем: если в схеме не будет подтягивающего резистора,
значение при открытом переключателе на входном пине IN платы, читающем
значения, будет плавающим; если в схеме есть такой резистор, изображённый
на рисунке, значение на пине IN будет точно соответствовать логической единице. Для более подробного ознакомления с резисторами рекомендуются источники [11] или [19].

28



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

Рис. 44  Пример подключения стягивающего (pull-down)
и подтягивающего (pull-up) резисторов [19]

Ещё один момент, о котором следует упомянуть, – это тот факт, что при подключении различных модулей и сенсоров надо также обращать внимание не
только на схему, но и на надписи рядом с выходами (пинами) этих сенсоров.
Сенсоры в наборах могут отличаться, хоть эта вероятность и мала, поэтому
всегда проверяйте наличие информации/меток рядом с пинами устройств, используемых в практических заданиях, – это первично, а схема вторична. Прос­
той пример – задание 24 из этой части книги, где к конкретным пинам платы
подключаются конкретные выходы модуля часов реального времени, обозначения которых можно увидеть на самом модуле – см. рис. 24. Некоторые обозначения: – (минус), GND, G – земля; + (плюс), VCC, VIN, +5V, 3.3V – питание;
CLK, SCK – clock (время, частота), DAT, SDA – date/data (дата, данные), RST –
reset (сброс настроек), R,G,B – цвета на трёхцветном светодиоде; A0 (аналоговый), D0 (цифровой), SIG, S, VRx,VRy, SW – пин для передачи сигнала (данных).
Теперь, получив базовые знания об основных элементах, использующихся
в практических экспериментах, и о технике безопасности, можно приступать
к выполнению заданий.

Практическое занятие 1. Hello, world!
В этом практическом занятии нам понадобятся:
 плата Arduino Uno;
 USB-кабель (Am-Bm).

Практическое занятие 1. Hello, world!

 29

Первое, что нужно сделать, – это выбрать, где вы будете работать: в среде Arduino IDE или с помощью онлайн-системы Arduino Create (Arduino Web
Editor) через веб-браузер. В первом случае необходимо скачать Arduino IDE ([2]
-> Windows Installer) и установить её, включая установку драйвером для COMи USB-портов. Во втором случае необходимо зарегистрироваться на сайте ([3]
-> sign up).
Далее требуется пройти урок-инструкцию по следующему адресу: [4]. Это
нужно для того, чтобы установить драйверы для платы, если они правильно
не установились или нет прав администратора на компьютере, а также для
того, чтобы правильно настроить среду и выбрать плату Arduino Uno и COMпорт.
После этого можно приступать к занятию. Подсоедините плату Arduino
Uno к USB-порту компьютера (если вы ещё этого не сделали). Если драйверы
установлены правильно, плата должна определиться, её название появится
в панели уведомлений операционной системы. На плате есть встроенный
мини-светодиод (miniLED), подключённый к 13-му цифровому порту. В этом
занятии мы напишем код, который будет ожидать ввода через консоль буквы
R, при её вводе заставлять miniLED 13 загораться на полсекунды, гаснуть на
полсекунды и писать в консоль фразу Hello, World! Так как miniLED является встроенным, никаких дополнительных схем создавать не надо. Для того
чтобы открыть консоль, надо выбрать в пункте меню Инструменты Монитор порта, или нажать комбинацию Ctrl+Shift+M (Arduino IDE), или выбрать
пункт меню Монитор порта слева (Arduino Web Editor). Когда всё готово,
можно скопировать код ниже в среду и загрузить программу на плату с помощью кнопки ->.
В коде используется команда Serial.begin(9600), означающая, что скорость/
частота обмена данными платы с компьютером по UBS-соединению составляет 9600 bps (bits per second, бит в секунду). В консоли можно увидеть, что есть
и другие частоты, но для выполнения задания в консоли должна быть выставлена такая же частота (справа внизу).
Схема представлена на рис. 45.

Рис. 45  Схема подключения для практического занятия 1

30



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

Код программы
int val ;// define a variable val
int ledpin = 13 ;// define the digital interface 13
void setup ()
{
Serial.begin (9600) ;// set the baud rate to 9600, where the software settings keep
consistent.
pinMode (ledpin, OUTPUT) ;// set the digital output interface 13 is, Arduino, we use
the I / O port should be carried out like this definition.
}
void loop ()
{
val = Serial.read () ;// read the PC sends a command to the Arduino or characters, and
the
instruction or character assigned val
if (val == 'R') // determine the received command or character is «R».
{// If you receive a «R» character
digitalWrite (ledpin, HIGH) ;// lit Digital 13 LED.
delay (500);
digitalWrite (ledpin, LOW) ;// Off Digital 13 LED
delay (500);
Serial.println ("Hello World!") ;// Displays «Hello World!» String
}
}

Практическое занятие 2. Эксперимент с мигающим
светодиодом
В этом практическом занятии нам понадобятся:
 плата Arduino Uno;
 USB-кабель (Am-Bm).
В этом занятии мы всё ещё работаем со встроенным мини-светодиодом на
плате (miniLED), подключённым к 13-му цифровому порту. Напишем код, который будет заставлять miniLED 13 загораться на секунду и гаснуть на секунду.
Так как miniLED является встроенным, никаких дополнительных схем создавать не надо.
Схема представлена на рис. 46.
Код программы
int ledpin = 13 ;// define the digital interface 13
void setup ()
{
pinMode (ledpin, OUTPUT) ;// set the digital output interface 13 is, Arduino, we
use the I / O port should be carried out like this definition.
}
void loop ()
{
digitalWrite (ledpin, HIGH) ;// lit Digital 13 LED.

Практическое занятие 3. Эксперимент с контролируемой потенциометром

 31

delay (1000);
digitalWrite (ledpin, LOW) ;// Off Digital 13 LED
delay (1000);
}

Рис. 46  Схема подключения для практического занятия 2

Практическое занятие 3. Эксперимент с контролируемой
потенциометромяркостью свечения светодиода
через порт PWM
В этом практическом занятии нам понадобятся:
 плата Arduino Uno;
 USB-кабель (Am-Bm);
 потенциометр;
 светодиод;
 резистор на 220 Ом;
 макетная плата;
 соединительные провода.
В этом занятии мы познакомимся с потенциометром и портом PWM. PWM
(Pulse Width Modulation) – широтно-импульсная модуляция, или процесс
управления мощностью, подводимой к нагрузке, путём изменения отношения
периода импульса к длительности импульса при неизменной частоте. На плате Arduino Uno можно подавать значения от 0 до 255 на PWM-пин, что заставит
плату выдавать PWM-сигнал в определённые моменты времени, соответствующие поданному входному значению. Другими словами, в терминах напряжения, подавая разные значения от 0 до 255 на PWM-пин, мы заставляем плату
менять напряжение от 0 до 5 В. В коде используется функция analogWrite(pin,
value), с помощью которой можно менять напряжение, подаваемое на PWMпин, задавая value от 0 до 255. Эта функция используется для регулировки скорости вращения мотора, яркости светодиода и т. д.
Arduino Uno располагает несколькими PWM-пинами, обозначенными символом ~ рядом с номером пина: 3, 5, 6, 9, 10, 11 (см. рис. 1). С помощью потенци-

32



Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

ометра, подключённого к одному из аналоговых портов платы (A0–A6), и светодиода, катод (короткий пин) которого подключён через резистор на 220 ОМ
к земле (всегда! к минусу) и анод (длинный пин) которого подключён к одному из цифровых пинов (0–13) платы (всегда! к плюсу), мы будем регулировать
значение переменной val (крутя ручку потенциометра) и, соответственно, напряжение, которое выдаёт плата из этого цифрового пина.
Схема представлена на рис. 47–48.

Рис. 47  Принципиальная схема подключения для практического занятия 3

Практическое занятие 3. Эксперимент с контролируемой потенциометром

 33

Рис. 48  Схема подключения с макетной платой для практического занятия 3
Код программы
int potpin = 0 ;// define analog interface 0
int ledpin = 11 ;// define the digital interface 11 (PWM output)
int val = 0 ;// temporary values of the variables from the sensor
void setup ()
{
pinMode (ledpin, OUTPUT) ;// define the digital interface 11 as output
Serial.begin (9600) ;// set the baud rate to 9600
// NOTE: analog interface is automatically set to the input
}
void loop ()
{
val = analogRead (potpin) ;// read sensor analog values and assigned to val
Serial.println (val) ;// display val variable
analogWrite (ledpin, val / 4) ;// turn on the LED and set the brightness (PWM
output max 255)
delay (10) ;// delay of 0.01 seconds
}

34

•:•

Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 4. ЭКСПЕРИМЕНТ С ВНЕШНИМ
МИГАЮЩИМ СВЕТОДИОДОМ
В этом практическом занятии нам понадобятся:
О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О светодиод;
О резистор на 220 Ом;
О макетная плата;
О соединительные провода.
В этом занятии мы подсоединим внешний светодиод к цифровому порту 10
платы. Напишем код, который будет заставлять светодиод загораться на секун­
ду и гаснуть на секунду. В этот раз, по сравнению с занятием 2, светодиод у нас
внешний, поэтому надо собрать схему, показанную ниже. В схеме с внешним
светодиодом всегда должен быть резистор с малым сопротивлением (220 Ом),
иначе светодиод может перегореть.
Схема представлена на рис. 49- 5 0.

i�
i i ' 1; �
'

" }- ' ' 1

,,

· ;
<"\ �

' ;. р" ;',1

I• • • • '

г�·1�.1
-" .1у ;�.1

Ardulno
Uno
(Rev3)

··'

�J

!;1
'...' i

\

; 1 \'}•,1

1''.'''1.1 . �

�

i ' /,f,� f. 1 < 1j;
L {�f J .J

·• r

---- LED1
Red (бЗЗnm)

�

fritzi ng
Рис. 49 •:• П ринципиальная схема подключения дл я практического занятия 4

П рактическое занятие 4. Эксперимент с вне ш ним мига ющим светодиодом

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

fritzing
Рис. 50 •:• Схема подключения с макетной платой для практического занятия 4
Код n роrраммы
i.nt ledPi.n = 18; // define the i n teгface пимЬег 1Э
vot.d setup О
{
ptnMode (tedPi.n , OUTPUT ) ; // defi ne а s�a l l l амр i n teгface
}
votd loop О
{
dtgttalWrtte (tedPi.n , HIGH ) ; // l i t а s�a l l lамр
delay ( 1888 ) ; // De lay 1 second
dtgttalWrtte (tedPi.n , LOW) ; // ext i ngu i sh sмa l l l igh ts
delay ( 1888 ) ; // De lay 1 second

outpu t i n teгface

36

•:•

Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 5 . ЭКСПЕРИМЕНТ С РЕКЛАМНОЙ
РАСЦВЕТКОЙ
В этом практическом занятии нам понадобятся:
О плaтa Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О светодиоды - 6 шт. , по 2 каждого цвета ;
О резистор на 220 Ом - 6 шт. ;
О макетная плата;
О соединительные провода.
В этом занятии мы напишем код, который будет заставлять 6 светодиодов,
подключённых к чётным цифровым пинам платы Arduino Uno (2, 4, 6, 8, 10, 12),
загораться волной, имитируя ёлочную гирлянду или рекламный щит - сначала
все светодиоды загораются по очереди, потом гаснут по очереди.
Схема представлена на рис. 5 1- 5 2 .

.•

ff t '

O:Jifi,-

ef 1 ' -

(' 1 ' '

·'

l· 1

\.,

�

. ' //f.\

"1 1•

-;,

li!
[ i"

�".•: t:'

-;,

f l -i ' /i 'J

Arduino
Uno
(RevЗ)

r "
[)f1 < ' Л• !.I

.:. , ....,r_. '
'

' " ,t (

-;,

' ' �.1 "

, , 1 . , ; '' !/ :_ ' !
J \ ,.. ' Г.\ : � i ,;
' J : .: 1... "':

-;,

-;,

·j
•.'

...
,.

fritzJng
Рис. 5 1 •:• П ринципиальная схема подкл ючения для практического занятия 5

Практическое занятие 5 . Эксперимент с рекламной рас цветкой

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

"

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

fritzing
Рис. 52 •:• Схема подкл ючения с макетной платой для практического занятия 5
Код проrраммы
tnt ВАSЕ = 2 ; // the fi r s t опе L ED connec ted to the
tnt NUМ = б ; // L ED 's tota l

I / О p i ns

voi.d setup ( )
{
for (i.nt i. = ВАSЕ ; i. <=ВАSЕ*НUМ; i.+=2 )
{
pinMode ( i , OUTPUT ) ; // set the digi ta l I / О p i n as ап outpu t
}
}
voi.d loop ( )
{
for (i.nt i = ВАSЕ ; i. <=ВASE*NUМ; i+=2 )
{
di.gi.talWrite ( i. , LOW) ; // set the digi ta l I / О p i n ou tput i s « l ow" , tha t gradua l ly
turп off the
li.ghts
delay (200 ) ; // de l ay
}
for (i.nt i = ВАSЕ ; t <=ВАSЕ*НUМ; i.+=2 )
{
dtgi.talWri.te ( t , HIGH ) ; // set the digi ta l I / О p i n outpu t i s « l ow" , that gradua l ly
l igh ts

38

•:•

Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

delay (200 ) ; // de loy
}
}

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 6. (ВЕТОФОРНЫЙ ЭКСПЕРИМЕНТ
В этом практическом занятии нам понадобятся:
О плaтa Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О светодиоды - 3 шт. , разных цветов;
О резистор на 220 Ом - 3 шт. ;
О макетная плата ;
О соединительные провода.
В этом занятии мы эмулируем работу светофора. В наборе не оказалось зе­
лёноrо светодиода, поэтому будем использовать красный (цифровой пин 10
платы), жёлтый (пин 7) и синий (пин 4). Возможно, вам повезёт больше, и у вас
будет зелёный светодиод. Напишем код, который будет заставлять 3 светодио­
да переключаться с примерно той задержкой, которая принята в реальных све­
тофорах (от красного к зелёному).
Схема представлена на рис. 53-54.

,f "

;/[

н

�.

:�J P t

i '

titi
l"
1, , '//Pi
и
[ , •. "/,i 1

Ardulno
Uno
(Rev3)
f .

ч '

r · · �4.JM
'·

r . ...
[J

1 •

л·�л

1 �·;i,1 , ' '
/ , ; j ,, ",•"i 1 1.,,i • , 1
� , � - ·-� "'...,
. ,

,.
' �r

�

tJ;r

Рис. 5 3 •:• П ринципиальная схема подключения дл я практического занятия 6

•:•

Практическое занятие 6. Светофорный эксперимент

.

.
.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

frltz;ng
Рис. 54 •:• Схема подключения с макетной платой для практического занятия 6
Код проrраммы
recltecl = 18; // defi ne the i n terface пимЬег

i.nt

1е

i.nt yettowtecl = 7 ; // defi ne the пимЬег 7 In terface
i.nt greenlecl = 4; // define the пимЬег 4 Interface
voi.d setup ( )
{
ptnMode ( recltecl , OUTPUT ) ; // define а sмa l l red l igh t i n terface outpu t
i n terface
ptnMode (yeltowlecl , OUTPUT ) ; // define the ye l low l igh t in terface ou tpu t

interface

ptnMode (greenlecl , OUTPUТ ) ; // defi ne the sмa l l gгееп l igh t i n terface output
interface

}

voi.d loop О
{
dtgttalWrtte ( recllecl , HIGН) : // l i t red l i ghts
delay ( 1вве ) : // de lay of 1 second
dtgttalWrtte (recltecl , LOW ) ; // off red l igh t
dtgttalWrite (yellowlecl , HIGH) : // l igh t ye l l ow l i gh t
delay ( 288 ) ; // de l ay of е . г seconds
dtgttalWrtte (yellowtecl , LOW ) ; // off ye l l ow l igh t
dtgttalWrtte (greenlecl , HIGН ) : // flashes the green L ED

40

Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

•:•

delay ( 1000) ;// de lay of 1 second
digitalWrite (green1.td , LOW) ; // green L ED off
}

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 7. Э КСПЕРИМЕНТ С ПИ ЩАЛ КОЙ
В этом практическом занятии нам понадобятся:
О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О динамик-пищалка;
О кнопка ;
О макетная плата;
О соединительные провода.
В этом занятии мы должны слышать динамик-пищалку только тогда, когда
нажимаем на кнопку. Также важно знать, что у пищалки есть + и - выходы и +
подключается только к питанию или цифровому пину платы (в данном слу­
чае - пину 8), а минус - к земле. Если внимательно посмотреть на динамик­
пищалку, можно увидеть помеченный + на корпусе рядом с + контактом.
сх:ема представлена на рис. 55 -56.

51
ll.t

Arduino
Uno
(RevЗ)
f � '

r '

.L

i:::::J
, , , ..,_____..,. т
...
...

fritzi ng
Рис. 55 •:• П ринципиальная схема подкл ючения дл я практического занятия

7

•:• 41

Практическое занятие 7. Эксперимент с пищалкой

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.
.

.

.

.

.

.

.

.

.

.

.

fritzin.g
Рис. 56 •:• Схема подкл ючения с макетной платой для п рактического занятия
Код nроrр аммы
Ьuzzer = 8 ; // se t t i ng con tro ls the digi ta l IO foo t buzzer
vot.d setup ( )
{
pinMode (buzzer , OUTPUT ) ; // set the dig i ta l IO p i n �ode, OUTPUT out of Wen
}
vot.d loop ( )
{
unsigned char i , j ; // define var i aЫes
lllht.te ( 1 )
{
for ( i = е; i <88 ; i++) // Wen а frequency sound
{
digitalWrite (Ьuzzer , HIGH) ; // send vo i ce
delay ( 1 ) ; // De l ay 1�s
digitalWrite (Ьuzzer , LOW) ;// do not send vo i ce
delay ( 1 ) ; // de lay �s
\nt

}
for ( i = 8; i <189 ; i++ ) // Wen Qie out another frequency sound
{
digitalWrite (Ьuzzer , HIGH ) ; // send voi ce
delay ( 2 ) ; // de lay г�s
digitalWrite (Ьuzzer , LOW) ; // da not send vo i ce
delay ( 2 ) ; // de l ay г�s
}
}

7

42

•:•

Практика на базе комплекта интернет-вещей Ardui no Uno R3 Starter

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 8. ЭКСПЕРИМЕНТ С ДАТЧИКОМ НАКЛОНА
В этом практическом занятии нам понадобятся:
О плата Arduino Uno;
О USВ-кабель (Am-Bm) ;
О датчик наклона (tilt switch) ;
О светодиод;
О резистор на 220 Ом;
О макетная плата;
О соединительные провода.
Суть эксперимента в том, чтобы светодиод включался, когда мы меняем по­
ложение макетной платы в пространстве (наклоняем её) . Когда вы будете брать
и вставлять в плату датчик наклона (tilt switch), то можете почувствовать, что
внутри датчика действительно находится шарик (tilt mechanism - mechanical
ball), который перекатывается туда-сюда, тем самым меняя напряжение. Если
угол наклона платы около 90 градусов и больше, светодиод должен зажигаться,
если же плата возвращается в горизонтальное положение, светодиод гаснет.
Схема представлена на рис. 57-58.

1 ' .i.1 ,

,,
1\ '

51

Arduino
Uno
(RevЗI

! ;> _____

LEDl
Red (бЗЗnm)

fritzi ng
Рис. 5 7 •:• П ринципиальная схема подключения дл я практического занятия 8

Практическое занятие 8. Эксперим ент с датчиком наклона

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

fritzing
Рис. 58 •:• Схема подключения с макетной платой для практического занятия 8
Код программы
votd setup О
{
pinMode ( 8 , OUТPUT) ; // se t the digi ta l В p i n to ou t моdе
}
votd loop ( )
{
tnt t ; // define the амоип t of
wlli.te ( 1 )
{
t = analogRead ( 5 ) ; // read the ana l og vo l tage va l ue S
tf ( i> 286) // if greater than 512 (2. SV)
{
dtgttalWrite ( 8 , HIGH ) ; // led l igh t i s l i t
}
etse // Otherwise
{
dtgttalWrtte ( 8 , LOW) ; // off led l igh t
}
}
1

44

•:•

П ракти ка на базе ком плекта и нтернет-вещей Arduino Uno R 3 Starter

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 9. ЭКСПЕРИМЕНТ С ЧИСТЫМ ВХОДНЫМ
СИГНАЛОМ
В этом практическом занятии нам понадобятся :
О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О кнопка ;
О светодиод;
О резистор на 220 Ом;
О резистор на 10 кОм ;
О макетная плата ;
О соединительные провода.
В этом занятии мы соберём схему, в которой при нажатии на кнопку будет
загораться светодиод. Резистор на 10 кОм нужен для того, чтобы избежать по­
мех в сигнале и подавать точное значение О или 1 при нажатой кнопке. У нас
в схеме присутствуют 2 резистора: 1 подключён к кнопке, второй - к светодио­
ду. Тот, который подключён к кнопке ( 1 0 кОм), называется либо стягивающим
резистором (pull-down resistor), если при нажатии на кнопку мы должны полу­
чать сигнал О без помех на цифровом пине 7 (см. схему), либо подтягивающим
резистором (pull-up resistor), если при нажатии на кнопку мы должны получить
чистый сигнал 1 на пине 7 (наш случай). Номиналы стягивающих или подтяги­
вающих резисторов обычно варьируются от 1 кОм до 10 кОм. Тот же резистор,
который подключён к катоду светодиода, называется серийным, или после­
довательным (series resistor), и нужен для того, чтобы брать на себя часть тока
во избежание перегорания светодиода. Значения таких резисторов обычно
варьируются от 100 Ом до 300 Ом. Почему нам важен чистый сигнал в этом за­
нятии? Потому что мы читаем его с пина 7 с помощью функции digita1Read(7).
Схема представлена на рис. 59-60.

Практическое занятие 9 . Эксперимент с чистым в ходным сигналом

•:•

0 1 /ТХ

OJ Р\\'М

· , r '

51
Arduino
Uno
(Rev3)
LEDl
Red (бЗЗnm)

N ;Q

8....

,.. j:3

�

fritzi ng
Рис. 59 •:• П ринци п иальная схема подключения дл я п рактического занятия 9

45

Практика на базе комплекта интернет-вещей Arduino U no R3 Starter

.

.

.

.

.

.

.

.

.

.

.

.

.

.

"

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

"

.

.

.

.

.

••
.

.

.

.

.

.

.

.

.

.

.

.

.

.

frH z.ing
Рис. 60 •:• Схема подключения с макетной платой дл я практического занятия 9
Код nроrраммы
t.nt tedptn = 11 ; // define the i nteгface пи�Ьег 1 1
tnt tnptn = 7 ; // define the пи�Ьег 7 Inteгface
tnt vat ; // deftne а vог i аЫ е va l
votd setup ( )
{
ptnMode (tedptn , OUTPUT ) ; // deft ne а s�a l l la�p in teгface outpu t i n teгface
ptnMode (tnptn , INPUT ) ; // deft ne the key i n teгface fог the i nput i n teгface
}
void loop ( )
{
vat = d\g\talRead (tnptn ) ; // геаd digi ta l 7 - l e ve l va l ue a s s i gned to va l
tf (vat == LOW ) // tes t bu t ton i s pгessed, the button l i gh ts ир when pгessed s�a l l
{d\g\talWrtte (tedptn , LOW) ; }
etse
{dtg\talWrtte (tedpin , HIGH ) ; }
}

П рактическое занятие 10. Рас ш иренный эксперимент с чисты м сигналом

•:• 47

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 10. РАСШИРЕННЫЙ ЭКСПЕРИМЕНТ
С ЧИСТЫМ СИГНАЛОМ

В этом практическом занятии нам понадобятся:
О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О кнопка 3 шт. ;
О светодиоды разных цветов 3 шт. ;
О резистор на 220 Ом 3 шт. ;
О резистор на 10 кОм 3 шт. ;
О макетная плата ;
О соединительные провода.
В этом занятии мы соберём схему, в которой при нажатии на каждую из кно­
пок будет загораться соответствующий светодиод. В сложных схемах, подоб­
ных этой, лучше всего выводить питание и землю на отдельные рельсы ( + и ,
или красный и синий горизонтальный рельс) макетной платы.
Схема представлена на рис. 6 1-62.
-

-

-

-

-

С• ::;. .
if i')

53
52

51

Ardulno
Uno

(Rev3)

.... �

�

frit�ing
Рис. 6 1 •:• П ринципиальная схема подключения для практического занятия 10

48

Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

.

"

.

"

.

.

.

.

.

fritz.ing
Рис. 62 •:• Схема подключения с макетной платой для практического занятия 10
Код проrраммы
t.nt red\.td = 10 ;
t.nt ye\.1.ow\.td = 9 ;
t.nt grнn\.td = 8 ;
t.nt redpi.n = 7 ;
t.nt ye\.\.owpt.n = 6 ;
t.nt greenpt.n = S ;
t.nt red ;
t.nt ye\.\.ow;
t.nt green ;
vot.d setup ( )
{
pinMode ( red\.td , OUTPUT) ;
pinМode (ye\.\.ow\.td , OUTPUT ) ;
pinМode (green\.td , OUTPUT) ;
pinМode ( redpt.n , INPUT) ;

П ра ктиче ское занятие 11. Э ксперимент по чтению аналогового значения

•:• 49

pinMode (yettowpin , INPUT ) ;
pinMode (greenpin , INPUT ) ;

}
void loop ( )
{
red = digitalRead ( redpin ) ;
if ( red == LOW )
{digitalWrite ( redted , LOW ) ; }
etse
{digitalWrite ( redted , HIGH) ; }
yettow = digitalRead (yettowpin ) ;
if (yettow == LOW)
{digitalWrite (yettowted , LOW ) ; }
etse
{digitalWrite (yettowted , HIGH ) ; }
green = digitalRead (greenpin ) ;
if (green == LOW)
{digitalWrite (greented , LOW ) ; }
etse
{digitalWrite (greented , HIGH ) ; }

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 1 1. ЭКСПЕРИМЕНТ ПО ЧТЕНИЮ
АНАЛОГОВОГО ЗНАЧЕНИЯ
В этом практическом занятии нам понадобятся:
О плата Arduino Uno;
О USВ-кабель (Am-Bm) ;
О потенциометр ;
О макетная плата ;
О соединительные провода.
У Arduino Uno есть аналоговые входы AO-AS . Воспользуемся входом АО
и функцией analogRead(), чтобы считывать данные о текущем сопротивлении
потенциометра (значения от О до 1023, т. к. Arduino Uno располагает 10-битны­
ми аналоговыми или цифровыми портами, 2 л 1 0 1024 значения) и выводить
их на экран. В коде используется команда Serial.begin(9600), означающая, что
скорость/частота обмена данными платы с компьютером по UВS-соединению
составляет 9600 bps (Ьits per second, битов в секунду). В консоли должна быть
выставлена такая же частота (справа внизу). Не забудьте открыть консоль, что­
бы видеть сообщения (Ctrl+Sblft+М) !
Схема представлена на рис. 63-64.
=

50

•:•

П рактика на базе комплекта интернет-вещей Arduino Uno R3 Starter

·-·---·

,а · · - - ·1

:iOkQ :

+···-··-J

�.

f;

!

ttr � ! 1

i

fll A ! 1

!

:

1

.?
;:;

:;;

р·-,

,,

;_) f '1 f
!J/

l>.H I

р •, f.i '/', f,�

1" 1 �' r

'"
г,1,

•.

;.-.,

·

Arduino
Uno
1Rev3)

"� t· v�·"��

(" 11 i 'i, I/
07
:л·
r;t) Г ·/IМ

А41 t:; ОЛ
!1 ,1'-.(1

Г; 1 1 r·Nr,.i/f.t'i )' :
С.1 lit/.I �!)
lJ 1 '�·- 1'

t� '(

.

("
z
"

fritzi ng
еского заняти я 1 1
Рис. 6 3 •:• П ринцип иальна я схема подкл ючени я для п рактич

•:•

П рактическое занятие 1 1 . Эксперимент по чтению аналогового значения

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

::: : :::: : : : : : : : : : : : : : : : : : : : : : : : : : .
.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

.

.

.

•

•

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.
.

.
.

51

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

:::::::::: : : : : : : : :: : : : ::::
.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

frH z.i ng
Рис. 64 •:• Схема подключения с макетной платой для практического занятия 11
Код проrраммы
tnt potptn
8 ; // defi ne ana l og i n terface е
tnt tedptn = 13 ; // defi ne the digi ta l i n terface 1 3
tnt vat = 8 ; // wi l l defi ne the var iaЫe va l , and the i n i t i a l va l ue е
votd setup ( )
{
pinMode (tedptn , OUTPUT ) ; // ou tpu t i n terface defines the digi ta l i n terface
Sertal . begtn (96ее ) ; // se t the baud rate to 9608
}
votd loop ( )
{
digitalWrite (tedptn , HIGH) ; // digi ta l i n terface 13 of the L ED l i ghts
delay (58) ; // de l ay of e . es seconds
dtgitalWrtte (tedptn , LOW) ; // off L ED digi ta l i n terface 1 3
delay (58) ; // de lay of e . es seconds
vat = analogRead (potptn ) ; // read the va l ue of ana log i n terface е, and as s i gn va l
Serial . println (vat ) ; // shows the va l ue of va l
=

52

•:•

Практика на базе комплекта интернет-вещей Arduino Uno R3 Starter

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 1 2 . ЭКСПЕРИМЕНТ ПО УПРАВЛЕНИЮ
ЗВУКОМ И СВЕТОМ
В этом практическом занятии нам понадобятся:
О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О фоторезистор;
О динамик-пищалка ;
О макетная плата ;
О соединительные провода.
В данном занятии мы подсоединяем фоторезистор к пищалке, для того чтобы
управлять её громкостью с помощью освещения. Чем больше освещения, тем
меньше сопротивление фоторезистора и, соответственно, больше сила тока, про­
текающего через пищалку, а значит - громче писк. Фоторезисторы могут быть
не очень чувствительными, поэтому, для того чтобы услышать пищалку, надо
будет воспользоваться фонарём в смартфоне - посветить им на фоторезистор.
Схема представлена на рис. 65-66.

�1

'

' 1

/j

1" 1 . [)

"" '

• , ·. с· ;, • ;
lи

Arduino
Uno
(Rev3)

•'N'.•

t-----�-t

.L

�
....
...

ji1 1

� '•

1 , _�

r''N':1

'\·1

•<

j

1

., '

,.,
...

Рис. 65 •:• П ринцип иальная схема подключения для практического занятия 1 2

П рактическое занятие 12 . Эксперимент по управлению звуком и светом

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

frit z.i119
Рис. 66 •:• Схема подкл ючения с макетной платой для практического занятия 12
Код проrраммы
voi.d setup ( )
{
pinMode ( б , OUTPUT ) ;
}
voi.d loop ( )
{
whi.le ( 1 )
{
char i , j ;
whi.le ( 1 )
{
for ( t = 8; t <88 ; i++) // Wen Q i e опе frequency sound
{
dtgttalWrite ( б , HIGН ) ;
delay ( 1 ) ;
digttalWrtte ( б , LOW) ;
delay ( 1 ) ;
}
for ( t = 8; t <188 ; i++) // Wen Qie ou t ono ther frequency sound
{
dtgttalWrite ( б , HIGН ) ;

54

•:•

П ракти ка на базе ком плекта и нтернет-вещей Arduino Uno R 3 Starter
delay ( 2 ) ;
digitalWrite ( 6 , LOW ) ;
delay ( 2 ) ;
}
}

}
}

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 1 3 . ЭКСПЕРИМЕНТ С ДАТЧИКОМ ОГНЯ
В этом практическом занятии нам понадобятся :
О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О датчик огня ;
О динамик-пищалка ;
О резистор на 10 кОм ;
О макетная плата;
О соединительные провода.
Инфракрасный датчик огня очень чувствителен к цветовому спектру пламе­
ни. В нём свечение пламени преобразуется в слабый сигнал, идущий на вход
платы. Подключается датчик огня следующим образом, в отличие от светодио­
да : катод (короткий пин) подключается к источнику питания, а анод (длинный
пин) через резистор на 10 кОм подключается к земле, а до резистора идёт вы­
ход на аналоговый пин платы Arduino Uno. Датчик огня работает и без огня,
выдавая на аналоговый пин платы около 0. 3 В. Когда пламя находится слиш­
ком близко, датчик выдаёт уже 1 .0 В и больше. Поэтому в коде было бы целе­
сообразно использовать пороговое значение 0.6 В. Однако практика показала,
что на самом деле датчик очень чувствительный, и даже в комнате с верхним
освещением из трёх обыкновенных ламп накаливания выдаёт значение 984985, что соответствует 4.8 В, хотя никакого огня в комнате нет. Поэтому в коде
пороговое значение выставлено в 1000. В этом задании нам также понадобит­
ся консоль (Ctrl+Shift+M) и зажигалка/спички (зажигалка, конечно, получше
спичек).
Схема представлена на рис. 67-68.

Практическое занятие 1 3 . Эксперимент с датчиком огня

�

>
.r

•:•

z
>

!'f r i:r

;)-;)1 i:r�

;:,; r - i:т1

f1 ? IТ\

JJi. [ f

[1 2

f. "
t :i •

ОЗ W/1\!

AL:

1)'5 �-·"•Nt\�

(Ц

А"
"'·

;» �

Arduino
Uno
(RevЗ)

rч,

'..",."[\�
1'
t '."\

t..{. rl:.[.o"

Р 1 P\V\1

� " '; ( t

::,1 • o pv,·11,1;S<:;

.1
D
т
....
....

С ' ._!,·�.ч � 1 "

- :io
о-

.) 1 '{ <;(:<.

!5

\j '(
:о
.<
\...i

fr;tzi ng
Рис. 67 •:• Принципиальная схема подключения для практического занятия 1 3

55

Практика на базе комплекта интернет-вещей Arduino U no R3 Starter

.

.

.

.

.

.

frltz.inq
Рис. 68 •:• Схема подключения с макетной платой для п рактического занятия 1 3
Код n роrраммы
tnt f1.al'lt = AS ; // defi ne the flane i n terface ana log 8 i n terface
tnt Веер = 8 ; // buzzer i n terface defi nes the i n terface пипЬег 7
tnt vat = 0 ; // define nune r i c var iaЫes va l
vot.d setup ( )
{
ptnMode (Веер , OUTPUT ) ; // define L ED as output i n terface
ptnMode ( ftatilt , INPUT) ; // define the buzzer as the i npu t i n terface
Sertal . begtn ( 9600 ) ; // set the baud rate to 9688
}
vot.d loop ( ) {
vat = analogRead (f1.11'18 ) ; // read the ana l og va l ue flane sensor
Seгtal . prtntln (vat) ; // outpu t ana l og va l ues, and pr i n t then ou t
tf (vat >= 1000 ) // When the ana log va lue i s greater than 688 when the buzzer
sounds
{
dtgttalWrtte ( В.ер , HIGH ) ;
} 1t11 {
dtgttalWгtte (В.ер , LOW) ;
}
}

Практическое занятие 14. Экспери мент с вольтметром

•:•

57

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 1 4. ЭКСПЕРИМЕНТ С ВОЛЬТМЕТРОМ
В этом практическом занятии нам понадобятся:
О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О резистор на 1 кОм ;
О макетная плата ;
О батарейка/аккумулятор на 1 . 5 В (не больше) ;
О с.оединительные провода.
В этом занятии будем строить схему с вольтметром с диапазоном 0-5 В. Нам
также понадобится консоль (Ctrl+Shift+M), чтобы смотреть, какие значения
мы считываем с аналогового порта О платы. При подключении схемы в консо­
ли мы будем видеть, какой заряд у батарейки/аккумулятора.
Схема представлена на рис. 69-70.

>

z
';:

.>
�

..;J � -

Ht:St 1
j.! f )�

:

;)

"
,,

1 1., r " '

f1 -=' i-'<Л !. 1

л r··

r •, / 'Nt:

1"

"'

AJ

r- �

Arduino
Uno
(RevЗ)

'

[;. ч
РЬ
D j i''Л/1/

>\О:. ��);

!_1 1 1.J r i�.Y. "

А� 1-:< C l
DI

... ;о

1

f", 1i f

!О ...

)�/(

\t r,.1 ••: � .;

1' 1

!J

��
�;"

1

fritzi ng

Рис. 69 •:• Принципиальная схема подключения для практического занятия 14

58

Практика на базе комплекта интернет-вещей Arduino Uno R 3 Starter

'

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

'

.

.

.

frit.z.1119
Рис. 70 •:• Схема подключения с макетной платой для п рактического занятия 14
Код про граммы
f\olt ttl'lp ; // сгеаtе а float vагiаЫе tenp as а s torage space to s tore data prepara t i on
votd setup ( )
{
Serial . begin (9600) ; // use 9688 baud га tе ser i a l co�nun i ca t i on
}
voi.d loop ( )
{
tnt V1 = analogRead (А0 ) ;
/! Read vo l tage fr o� д е �outh i n teger type da ta i n to the newly created vаг iаЫе V1 , ana l og
рогt vo l tage �easurenen t гапgе of e - SV re turns а va lue of 8 - 1 824
f1.oat vol = V1 * ( S . 0 / 1023 . 0) ;
/! We wi l l Ье converted i n to the ac tua l va l ue of V1 vo l tage va l ue i n to а floa t vari aЫe vo l
tf (vol == tll'lp)
// Th i s раг t of the judg�en t i s used to fi l ter dup l i ca te data, on ly the second vo l tage
va l ue when the ou tpu t and the l a s t n i xed

Практиче ское занятие 1 5 . Эксперимент с распознаванием голоса
tet'lp

=

•:•

59

vol ; // Afteг the co�p l e t i on o f the co�paгi son, the г a t i o of th i s va l ue i n to а

vагiаЫе te�p fог co�paгi son

}
etse
{
Serial . print (vol ) ; // seгi a l output vo l tage va l ue, and do not wгар
Serial . println ( "V" ) ; // seг i a l output сhагас tег V, and l i ne bгeaks
tet'lp = vol ;
delay ( 1еее ) ; // Wai t а second output is co�p le ted, the da ta used to contгo l the гefгesh
гаtе .

}
}

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 1 5 . ЭКСПЕРИМЕНТ
С РАСПОЗНАВАНИЕМ ГОЛОСА

В этом практическом занятии нам понадобятся:
О плaтa Arduino Uno;
О USВ-кабель (Am-Bm) ;
О модуль распознавания шумов ;
О светодиод;
О резистор на 220 Ом ;
О макетная плата ;
О соединительные провода.
У модуля распознавания шумов есть 4 выхода. АО - аналоговый выход, ко­
торый мы подключаем к аналоговому входу АО платы. G - земля, а + выход
надо подключить к 5 В на плате. Далее собираем схему со светодиодом, как
обычно, и открываем консоль (Ctrl+Shift+M), чтобы смотреть значение шума,
создаваемого в аудитории. На схеме ниже представлен другой элемент с 4 вы­
ходами (не модуль распознавания шумов), так как в библиотеке Fritzing не
оказалось подобного модуля или микрофона с 3 выходами ; но главное - суть
подключения.
Схема представлена на рис. 7 1 -72.

60

•:•

Практика на базе комплекта интернет-вещей Arduino U no R3 Starter

'

"'

;:

V•

, , 'f• {'

µf с,� r

l)i "

Pf:i�1/
' "Н

О.:

11, r.e-t

DЗ i'// 1,:

/.1•)

FJ:J I'>:\'

с.....
,'
.<

"

l•l 1'\· r, ,

Arduino
Uno
(RevЗ)

"��
[! 1 f''!l�,'i

! 4 : '... L'r-

с � с ;<1NM1 ��

;.. •_ / : ! -

f1 1 1 '"'\•, •.; . f,1 •
f1

� �·1

i

М' �f'J

,• \ �

·.< !'

.,_____"

LED1
Red (633nm)

1" '(
С1

;;,.:

"'

Рис. 71 •:• П ринцип иальная схема подключения для практического занятия 1 5

Пра ктическое занят ие 1 5 . Э ксперимент с распозна ванием голоса

.

.

.

.

.

.

.

.

.

.

.

.

.

. .

.

.

.
.

.

.

.

.

.

.

.

.

fritz.1 ng
Рис. 72 •:• Схема подключения с макетной платой для п рактического занятия 15
Код проrраммы
t.nt sensorPin = А0 ; // se lect the i nput pin for the poten t i oмeter
t.nt teclPin = 13; // se l ec t the pin for the L ED
t.nt sensorVatue = е; // vari aЫe to s tore the va l ue coмing froм the sensor
voi.d setup ( ) {
pinMode (teclPin , OUTPUT) ;
Serial . begin ( 9660 ) ;
}
voi.d loop ( ) {
sensorVatue = analogRead (sensorPin ) ;
digitalWrite (teclPin , HIGH) ;
delay ( sensorVatue ) ;
digitalWrite (teclPin , LOW ) ;
delay ( sensorVatue ) ;
Serial . println (sensorVatue , DEC ) ;
}

62

•:•

П ра кти ка на базе ком плекта и нтернет-веще й Arduino Uпо R3 Starter

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 16. ЭКСПЕРИМЕНТ С ТЕМПЕРАТУРНЫМ
СЕНСОРОМ
В этом практическом занятии нам понадобятся:
О плaтa Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О температурный сенсор LM35 ;
О макетная плата;
О соединительные провода.
Температурный сенсор LM35 достаточно широко используется и прост
в эксплуатации. Единственная нетривиальная часть этого задания - перевод
аналоговых значений, которые выдаёт сенсор, в привычный вид. Также нам
понадобится консоль (Ctrl+Sblft+M).
Схема представлена на рис. 73-7 4.

Т1

LMЗS
Temperature
sensor

- '

f}

\.. '

. i:

. , , · -----""' '''
['

Arduino
Uno
(Rev3)

! '
[ ;

/ .f1• 1 1 iЛ
�, '

;f

' 1

( ; \ .\ '., � '

r i 1 ;•",•.1 : ; ' j 1

ГJ �

• ,

' -'

�J "

fritz,i ng
Рис. 7 3 •:• Принцип иальная схема подключения для практического занятия 16

П ра ктическое за нятие 16. Экспери мент с температурн ы м сенсором

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.
.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

fritz.ing
Рис. 74 •:• Схема подключения с макетной платой для практического занятия 16
Код проrраммы
\Jlt potPi.n = А0; // defi ne the ana l og in terface е LMЗS teмpera ture sensor connec tian
votd setup ( )
{
Sertal . begin ( 9688 ) ; // set the baud rate

}
votd loop ( )
{
\Jlt val ; // define variaЫes
\Jlt dat ; // defi ne variaЫes
val = analogRead (potptn ) ; // read sensar ana log va lues and ass igned to va l
dat = ( 125 * val ) >> 8 ; // teмperature forмu l a
Serial . print ( "Tefllp : " ) ; // output a s а string represen t5 the teмpera ture di sp l ay Тер
Serial . print (dat ) ;// output shaws the va l ue af da t
Sertal . println ( "С" ) ; // output di sp l ay 05 а С string
delay ( 588) ; // de lay af e . s secands
}

64

•:•

П ра кти ка на базе ком плекта и нтернет-вещей Arduino Uno R3 Starter

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 1 7. рАЗНОЦВЕТНЫЙ ТЕРМОСТАТ
В этом практическом занятии нам понадобятся:
О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О температурный сенсор LM35 ;
О 3 разноцветных светодиода;
О 3 резистора на 220 Ом;
О макетная плата;
О соединительные провода.
Суть этого задания в том, чтобы при определённой температуре зажигался
соответствующий светодиод. Для нагрева атмосферы может понадобиться за­
жигалка/спички. С другой стороны, достаточно коснуться пальцем до датчика
в течение какого-то времени, чтобы повысить температуру до 36 °С. Красный
светодиод загорается, если температура больше 40 °с, зелёный - от 32 до 40 °с,
синий - до 3 1 °С. Ещё хотелось бы видеть значения температуры в консоли, поэто­
NI'f добавляем соответствующий код из предыдущего практического занятия.
Схема представлена на рис. 77-78.

Т1

LМЭS

, , f'l'.f.'

Temperature
Sensor

' г il•'

Ardulno
Uno

(llev3)

' "" .

'

!

' l \

�·j' ' '

1-_ 1r,1 1,<

�� �� �/:!

fr1tzi ng

Рис. 7 5 •:• П ринципиальная схема подключения для п рактического занятия 1 7

•:•

П ра ктическое занятие 17. Разноцветны й термостат

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.
.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

'

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. .

.

.
.

fr1t:z,1ng
Рис. 76 •:• Схема подключения с макетной платой для практического занятия 17
Код проrраммы
voi.d setup О {
ptnMode ( 13 , OUTPUT) ;
ptnMode (12 , OUТPUT) ;
pinMode (11 , OUТPUT) ;
Seгtal . begtn (9689 ) ;
}
voi.d loop ( ) {
i.nt vol = analogRead (А0) * ( S . 6 / 1623 . 6 * 166) ; // геоd the LHЗS tемрего tиге
Seгtal . pгtnt ( "Tel'lp : " ) ; // output 05 о 5 tring repre5en t5 the tемрегоtиге di 5p loy Тер
Sertal . prtnt ( vol ) ; // ou tput 5how5 the vo l ue of do t
Sertal . prtntln ( "С" ) ; // output di 5p loy 05 о С 5tring
i.f ( vol <= 31) // 5e t the vo lue of the tемрего tиге of the l ow tемрего tиге reg i on, ond
led

di 5p l oy
{
dtgttalWгite (13 ,
dtgttalWгtte ( 12 ,
dtgitalWrtte ( 11 ,
}
etse i.f (vol > = 3 2 &&
{
dtgttalWгtte ( 13 ,

HIGH ) ;
LOW ) ;
LOW ) ;

vol < = 46 )
LOW ) ;

66

•:•

П рактика на базе ком плекта и нтернет-вещей Arduino Uno R3 Starter
digitalWrite ( 12 , HIGH ) ;
digitalWrite ( 1 1 , LOW) ;

}
etse if (vol >= 41 ) // hot zone teмperature se t t i ng
{
digitalWrite ( 13 , LOW) ;
digitalWrite ( 12 , LOW) ;
digitalWrite ( 1 1 , HIGH ) ;
}
delay ( 500 ) ;
}

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 1 8 . ЭКСПЕРИМЕНТ С ОДНОРАЗРЯДНЫМ
ЦИФРОВЫМ СВЕТОДИОДНЫМ ИНДИКАТОРОМ
В этом практическом занятии нам понадобятся:
О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О одноразрядный цифровой светодиодный индикатор ;
О 8 резисторов на 220 Ом;
О макетная плата;
О соединительные провода.
Одноразрядный цифровой светодиодный индикатор состоит из 8 сегмен­
тов, каждый из которых представляет собой маленький светодиод, отвечаю­
щий за соответствующий сегмент цифры на индикаторе (или точки). Бывают
два типа разноцветных светодиодов : с общим катодом (когда катодный выход
один, а анодных несколько), который подключается к земле, и с общим анодом
(анод один, катодов несколько), который подключается к 3.3 или 5 В выходу
платы. В этом задании мы построим схему и напишем код так, чтобы индика­
тор показывал цифры от 1 до 8.
Схема представлена на рис. 77- 78.

П ра ктическое занятие 18

•:•

67

Arduino
Uno
(Rev3)
·" ) 1 \ Г t

t: i J ;..i ,,;1.; r.,,1
'" ' . r •: · �

1

с,

t----'\f\l\J\.-....--""'"""f
.
G

\�1 \ � ---.J\/'\1\1\r----.... ОР

---.f G !

___... G2
'1 ' .

fritz,l ng
Рис. 7 7 •:• П ринципиальная схема подключения для п рактического занятия 1 8

•:•

68

П ра ктика на базе ком плекта и нтернет-вещей Ard u i no Uno R3 Starter

. . . . .
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

. . . . .

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . .
. . . . . .
. . . . . .
.. . .

s,;:;;;a;,;;-;.;.��-=
.

. . . . .

. . . . .

. . . . "

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

. . . . .
. . . . .
. . . . .
. . . . .

.
.
.
.

.
.
.
.

.
.
'
.

.
.
.
.

. . . .
. . . .
. . . .
. . . .

. . ' " .

frltz.i11g
Рис. 78 •:• Схема подключения с макетной платой для практического занятия 18
Код проrраммы
// Se t con tro l each segnen t digi ta l IO p i n
int а = 4 ; // def i ne t h e digi ta l i nterface t o c o nnec t а seven segмent L ED
int Ь = 5 ; // define the connec t i on Ь Digi ta l In terface 6 - s egne n t L ED
int с = 6 ; // defi ne paragraph (с) Digi ta l In terface 5 digi ta l connection
int d = 7 ; // define the di g i ta l i n terface 11 i s connec ted to d - segnent d i g i ta l tube
int е = 8 ; // define the dig i ta l i n terface 1 е is connec ted to e - segnen t digi ta l tube
int f = 9 ; // define the dig i ta l i n teгface 8 digi ta l tube connec t i on f
int g = 10 ; // defi ne the dig i ta l i n terface 9 g of the digi ta l contro l connec tion
int dp = 11 ; // deft ne the digi ta l i n terface 4 digi ta l tube connec t i ng dp
void dtgttal_l (void ) // di sp lay the пимЬеr 1

{
dtgttalWrtte
dtgttalWrtte
dtgttalWrtte
dtgttalWrtte
dtgttalWrtte
dtgttalWrtte
dtgttalWrtte
dtgttalWrtte

(а,
(Ь ,
(с ,
(d ,
(е ,
(f ,

LOW ) ;
HIGH ) ;
HIGH ) ;
LOW ) ;
LOW) ;
LOW) ;
(g , LOW) ;
(dp, LOW) ;

}
void dtgttal_2 (void ) // di sp l ay пимЬег 2

П рактическое занятие 18
{
digitalWrite
digitalWrite
digitalWrite
digitalWrite
digitalWrite
digitalWrite
digitalWrite
digitalWrite

(1 , HIGH ) ;
( Ь , HIGH ) ;
(с , LOW ) ;
(d , HIGH ) ;
(е , HIGH ) ;
( f , LOW ) ;
(g , HIGH ) ;
(dp , LOW ) ;

}
votd digital_З (votd ) // di sp l ay the пимЬег 3
{
digitalWrite (1 , HIGH ) ;
digitalWrite (Ь , HIGH ) ;
digitalWrite (с , HIGH ) ;
digitalWrite (d , HIGH ) ;
digitalWrite (е , LOW ) ;
digitalWrite (f, LOW ) ;
digitalWrite (g , HIGH ) ;
digitalWrite (dp , LOW) ;
}
votd digital_4 (votd ) // shaw 4
{
digitalWrite (а , LOW ) ;
digitalWrite (Ь , HIGH ) ;
digitalWrite (с , HIGH ) ;
digitalWrite (d , LOW) ;
digitalWrite (е , LOW) ;
digitalWrite ( f , HIGH ) ;
digitalWrite (g , HIGH ) ;
digitalWrite (dp , LOW ) ;
}
votd digital_S (votd ) // disp l ay the пимЬег 5
{
digitalWrite ( а , HIGH ) ;
digitalWrite (Ь , LOW ) ;
digitalWrite (с , HIGH ) ;
digitalWrite (d , HIGH ) ;
digitalWrite (е , LOW ) ;
digitalWrite ( f , HIGH ) ;
digitalWrite (g , HIGH ) ;
digitalWrite (dp , LOW ) ;
}
votd digital_б (votd ) // disp l ay the пимЬег 6
{
digitalWrite ( 1 , HIGH ) ;
digitalWrite ( Ь , LOW) ;
digitalWrite ( с , HIGH ) ;
digitalWrite (d , HIGH ) ;
digitalWrite (е , HIGH ) ;
digitalWrite ( f , HIGH ) ;
digitalWrite (g , HIGH ) ;

•:•

69

70

•:•

П ра кти ка на базе ком плекта и нтернет-вещей Arduino U no R3 Starter

digitalWrite (dp , LOW) ;
}
votd digital_7 (votd ) // di sp l ay the number 7
{
digitalWrite ( а , HIGH ) ;
digitalWrite (Ь , HIGH ) ;
digitalWrite ( с , HIGH ) ;
digitalWrite (d , LOW) ;
digitalWrite (е , LOW) ;
digitalWrite ( f , LOW ) ;
digitalWrite ( g , LOW ) ;
digitalWrite (dp, LOW) ;
}
void digital_B (votd ) // di sp lay the питЬег 8
{
digitalWrite ( а , HIGH ) ;
digitalWrite ( Ь , HIGH ) ;
digitalWrite ( с , HIGH ) ;
digitalWrite (d , HIGH ) ;
digitalWrite ( е , HIGH ) ;
digitalWrite ( f , HIGH ) ;
digitalWrite ( g , HIGH ) ;
digitalWrite (dp, LOW) ;
}
votd setup О
{
tnt i ;// defi ne variaЫ es
for (i = 4; i <= 1 1 ; i++)
pinMode ( i , OUTPUT) ; // se t 4 to 1 1 р i п to output mode
}
void loop О
{
wht\e ( 1 )
{
digital_1 ( ) ; // di sp lay питЬегs 1
delay ( 1000) ; // de lay 2s
digital_2 ( ) ; // di sp lay питЬег 2
delay ( 1000) ; // de lay 1 s
digital_З ( ) ; // disp lay the питЬег З
delay ( 1000 ) ; // de lay 1 s
digital_4 ( ) ; // show 4
delay ( 1000) ; // de lay 1 s
digital_S ( ) ; // di sp lay the number 5
delay ( 1000 ) ; // de lay l s
digital_б О ; // di sp l ay the nur1ber 6
delay ( 1000) ; // de l ay 1 s
digital_7 ( ) ; // di sp lay the number 7
delay ( 1000 ) ; // de lay l s
digital_B ( ) ; // di sp l ay the питЬег В
delay ( 1000 ) ; // de lay l s
}
}

Думаю, вам не составит особого труда добавить ещё 2 цифры

-

О и 9!

П ра ктическое занятие 19

•:•

71

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 19. ЭКСПЕРИМЕНТ
С ЧЕТЫРЕХРАЗРЯДНЫМ ЦИФРОВЫМ СВЕТОДИОДНЫМ
ИНДИКАТОРОМ
В этом практическом занятии нам понадобятся:

О плата Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О четырёхразрядный цифровой светодиодный индикатор ;
О 8 резисторов на 220 Ом;
О макетная плата ;
О соединительные провода.
У четырёхразрядного цифрового светодиодного индикатора 1 2 разъёмов, по
сравнению с одноразрядным, у которого 10. В принципе, не намного больше.
Нумеруются они против часовой стрелки : если положить перед собой индика­
тор, внизу слева направо будут пины 1 -6, а вверху справа налево - 7- 12. Собе­
рём схему и напишем программу, которая будет показывать значения от 0:00
до 9 :00 в цикле.
Схема представлена на рис. 79-80.

-

1 1 1
-

1

··; ·;�'rd\

.___

'

'

- _

-

,
·
·

"1 '>f)d'(

-.

-

"

R8

2200

.
"""

-::( 1

"
1
1

1.

·'

'

1
1
1

j

(/

'

Uno
(Reu3)

_

'

,

'

'• ''

с
· '

'

.___

1

' 1

v к:

-

1

-

t-''J(j
l _;\ J

-

�';)llJ
, J J'J

8Q:>8сь�
,� Q:>в
<::::::>.
8Q:>
BQ:)
B
�
1�1
8Q::>8Q:)B
<::::::>.
8Q:>
BQ:)B
о �(\)

,_ i�

о 8

� �($)

о

�(\)

fritz.ing

Рис. 79 •:• Принципиальная схема подключения для практического занятия 1 9

72

П ра кти ка на базе комплекта и нтернет-вещей Arduino Uno R 3 Starter

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.
.

.

.

.

'

.

'

.

.

.

fritz.in
Рис. 80 •:• Схема подключения с макетной платой для практического занятия 19
Код проrраммы
i.nt
i.nt
i.nt
i.nt
i.nt
i.nt
i.nt
i.nt

а = 8;

i.nt
i.nt
i.nt
i.nt

d4
d3
d2
d1

Ь

7;

с = 6;
d = S;
е

4;

f 3;
g = 2;
р = 1;
=
=
=
=

9;
10 ;
11;
12;

'Long n = 0 ;
i.nt х = 100 ;
i.nt de'L = SS;
voi.d setup( )
{
pinMode(d1 , OUTPUT ) ;
pinMode(dZ , OUTPUT ) ;

П ра ктическое занятие 19
pi.nMode(d3 , OUTPUT ) ;
pi.nMode(d4 , OUTPUT ) ;
pi.nMode(a , OUTPUT) ;
pi.nMode( b , OUTPUT) ;
pi.nMode(c , OUTPUT) ;
pi.nMode(d , OUTPUT) ;
pi.nMode(e , OUTPUT) ;
pi.nMode( f , OUTPUT) ;
pi.nMode(g , OUTPUT) ;
pi.nMode( p , OUTPUT ) ;

votd loop( )
{
clearLEDs ( ) ;
pi.ckDi.gtt ( l ) ;
pi.ckNu�be r ( ( n/x/1eee)%18 ) ;
delayMi.croseconds (det ) ;
clearLEDs ( ) ;
pi.ckDi.gtt ( 2 ) ;
pi.ckNu�ber( (n/x/189 )%18 ) ;
delayMi.croseconds(det ) ;
clearLEDs ( ) ;
pi.ckDi.gi.t ( З ) ;
di.spDec (З ) ;
pi.ckNu�be r ( (n/x/18)%18 ) ;
delayMi.croseconds (det ) ;
сlea rLEDs ( ) ;
pi.ckDi.gi.t (4) ;
pi.ckNu�ber(n/x%18) ;
delayMi.croseconds (det ) ;
n++ ;

tf (di.gi.talRead ( 13 ) == LOW)
{
n = 8;
}
}

voi.d pi.ckDi.gi.t(tnt х )
{
di.gi.talWri.te(d1 , HIGH ) ;
di.gi.talWri.te(d2 , HIGH ) ;
di.gi.talWri.te (dЗ , HIGH ) ;
di.gi.talWri.te(d4 , HIGH ) ;
swi.tch( x )
{
case 1 :
di.gi.talWri.te(d1 , LOW ) ;
break;

•:•

73

•:•

74

П ра кти ка на базе комплекта и нтернет-вещей Arduino Uno R3 Starter
Cllt 2 :
dtgttalWrtte(dZ , LOW) ;
brt1k;
Cllt 3 :
dtgttalWrtte(dЗ , LOW) ;
bre1k;
dtf1utt :
dtgttalWrtte(d4 , LOW) ;
br11k;

}
}
voi.d ptckNu�beг(tnt х )
{
swi.tch( x )
{
def1utt :
zего( ) ;
break;
case 1 :
one( ) ;
break;
case 2 :
two( ) ;
break;
Clll 3 :
three( ) ;
break;
case 4 :
four ( ) ;
break ;
case 5 :
ftve( ) ;
bre1k;
Cllt 6 :
stx( ) ;
bre1k;
Cllt 7 :
seven ( ) ;
bre1k;
Cllt 8 :
etght ( ) ;
bre1k;
Cllt 9 :
ntne ( ) ;
br11k ;
}
}
voi.d dtspDec(tnt х )
{
dtgttalWrtte( p , LOW) ;
}

П рактическое занятие 19
voi.d clearLEDs ( )
{
di.gi.talWri.te(a ,
di.gi.talWri.te( b ,
di.gi.talWri.te( c ,
di.gi.talWri.te(d ,
di.gi.talWri.te( e ,
di.gi.talWri.te( f ,
di.gi.talWri.te(g ,
di.gi.talWri.te( p ,

LOW ) ;
LOW ) ;
LOW) ;
LOW) ;
LOW ) ;
LOW ) ;
LOW) ;
LOW ) ;

votd zего ( )
{
di.gi.talWri.te(a ,
di.gi.talWri.te( b ,
di.gi.talWri.te( c ,
di.gi.talWri.te(d ,
di.gi.talWri.te( e ,
di.gi.talWri.te( f ,
di.gi.talWri.te(g ,

HIGH) ;
HIGH) ;
HIGH) ;
HIGH ) ;
HIGH ) ;
HIGH ) ;
LOW ) ;

voi.d one ( )
{
di.gi.talWri.te(a ,
di.gi.talWri.te( b ,
di.gi.talWri.te(c ,
di.gi.talWri.te(d ,
di.gi.talWri.te( e ,
di.gi.talWri.te( f ,
di.gi.talWri.te(g ,
}

LOW) ;
HIGH) ;
HIGH) ;
LOW) ;
LOW) ;
LOW) ;
LOW) ;

voi.d two( )
{
di.gi.talWri.te(a ,
di.gi.talWri.te( b ,
di.gi.talWri.te(c ,
di.gi.talWri.te(d ,
di.gi.talWri.te(e ,
di.gi.talWri.te( f ,
di.gi.talWri.te(g ,

HIGH) ;
HIGH ) ;
LOW) ;
HIGH) ;
HIGH ) ;
LOW ) ;
HIGH) ;

voi.d three( )
{
di.gi.talWri.te(a ,
di.gi.talWri.te( b ,
di.gi.talWri.te(c ,
di.gi.talWri.te(d ,
di.gi.talWri.te( e ,
di.gi.talWri.te( f ,
di.gi.talWri.te(g ,

HIGH) ;
HIGH ) ;
HIGH ) ;
HIGH ) ;
LOW ) ;
LOW) ;
HIGH ) ;

•:•

75

76

•:•

П ра ктика на базе ком плекта и нтернет-вещей Arduino Uno R3 Starter

}
voi.d four( )
{
digitalWrite(a ,
digitalWrite(b ,
digitalWrite(c ,
digitalWrite(d ,
digitalWrite( e ,
digitalWrite( f ,
digitalWrite(g ,
}
voi.d five( )
{
digitalWrite(a ,
digitalWrite(b ,
digitalWrite(c ,
digitalWrite(d ,
digitalWrite(e,
digitalWrite( f ,
digitalWrite(g ,
}
voi.d six( )
{
digitalWrite(a ,
digitalWrite(b ,
digitalWrite(c ,
digitalWrite(d ,
digitalWrite(e ,
digitalWrite(f ,
digitalWrite(g ,
}
voi.d seven ( )
{
digitalWrite(a ,
digitalWrite(b ,
digitalWrite(c ,
digitalWrite(d ,
digitalWrite(e ,
digitalWrite(f ,
digitalWrite( g ,
}
voi.d eight ( )
{
digitalWrite(a ,
digitalWrite(b ,
digitalWrite(c ,
digitalWrite(d ,
digitalWrite(e ,
digitalWrite(f ,

LOW) ;
HIGH ) ;
HIGH ) ;
LOW) ;
LOW ) ;
HIGH ) ;
HIGH ) ;

HIGH ) ;
LOW) ;
HIGH ) ;
HIGH ) ;
LOW) ;
HIGH ) ;
HIGH ) ;

HIGH ) ;
LOW ) ;
HIGH ) ;
HIGH ) ;
HIGH ) ;
HIGH ) ;
HIGH ) ;

HIGH ) ;
HIGH ) ;
HIGH ) ;
LOW) ;
LOW) ;
LOW ) ;
LOW) ;

HIGH ) ;
HIGH ) ;
HIGH ) ;
HIGH ) ;
HIGH ) ;
HIGH ) ;

П ра ктическое занятие 20. Эксперимент со светодиодной матри цей

•:•

77

di.gi.talWri.te(g , HIGH ) ;

voi.d ni.ne ( )
{
di.gi.talWri.te(a ,
di.gi.talWri.te( b ,
di.gi.talWri.te(c ,
di.gi.talWri.te(d ,
di.gi.talWri.te(e ,
di.gi.talWri.te(f ,
di.gi.talWri.te(g ,

HIGH ) ;
HIGH ) ;
HIGH ) ;
HIGH ) ;
LOW ) ;
HIGH ) ;
HIGH) ;

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 2 0. ЭКСПЕРИМЕНТ СО СВЕТОДИОДНОЙ
МАТРИЦЕЙ
В этом практическом занятии нам понадобятся :

О плaтa Arduino Uno;
О USВ-кабель (Am-Bm) ;
О светодиодная матрица 8 х 8 ;
О 8 резисторов н а 2 2 0 Ом;
О макетная плата ;
О соединительные провода.
Светодиодная матрица 8 х 8 содержит 64 светодиода, соединённых так,
чтобы можно было зажечь соответствующий светодиод, пользуясь его Х­
и У-координатой и подавая, соответственно, на одну координату землю через
резистор, а на другую - управляющий сигнал с одного из цифровых пинав-вы­
ходов платы Arduino Uno. К сожалению, в раrts-библиотеке Fritzing не нашлось
соответствующего элемента, поэтому пришлось пририсовывать светодиодной
матрице 8х8 с 12 выходами ещё 4 на схеме с макетной платой и рисовать с нуля
принципиальную схему. Напишем два кода : первый будет просто зажигать
и гасить верхний левый светодиод на матрице, второй - выводить буквы анг­
лийского алфавита от А до 1.
Схема представлена на рис. 8 1 -82.

78

•:•

П ра ктика на базе ком плекта и нтернет-вещей Arduino U no R3 Starter

о
N

"'
:s:
1"'

:i::
!11

...
е
о
:...:
u
Q)
;r
:s:

!;1

!11
а.
i:::

"'

с::
<:{

"'

:s:
:i::
Q)
;r
2

�

�
i:::
!11
::[
Q)
х
u

"'

!11
:i::
..Q
с::
!11
:s:
i:::
:s:
::r
:i::
:s:
а.
с

��

·:·

'"

00

j§i

u

l.

П рактическое за нятие 20. Экспери мент со светодиодной матри цей

. . . . . . . .
. . . . . . . .

fr itzing
Рис. 82 •:• Схема подключения с макетной платой для практического занятия 20
Код проrраммы 1
const
const
const
const
const
const
const
const

1.nt
t.nt
t.nt
t.nt
t.nt
t.nt
t.nt
t.nt

rowl
гоw2
гоwЗ
гоw4
rows
гоwб
гоw7
rowS

=
=
=
=
=
=
=

2 ; 11 the пимЬег of the row p i n 9
З '· 11 the пипЬег of the row p i n 14
4 '• 11 the пимЬег of the row p i n
S ; 11 the пипЬег of the row p i n 1 2
17 ; 11 the nu!'lber of the row p i n 1
16 ; 11 the пимЬег of the row p i n 7
15 ; 11 the пимЬег of the row p i n 2
14 ; 11 the пимЬег of the row p i n 5

80

•:•

П ра кти ка на базе ком плекта и нтернет-вещей Arduino Uno R 3 Starter

// The p i n to con tгo l CO l
const i.nt col1 = б ; // the питЬег of the co l p i n 13
const i.nt col2 = 7 ; // the питЬег of the co l р i п З
const i.nt соlЗ
8 ; // the питЬег of the co l pin 4
const i.nt col4 = 9 ; // the питьег of the co l р i п 1е
const i.nt colS = 10; // t/;e number of the co l p i n б
const i.nt соlб = 11 ; // the питЬег of the co l p i n 11
const i.nt col7 = 12 ; // the number of the co l p i n 15
const i.nt colB = 13 ; // the number of the co l p i n 16
vot.d setup () {
i.nt i. = 0 ;
for (i. = 2 ; i.<18 ; i.++ )
{
pi.nMode ( i. , OUTPUT) ;
}
pi.nMode ( rows , OUTPUT) ;
pi.nMode ( rowб , OUTPUT) ;
pi.nMode ( row7 , OUTPUT ) ;
pi.nMode ( rowB , OUTPUT ) ;
for ( i. = 2 ; i. <18; i.++ ) {
di.gi.talWri.te ( i. , LOW) ;
}
di.gi.talWri.te ( rowS , LOW) ;
di.gi.talWri.te ( гоwб , LOW) ;
di.gi.talWri.te ( row7 , LOW) ;
di.gi.talWri.te ( rowB , LOW) ;
}
voi.d loop ( ) {
i.nt i.;
// The гоw # 1 and co l # 1 of the L EDs turn оп
di.gi.talWri.te ( row1 , HIGH ) ;
di.gi.talWri.te ( row2 , LOW) ;
di.gi.talWri.te ( гоwЗ , LOW) ;
di.gi.talWri.te ( row4 , LOW) ;
di.gi.talWri.te ( rowS , LOW) ;
di.gi.talWri.te ( гоwб , LOW) ;
di.gi.talWri.te ( row7 , LOW) ;
di.gi.talWri.te ( rowB , LOW) ;
di.gi.talWri.te ( col 1 , LOW) ;
di.gi.talWri.te (col2 , HIGH ) ;
di.gi.talWri.te ( соlЗ , HIGH ) ;
di.gi.talWri.te ( col4 , HIGH ) ;
di.gi.talWri.te (colS , HIGH ) ;
di.gi.talWri.te ( соlб , HIGH ) ;
di.gi.talWri.te ( col7 , HIGH ) ;
di.gi.talWri.te ( colB , HIGH ) ;
delay ( 1000 ) ;
// Тит off o l l
for ( i. = 2 ; i. <18 ; i.++ ) {
di.gi.talWri.te ( i. , LOW) ;
}
delay ( 1000 ) ;
}
=

П ра ктическое занятие 20. Эксперимент со светодиодной матрицей
Код проrраммы 2
# defi.ne di.splay_array_si.ze 8
// Asci i ВхВ dot fon t
# defi.ne data_null ехве , ехее , ехве , ехее , ехее , ехее , ехее , ехее // nu l l сhог
# def\ne data_asci.i._A 0х02 , 0х0С , 0х18 , 0х68 , 0х68 , 0х18 , 0х0С , 0х02 /* «А " , е */
/ **
** «А»
# Define А {//
е, е, е, е,
е, е, е, 1 ,
е, е, 1 , 1 ,
1 , 1 , е, 1 ,
1, 1 , fJ, 1 ,
{е, 1Э, f), 1, 1 ,
{Э, IЭ, f)' f), 1 ,
{Э , в, 8, е , е,

{е,
{е,
{е,
{8,
{8,

}
**/
# def\ne
# defi.ne
# defi.ne
# defi.ne
# defi.ne
# defi.ne
# defi.ne
# defi.ne

е,
1,
1Э,
1Э,

1 , е}, / /
//
1Э, е} , / /
е, е}, / /

е , е},

ехе2
ехес
1Эх1В
ехбВ

f), fJ, е}, / / ЭхбВ

f)' f)' 8} , / / 8х1В

1 , 8, э} , / / эхес
8, 1 , 8} / / 8xfJ2

data_asci.i._B
data_asci.i._C
data_asci.i._D
data_asci.i._E
data_asci.i._F
data_asci.i._G
data_asci.i._H
data_asci.i._I

ехве ,
ехее ,
ехее ,
ехве ,
0х00 ,
0х00 ,
0х08 ,
0х08 ,

0х7Е ,
0х3С ,
0х7Е ,
0х7Е ,
0х7Е ,
0хЗС ,
8х7Е ,
ехее ,

0х52 ,
0х66 ,
0х42 ,
0х52 ,
0х50 ,
8х66 ,
8х10 ,
ехее ,

0х52 ,
0х42 ,
0х42 ,
0х52 ,
0х50 ,
0х42 ,
8х10 ,
0х7Е ,

0х52 ,
0х42 ,
0х42 ,
0х52 ,
0х50 ,
0х42 ,
0х18 ,
0х00 ,

// Disp loy аггау
byte data_asci.i. [ ] [di.splay_ar ray_si.ze] = {
data_null ,
data_asci.i._A, data_asci.i._B ,
data_asci.i._C ,
data_asci.i._D ,
data_asci.i._E ,
data_asci. i._F ,
data_asci.i._G ,
data_asci.i._H ,
data_asci.i._I ,
};
// The p i n t o contro l ROW
const tnt rowl = 2 ; // the nuNber of the гоw p i n 24
const tnt row2 = 3 ; // the nuNber of the гоw p i n 23
const tnt rowЗ = 4 ; // the nиNЬег of the гоw p i n 22
const tnt row4 = 5 ; // the nuNber of the гоw pin 21
const tnt row5 = 17; // the nuNber of the гоw р i п 4
const tnt row6 = 16 ; // the nuNber of the гоw p i n 3
const tnt row7 = 15; // the nuNber of the гоw p i n 2
const tnt row8 = 14 ; // the nuNber of the гоw p i n 1
// The pin to contro l CO l
const tnt col1 = 6 ; // the nиNЬег of the co l pin 28
const tnt col2 = 7; // the nиNЬег of the co l рiп 19
const tnt с оl З = 8 ; // the nиNЬег of the co l pin 18
const tnt col4 = 9; // the пипЬег of the co l pin 1 7

0х52 ,
0х42 ,
0х66 ,
0х52 ,
0х50 ,
0х52 ,
8х10 ,
ехве ,

0х2С ,
0х2С ,
0х3С ,
0х52 ,
0х50 ,
0х16 ,
8х7Е ,
ехве ,

ехее
0х00
ехее
0х42
0х40
0х1Е
ехее
&хее

/*
/*
/*
/*
/*
/*
/*
/*

«В",
«С",
«D",
«f" ,

1 */

2 */

3 */
4 */
«F» , 5 */
«G11, 6 */
иН» , 7 */
"I•> , В */

•:•

81

82

•:•

П ра кти ка на базе ком плекта и нтернет-вещей Arduino U no R3 Starter

const int col5 = 10; // the пипЬег of the co l p i n 1 6
const int соlб = 11; // the пи�Ьеr of the co l рiп 15
const int col7 = 1 2 ; // the пи�Ьег of the co l рiп 14
const int col8 = 13; // the пипЬег of the co l рiп 13
vot.d dtsplayNuм ( bytt rowNuм , int colNuм)
{
int j ;
bytt tемр = rowNuм;
for ( j = 2; j <6 ; j++)
{
dtgttalWrite ( j , LOW) ;
}
dtgttalWrite ( row5 , LOW ) ;
dtgttalWrite ( гоwб , LOW) ;
dtgttalWrite ( row7 , LOW) ;
dtgttalWrite ( row8 , LOW) ;
for ( j = 6 ; j <14; j++ )
{
dtgttalWrite ( j , HIGH ) ; }
swt.tch ( colNuм)
{
cast 1: digttalWrite ( col1 , LOW) ; break;
cast 2: dtgttalWrtte ( col2 , LOW) ; break;
cast 3: dtgitalWrite ( соlЗ , LOW) ; break;
cast 4 : dtgitalWrite ( col4 , LOW) ; break;
cast 5: dtgttalWrite ( col5 , LOW) ; break;
case 6: dtgttalWrite ( соlб , LOW) ; break;
case 7: dtgttalWrite ( col7 , LOW) ; break;
case 8: dtgitalWrite ( col8 , LOW) ; break;
defautt : break;
}
for ( j = 1 ; j <9 ; j++)
{
tемр = (0х80) & ( tемр ) ;
if ( tемр == 0)
{
tемр = rowNuм << j ;
continut;
}
swt.tch ( j )
{
cast 1 : dtgttalWrite ( row1 , HIGH ) ; break;
cast 2 : dtgttalWrite ( row2 , HIGH ) ; brtak;
cast 3: dtgttalWrite ( гоwЗ , HIGH ) ; break;
cast 4: dtgttalWrite ( row4 , HIGH ) ; break;
cast 5: dtgitalWrite ( row5 , HIGH ) ; break;
c11t 6: digitalWrite ( гоwб , HIGH ) ; break;
Cllt 7: digitalWrtte ( row7 , HIGH ) ; break;
cast 8: digttalWrtte ( row8 , HIGH ) ; brtak;
dtfautt : brtak;
}
tемр = rowNuм << j ;

П ра ктическое за нятие 2 1. Экспер и мент с трёхцветны м светодиодом

•:•

83

}
}
voi.d setup ( ) {
i.nt i. = е ;
for ( i = 2 ; i <18 ; i++)
{
pinMode ( i , OUTPUT) ;
}
for ( i = 2 ; i <18 ; i++) {
digitalWrite ( i , LOW ) ;
}
}
voi.d loop ( ) {
i.nt t1;
i.nt l;
i.nt аггаgе;
for (аггаgе = 0; а ггаgе <10; аггаgе++)

{

for (l

{

=

0 ; l <512 ; l++)

for (t1 = 0 ; t1 <8 ; t1++ )
{
displayNu� ( data_ascii [ аггаgе] [ t 1 ] , ( t 1 +1 ) ) ;
}

}
}
}

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 2 1. ЭКСПЕРИМЕНТ С ТРf:ХЦВЕТНЫМ
СВЕТОДИОДОМ
В этом практическом занятии нам понадобятся:

О плaтa Arduino Uno ;
О USВ-кабель (Am-Bm) ;
О трёхцветный светодиод;
О 3 резистора на 220 Ом ;
О макетная плата ;
О соединительные провода.
В этом занятии мы сначала выведем красный, белый и синий цвета с по­
мощью трёхцветного (RGB) светодиода, а затем выведем смешанные цвета.
У этого светодиода 4 выхода : 3 анода (красный, жёлтый, синий цвета) и 1 катод
(на землю). Такой светодиод называется светодиодом с общим катодом. Есть
также светодиод с общим анодом, когда трём цветам соответствуют 3 катод­
ных выхода. В комплекте Arduino Uno Starter Learning Кit с RFID-модулем нет
отдельного трёхцветного светодиода, но есть небольшой модуль со встроен­
ным трёхцветным светодиодом, который мы и будем использовать. Вообще,

84

•:•

П ра кти ка на базе ком плекта и нтернет-вещей Arduino U no R3 Starter

на модуле уже есть встроенные сопротивления, но на всякий случай лучше всё­
таки использовать дополнительные внешние резисторы на 220 Ом. Обратите
внимание на маркировку пинов на модуле с трёхцветным светодиодом - она
может отличаться от приведённой ниже схемы подключения (на