25 крутых проектов с Arduino [Марк Геддес] (pdf) читать онлайн

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

25 КРУТЫХ
ПРОЕКТОВ
С ARDUINO
САМЫЕ ИНТЕРЕСНЫЕ ПРОЕКТЫ,
КОТОРЫЕ МОЖЕТ СОБРАТЬ ДАЖЕ НАЧИНА ЮЩИ Й

МАРКГЕДДЕС

ЭЛЕКТРОНИКА
ДЛЯ НАЧИНАЮЩИХ

M A R K GEDDES

ARDUINO
PROJECT
HANDBOOK
25 PRACTICAL PROJECTS
TO GET YOU STARTED

МАРКГЕДДЕС

25 КРУТЫХ
ПРОЕКТОВ
С ARDUINO
САМЫЕ ИНТЕРЕСНЫЕ ПРОЕКТЫ,
КОТОРЫЕ МОЖЕТ СОБРАТЬ ДАЖЕ НАЧИНАЮЩИЙ

Москва
2019

УДК 004
ББК 32.97
Г28

Mark Geddes
ARDUINO PROJECT HANDBOOK: 25 PRACTICAL PROJECTS TO GETYOU STARTED
Copyright © 2016 by Mark Geddes. Title of English-language original: Arduino Project Handbook:
25 Practical Projects to Get You Started, ISBN 978-1-59327-690-4, published by No Starch Press.
Russian-language edition copyright © 2018 by EKSMO Publishing House. All rights reserved.

Геддес, Марк.
Г28

25 круты х проектов с Arduino / Марк Г е д д е с ; [п ер . с ан гл.
М .А. Р а й тм а н а ]. — Москва : Эксмо, 2019. — 272 с. — (Электроника
для начинающих).
ISBN 978-5-04-090263-7
Автор книги, Марк Геддес, — энтузиаст Arduino и преподаватель с деся­
тилетним стажем. В своем самоучителе он собрал 25 уникальных проектов,
собирая которые можно освоить азы работы с популярным конструктором.
В книгу вошли инструкции по созданию таких проектов, как: детектор при­
зраков, монитор полива цветов, дискотечный стробоскоп, световой диммер,
ракетная пусковая установка, детектор привидений, предсказатель судьбы и
многие другие.
УДК 004
Б Б К 3 2 .9 7

ISBN 978-5-04-090263-7

© Р айтм ан М .А ., п е р е в о д на р у с с ки й я з ы к, 2 0 1 7
© О ф о р м л е н и е . ООО « И зд ател ьство «Э ксмо», 2 0 1 9

КЭМЕРОН И ДЖЕММА,
ВЫ — ТВОРЦЫ
И СОЗИДАТЕЛИ БУДУЩЕГО.
ЭТА КНИГА ДЛЯ ВАС!

СОДЕРЖАНИЕ

Благодарности.......................................................................... 15
Введение.................................................................................... 15
Р е в о л ю ц и я A r d u i n o ....................................................................................................................................16
Об э то й к н и г е .....................................................................................................................................................1 7
С т р у к т у р а э то й к н и г и ...............................................................................................................................19

Проект 0: Начало работы....................................................... 22
А п п а р а т н о е о б е с п е ч е н и е ...................................................................................................................23
П р о г р а м м и р о в а н и е A r d u in o ............................................................................................................26
П е р в ы й т е с т A r d u in o : м и га ю щ и й с в е т о д и о д ................................................................29
С п и с о к к о м п о н е н т о в д л я п р о е к т о в ........................................................................................31
О б у с т р о й с т в о в а ш е г о р а б о ч е г о м е с т а ............................................................................... 33
Н е о б х о д и м о е о б о р у д о в а н и е и и н с т р у м е н т ы .............................................................. 35
К р а т к о е р у к о в о д с т в о по п а й к е ....................................................................................................38

Часть 1. Свет
Проект 1. Управляемый светодиод......................................42
П р и н ц и п р а б о т ы ......................................................................... ....................................................................44
С б о р к а ........................................................................................................................................................................45
С к е т ч .............................................................................................................................................................................47

Проект 2. Диммер освещения.............................................. 48
П р и н ц и п р а б о т ы ............................................................................................................................................ 50
С б о р к а ........................................................................................................................................................................51
С к е т ч .............................................................................................................................................................................53

7 • СОДЕРЖАНИЕ

Проект 3. Светодиодная панель........................................... 54
П р и н ц и п р а б о т ы ................................................................................................................................................56
С б о р к а ...........................................................................................................................................................................57
С к е т ч ................................................................................................................................................................................58

Пр оект 4. Дискотечный стробоскоп.................................... 59
П р и н ц и п р а б о т ы ............................................................................................................................................... 61
С б о р к а ...........................................................................................................................................................................61
С к е т ч ................................................................................................................................................................................63

Проект 5. Прибор для контроля полива............................ 65
П р и н ц и п р а б о т ы ............................................................................................................................................... 67
С б о р к а ...........................................................................................................................................................................68
С к е т ч ................................................................................................................................................................................71

Проект 6. Детектор призраков............................................. 73
П р и н ц и п р а б о т ы ................................................................................................................................................75
С б о р к а ...........................................................................................................................................................................75
С к е т ч ................................................................................................................................................................................ 79

Часть 2. Звук
Проект 7. Проигрыватель Arduino........................................84
П р и н ц и п р а б о т ы ............................................................................................................................................... 86
С б о р к а ...........................................................................................................................................................................87
С к е т ч ................................................................................................................................................................................87

Проект 8. Игра на запоминание............................................ 89
П р и н ц и п р а б о т ы ................................................................................................................................................91
С б о р к а ...........................................................................................................................................................................91
С к е т ч ................................................................................................................................................................................93

Проект 9. Электронный привратник................................... 98
П р и н ц и п р а б о т ы ............................................................................................................................................ 100
С б о р к а ......................................................................................................................................................................101
С к е т ч ...........................................................................................................................................................................1 02

8 -СОДЕР ЖАН ИЕ

Часть 3. Движение
Проект 10. Лазер, управляемый джойстиком............... 106
П р и н ц и п р а б о т ы ........................................................................................................................................ 108
С б о р к а ....................................................................................................................................................................1 09
У с т а н о в к а л а з е р а .......................................................................................................................................1 10
С к е т ч .........................................................................................................................................................................11 2

Проект 1 1 . Дистанционное управление
сервоприводами..................................................................... 113
П р и н ц и п р а б о т ы ........................................................................................................................................ 115
Н а с т р о й к а ........................................................................................................................................................... 11 б
С б о р к а ....................................................................................................................................................................11 7
С к е т ч .........................................................................................................................................................................1 1 9

Часть 4. Отображение
Проект 12. Вывод данных на ЖК-дисплей....................... 122
П р и н ц и п р а б о т ы .........................................................................................................................................1 24
П о д г о т о в к а Ж К - д и с п л е я .................................................................................................................... 124
С б о р к а ....................................................................................................................................................................1 25
С к е т ч .........................................................................................................................................................................1 27

Проект 13. Метеостанция.................................................... 130
П р и н ц и п р а б о т ы .........................................................................................................................................132
С б о р к а ....................................................................................................................................................................1 33
С к е т ч .........................................................................................................................................................................1 36

Проект 14. Предсказатель судьбы.....................................137
П р и н ц и п р а б о т ы .........................................................................................................................................139
С б о р к а ....................................................................................................................................................................1 39
С к е т ч .........................................................................................................................................................................142

Проект 15. Игра на скорость...............................................144
П р и н ц и п р а б о т ы .........................................................................................................................................146
С б о р к а ....................................................................................................................................................................1 47
С к е т ч .........................................................................................................................................................................1 50

9 • СОДЕРЖАНИЕ

Часть 5. Работа с числами
Проект 16. Электронные игральные кубики.................. 154
П р и н ц и п р а б о т ы ..........................................................................................................................................1 56
С б о р к а .....................................................................................................................................................................157
С к е т ч ..........................................................................................................................................................................1 60

Проект 17. Ракетная пусковая установка........................163
П р и н ц и п р а б о т ы ..........................................................................................................................................165
T h e B U ild ................................................................................................................................................................165
С о з д а н и е р а б о ч е г о п р е д о х р а н и т е л я ................................................................................. 1 70
С к е т ч ..........................................................................................................................................................................1 72

Часть б. Безопасность
Проект 18. Датчик вторжения.............................................176
П р и н ц и п р а б о т ы ......................................................................................................................................... 178
С б о р к а .................................................................................................................................................................... 1 78
С к е т ч ..........................................................................................................................................................................181

Проект 19. Лазерная сигнализация...................................183
П р и н ц и п р а б о т ы ......................................................................................................................................... 185
С б о р к а .....................................................................................................................................................................1 85
С к е т ч ........................................................................................................................................................................188

Проект 20. Автоматическая турель...................................190
П р и н ц и п р а б о т ы ......................................................................................................................................... 192
С б о р к а .....................................................................................................................................................................1 93
С к е т ч ..........................................................................................................................................................................1 96

Проект 21. Датчик движения............................................... 198
П р и н ц и п р а б о т ы ......................................................................................................................................... 2 0 0
С б о р к а .....................................................................................................................................................................201
С к е т ч ..........................................................................................................................................................................2 0 3

Проект 22. Система ввода с клавиатуры ......................... 205
П р и н ц и п р а б о т ы ......................................................................................................................................... 2 0 7
П р о в е р к а к л а в и а т у р ы .......................................................................................................................... 2 0 7
С б о р к а .....................................................................................................................................................................2 0 8
С к е т ч ..........................................................................................................................................................................21 2

10 • СОДЕРЖАНИЕ

Проект 2 3 . Бесконтактный электронный пропуск........214
П р и н ц и п р а б о т ы ............................................................................................................................................ 2 1 6
С б о р к а ....................................................................................................................................................................... 21 8
С к е т ч ............................................................................................................................................................................ 2 23

Часть 7. Продвинутые проекты
Проект 2 4 . Разноцветное световое ш о у.......................... 228
П р и н ц и п р а б о т ы ............................................................................................................................................ 2 3 0
С б о р к а ....................................................................................................................................................................... 2 3 2
С к е т ч ............................................................................................................................................................................ 2 35

Проект 2 5 . Собственная плата Arduino!........................... 240
Собственная плата Arduino!.................................................240
П р и н ц и п р а б о т ы ............................................................................................................................................ 2 42
П о д г о т о в к а м и к р о к о н т р о л л е р а ..................................................................................................243
С б о р к а A r d u in o ............................................................................................................................................... 2 4 4

Приложение А: Компоненты.................................................249
Р у к о в о д с т в о по к о м п о н е н т а м .......................................................................................................2 5 0
Б а та р е й н ы й о тс е к , р а ссч и та н н ы й
на н а п р я ж е н и е 9 В ........................................................................................................ 2 5 0
Д а т ч и к в л а ж н о с т и п о ч в ы H L - 6 9 .....................................................................2 5 0
Д а т ч и к н а к л о н а .................................................................................................................2 5 0
Д а т ч и к т е м п е р а т у р ы и в л а ж н о с т и D H T11 ........................................251
Д ж о й с т и к ..................................................................................................................................251
Д и с к о в ы й к о н д е н с а т о р ...........................................................................................251
Ж К - д и с п л е й .............................................................................................................................251
И н ф р а к р а с н ы й д а т ч и к .............................................................................................. 2 52
К в а р ц е в ы й г е н е р а т о р 16 М Г ц ..........................................................................2 5 2
К л а в и а т у р а .............................................................................................................................2 5 2
К л е м м ы д л я б а т а р е и ................................................................................................... 2 53
К н о п к а .......................................................................................................................................... 2 53
К о н д е н с а т о р ......................................................................................................................... 2 53
М а к е т н а я п л а т а .................................................................................................................2 53
М и к р о к о н т р о л л е р A T m e g a 3 2 8 P .....................................................................2 5 4
П а с с и в н ы й и н ф р а к р а с н ы й д а т ч и к д в и ж е н и я ............................... 2 5 4
П л а т а A r d u in o U n o R 3 ................................................................................................2 5 4
П о т е н ц и о м е т р .................................................................................................................... 2 55
П ь е в о и з л у ч а т е л ь ..............................................................................................................255

11 • СОДЕРЖАНИЕ

Р а к е т н а я у с т а н о в к а W L T - V 9 5 9 - 1 9 ............................................................... 2 5 5
Р е з и с т о р ....................................................................................................................................2 5 5
С в е т о д и о д ................................................................................................................................ 2 5 6
С в е т о д и о д н а я R G B - м а т р и ц а ...............................................................................2 5 6
С д в и г о в ы й р е г и с т р .......................................................................................................2 5 7
С е м и с е г м е н т н ы й с в е т о д и о д н ы й и н д и к а т о р .................................. 2 5 7
С е р в о п р и в о д ........................................................................................................................2 5 7
У л ь т р а з в у к о в о й д а л ь н о м е р ...............................................................................2 5 8
Ф о т о р е з и с т о р ...................................................................................................................... 2 5 8
Ч е ты р е х р а зр я д н ы й се м и се гм е н тн ы й
п о с л е д о в а т е л ь н ы й и н д и к а т о р ........................................................................2 5 8
5 - в о л ь т о в ы й с т а б и л и з а т о р н а п р я ж е н и я ........................................... 2 5 9
R G B - с в е т о д и о д .................................................................................................................. 2 5 9
R F ID - м о д у л ь ...........................................................................................................................2 5 9
И н т е р н е т - м а г а з и н ы ....................................................................................................................................2 5 9
Р а с ш и ф р о в к а з н а ч е н и й р е з и с т о р о в ......................................................................................2 6 0

Приложение Б: Справка по контактам Arduino.............. 263
Предметный указатель......................................................... 267

БЛАГОДАРНОСТИ
Большое спасибо фантастической команде No G am ble Press, особен­
но Элизабет Чедвик и Серене Янг, за их поддержку и руководство в
создании этой книги. Спасибо Кристоферу Стэнтону за его техниче­
ские обзоры и предложения.
Эта книга не сущ ествовала бы, если бы не вдохновляющие
основатели Arduino: Массимо Банзи, Дэвид Куартиель, Том Иго,
Джанлука Мартино и Дэвид Меллис. Спасибо, что познакомили
меня и весь мир с чудом, которым является Arduino. Спасибо, Кен
Ширрифф, Уорвик Смит, Стивен де Ланнуа, и Абдулла Альхазми, за
любезное разрешение воспроизвести ваши проекты.
Я должен поблагодарить мою замечательную жену, Эмили, что
она так поддерживает и терпит меня последний год и освободи­
ла комнату в нашем доме, чтобы, я как «человек-пещера», мог со­
брать все эти проекты — и за поддержание порядка ежедневно!
Спасибо моим родителям, Ф рэнку и Лорне, за то, что позволи­
ли мне в детстве свободно разбирать вещи и не ж аловаться, когда
у меня повсюду были провода. Если бы не их поддержка, у меня
не было бы страсти к электронике и гаджетам, которые у меня все
еще есть сегодня. Спасибо также Дэвиду и Линде за их ф антасти­
ческую поддержку, одобрение и веру.

Будучи заявленным как серьезная и мощная машина, ZX
Spectrum использовался чаще всего для создания игр благодаря
предустановленной на нем среде программирования BASIC.
В результате пользователи занялись домашней разработкой игр
для «Спектрума».
Интерес к программированию возник и у меня, но в то
время я не мог совместить эти два увлечения. Физическая ком­
пьютеризация, когда программное и аппаратное обеспечение
стали отражать тренды в реальном мире, началась в районе
80-х годов, но была ограничена сферой высоких компьютерных
и робототехнических технологий, недоступных большинству
домашних потребителей. Сейчас, более чем 30 лет спустя, с появ­
лением Arduino я обнаружил, что опять вожусь с электроникой,
но теперь я могу заняться программированием, чтобы претво­
рить свои проекты в жизнь.

РЕВОЛЮЦИЯ ARDUINO
Arduino представляет собой небольшой компьютер, который
можно запрограммировать для связи с различными элек­
тронными компонентами и управления ними. Плата Arduino
оборудована несколькими контактами, способными работать
как в режиме ввода, что означает возможность получать через
них данные от различных компонентов, таких как коммутаторы,
кнопки и датчики, так и вывода, допуская передачу данных для
управления устройствами, такими как моторы, лампы и пье­
зоизлучатели. Такой тип программируемых плат известен под
названием микроконт роллер.
Проект Arduino был запущен в 2005 году в итальянском
городе Ивреа с целью создания устройства, подходящего под
студенческие интерактивные разработки, которое было бы
менее дорогостоящим, чем имеющиеся на то время прототипы.
Основатели, Массимо Банзи и Дэвид Куартиллес, назвали проект
в честь местного бара «Ардуино»*.
Плата Arduino состоит из двух основных частей: аппа­
ратной (микроконтроллера), являющейся «мозгом» платы,
и программной, которая используется для пересылки кода
вашей программы «мозгу». Вы можете бесплатно загрузить

* С итальянского слово переводится как «близкий друг;

16• ВВЕДЕНИЕ

программное обеспечение Arduino, называемое интегрирован­
ной средой разработки, или кратко IDE, integrated developm ent
environment.
Среда разработки имеет простой интерфейс и может работать
на компьютере под управлением Windows, macOS или Linux. Она
используется для создания скетчей (файлов с кодом программ
для Arduino), которые затем передаются на плату Arduino через
USB-кабель. Скетч сообщает микрокомпьютеру, какие действия
следует выполнять. Я расскажу более подробно об аппаратной
и программной частях в нескольких следующих главах.
После того, как плата Arduino запрограммирована, ее можно
отключить от компьютера и использовать автономно, подав
питание от USB-интерфейса, внешнего источника питания или
батареек.

ОБ Э Т О Й К Н И Г Е
Вы спросите, что вдохновило меня на написание этой книги? Ведь
Интернет содержит массу руководств, видеороликов и статей
об Arduino и собираемых на базе этой платы проектах. Я отвечу
просто — в большинстве случаев отсутствует наглядный под­
ход к коду, требуемый для выполнения этих проектов. Подобно
авторам публикации «Гаджеты и штуковины», вдохновившей меня
много лет назад, в этой книге я задался целью помочь вам собрать
простые проекты, которые дадут вам толчок к созданию собствен­
ных безделушек, используя опыт и получаемые знания.
В этой книге цепи собираются на макет ных платах. Это
наилучший способ разобраться, как работают цепи, т.к. подключе­
ния не припаяны намертво; если вы сделаете ошибку, то можете
просто отсоединить перемычку и подключить ее иначе. Каждый
проект содержит пошаговую инструкцию по подключению
основных компонентов, а также фотографии, которые помогут вам
быстрее разобраться со схемой. В большинстве проектов в каче­
стве краткого справочника используются таблицы.
В проектах представлены электрические схемы для нагляд­
ного отображения соединений, подобно рис. 1. Такие схемы
я создал в бесплатной программе Fritzing (скачать можно по
адресу w w w .fritzing.org), используемой энтузиастами для построе­
ния наглядных схематических изображений своих проектов.

17• ВВЕДЕНИЕ

Р И С У Н О К 1.1

Пример схемы
в программе Fritzing

Каждый проект также содержит код, необходи­
мый для программирования платы Arduino, поэтому
не стоит волноваться об изучении программы перед
тем, как вы начнете сборку. Первые проекты содержат
простые объяснения происходящего в коде, чтобы
помочь вам понять процесс программирования
и разобраться, как вносить собственные изменения,
если на то возникнут причины. Если вы не хотите наби­
рать код самостоятельно, то можете загрузить скетчи
с сайта https://eksm o.ru/files/arduino_geddes.zip.
Проекты в этой книге начинаются с элементар­
ных и постепенно усложняются по мере прочтения.
Не могу сказать, что эту книгу можно назвать
углубленным руководством по электронике или
программированию, но она отлично подойдет начи­
нающим. Я написал эту книгу, чтобы научить вас
собирать собственные устройства. Предоставляя вам
технические приемы, я могу сконцентрироваться на
творческих элементах разработки. Смысл в том, что
изучение работы цепей поможет вашему воображе­
нию отыскать пути для применения этих цепей на
практике.
В этой книге содержится полезная практическая
информация, благодаря которой вы сможете, к при­
меру, разобраться в способах подключения контактов
и использовать эти знания в других проектах. Вы

1 8 • ВВЕДЕНИЕ

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

С Т Р У К Т У Р А ЭТ ОЙ КНИГ И
Сложность проектов в книге постепенно возрастает, благо­
даря чему ваши знания и навыки работы с компонентами
будут расти. Материал в книге я разделил на следующие
части.

Часть I: Свет. Вы начнете с управления старыми добрыми
светодиодами с помощью кнопок и переменных резисторов,
а затем научитесь подключать компоненты и соберете диско­
течный стробоскоп, прибор для контроля полива комнатных
растений и даже детектор призраков (!).

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

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

Часть IV: Отображение. Ж идкокристаллический дисплей
пригодится во множестве проектов для отображения сообще­
ний и результатов игры. В этой части вы узнаете, как настроить
ЖК-дисплей, собрать метеостанцию для оповещения о погоде,
а также создать игры «Предсказатель судьбы» и «Игра на
скорость».

Часть V: Работа с числами. В этой части вы воспользуетесь
числовыми светодиодными индикаторами для создания

1 9 • ВВЕДЕНИЕ

электронного аналога игровых костей и системы обрат­
ного отсчета с предохранителем для ракетной пусковой
установки.

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

Часть VII: Продвинутые проекты. В этой части вы подклю­
чите к Arduino светодиодную матрицу и устроите настоящее
световое шоу. А «на десерт» получите порцию дополнитель­
ных навыков, собрав собственный компьютер Arduino для
использования в своих будущих проектах.

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

ПРОЕКТ 0:
НАЧАЛО РАБОТЫ
ПРЕЖДЕ ЧЕМ НАЧАТЬ СБОРКУ
ЦЕПЕЙ НА ОСНОВЕ ARDUINO,
СЛЕДУЕТ УЗНАТЬ О НЕКОТОРЫХ
ВАЖНЫХ ВЕЩАХ И ВЫПОЛНИТЬ
ПАРУ ДЕЙСТВИЙ. ДАВАЙТЕ
ВЗГЛЯНЕМ НА АППАРАТНОЕ
И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ,
КОТОРОЕ ВАМ ПОНАДОБИТСЯ ДЛЯ
РАБОТЫ С ПРОЕКТАМИ ИЗ ЭТОЙ
КНИГИ, И НАСТРОИМ КОМПЬЮТЕР
ДЛЯ РАБОТЫ С НИМИ. ЗАТЕМ ВЫ
ОПРОБУЕТЕ ARDUINO В ПРОСТОМ
ПРОЕКТЕ СО СВЕТОДИОДАМИ
И ИЗУЧИТЕ НЕСКОЛЬКО
ПОЛЕЗНЫХ ПРИЕМОВ, ТАКИХ КАК
ПАЙКА И ЗАГРУЗКА ПОЛЕЗНЫХ
БИБЛИОТЕК КОДА.

А П П А Р А Т Н О Е

О Б Е С П Е Ч Е Н И Е

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

Arduino Uno
Доступно множество плат Arduino, но в этой книге используется наиболее попу­
лярная из них — Arduino Uno, показанная на рис. 0.1. Arduino Uno — продукт
с открытым кодом (т. е. его архитектура может копироваться для других изделий
бесплатно), поэтому помимо оригинальной платы стоимостью около 2000 рублей
в магазинах вы найдете еще множество совместимых клонов примерно за 700
рублей.
Давайте рассмотрим плату Arduino Uno.

Рисунок 0.1
Плата Arduino Uno

Компьютер Arduino управляет подключенными к нему компонентами, такими
как электромоторы или светодиоды, пересылая им выходные данные (которые
передаются с платы Arduino). Данные, которые Arduino считывает с датчиков,
называются входными (т. е. поступающими на Arduino). Плата оборудована 14
цифровыми контактами ввода/вывода (контакты 0-13). Каждый из них может быть
настроен как вход, так и как выход. Полная спецификация контактов приведена
в приложении Б.

Питание
Плата Arduino Uno получает электропитание через интерфейс USB от компьютера
при подключении к нему для загрузки программы. Если Arduino не подключена
к компьютеру, вы можете обеспечить ее автономную работу, подключив блок

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

Положительные контакты 5 В и отрицательные контакты заземления
расположены с обеих сторон макетной платы

Рисунок 0.3
Схема соединений контактов макетной платы

СОВЕТ
В области электроники принято использовать красные провода для подключения к контактам 5 В (+) и черные —
к контактам заземления (-), чтобы случайно не перепутать схему подключения. Остальные провода могут иметь
любой другой цвет.

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

Рисунок 0.4
Положительная и отрицательная шины питания макетной платы

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

Провода-перемычки
Для подключения компонентов на макетной плате вы будете использовать
провода-перемычки. Они представляют собой изолированные одножильные
провода с обработанными концами, что упрощает вставку и снятие про­
водов. Вы можете использовать и обычные провода, но убедитесь, что они
одножильные, т.к. многожильный провод будет проблематично воткнуть
в отверстие для зажима.
Когда вы вставляете перемычку в отверстие макетной платы, провод
удерживается маленьким пружинным зажимом, образуя электрическое
соединение в этом ряду, состоящее обычно из пяти отверстий. Затем вы
можете установить компонент в соседнее отверстие, чтобы замкнуть цепь,
как это показано на рис. 0.5.

Рисунок 0.5
Пример сборки цепи на макетной плате

ПРИМЕЧАНИЕ
Т. к. версии среды разработки могут меняться довольно часто, я не буду описывать процесс их уста­
новки. Все версии среды разработки и подробное описание процесса установки для той или иной
операционной системы доступны в Интернете по адресу www.arduino.cc.

ПРОГРАММИРОВАНИЕ ARDUINO
Чтобы компоненты в проекте выполняли необходимые нам действия, нам
нужно написать программу, которая предоставит Arduino нужные инструк­
ции. Разработка программ для Arduino ведется в инструменте, именуемом
интегрированной средой разработки (ЮЕ). Эту среду разработки можно

скачать бесплатно с сайта www.arduino.cc/en/Main/Software, выбрав дистрибутив
для операционной системы Windows, macOS или Linux. После установки и запуска
среды вы сможете писать компьютерные программы (наборы пошаговых инструк­
ций, известных в мире Arduino под термином скетчи), которые затем передаются
в память Arduino через USB-интерфейс. Микрокомпьютер Arduino будет выполнять
инструкции из скетча, попутно взаимодействуя с окружающей средой.

Интерфейс среды разработки
Запустив среду разработки Arduino, вы должны увидеть окно, показанное на рис. 0.6.

Рисунок 0.б
Среда разработки Arduino

Окно среды разработки Arduino содержит в верхней части панель инстру­
ментов с кнопками для наиболее часто используемых действий, в центре область
скетча, в которой вы будете писать или просматривать свои программы, и в нижней
части монитор порта. На панели монитора порта выводятся уведомления о соеди­
нении между вашим компьютером и Arduino, а также возникающие ошибки, если
ваш скетч не компилируется должным образом.
27 • ПРОЕКТ 0

Скетчи Arduino
Я предоставлю вам скетчи для всех проектов, и мы разберем их работу.
Все скетчи доступны для скачивания по адресу eksmo.ru/files/arduino_
geddes.zip.
Подобно любой программе, скетчи представляют собой небольшой набор
инструкций и весьма критичны к ошибкам. Чтобы убедиться в правильности
кода скетча, нажмите кнопку Проверить (Verify) в верхней части окна. С ее
помощью производится проверка кода на ошибки, а результат выводится на
панели монитора порта, например что скетч скомпилирован правильно. Если
возникает ошибка, вы всегда можете скачать авторскую версию скетча, а затем
скопировать его код и вставить в окне среды разработки.

Библиотеки
В мире Arduino библиотека представляет собой небольшой фрагмент кода,
выполняющий определенную функцию. Вместо того чтобы постоянно вво­
дить один и тот же код в каждый скетч, вы можете добавить команду, которая
добавит код из библиотеки. Этот прием экономит время и позволяет легко
подключаться к таким электронным компонентам, как датчик, индикатор или
модуль.
Среда разработки Arduino содержит множество встроенных библи­
отек, таких как LiquidCrystal, позволяющей легко обмениваться данными
с ЖК-дисплеями.
В Интернете вы можете найти гораздо больше библиотек. Для выполнения
проектов этой книги вам нужно будет импортировать следующие библиотеки:
RFID,Tone, Pitches, Keypad, Password, Ultrasonic, NewPing, IRRemote и DHT. Вы
найдете все необходимые библиотеки в архиве по ссылке eksmo.ru/files/arduino_
geddes.zip.
После того как библиотеки будут загружены и распакованы, вам нужно их
установить. Чтобы установить библиотеку в среде разработки Arduino версии
1.0.6 и выше, выполните следующие шаги.
1.

Выберите команду меню Скетч ►Подключить библиотеку ►Добавить

.ZIP библиотеку (Sketch ►Include Library ►Add .ZIP Library).
2.

Выберите загруженный ZIP-файл и нажмите кнопку Open (Открыть).
В более старых версиях среды разработки Arduino нужно будет распако­
вать архив с библиотекой и скопировать каталог с содержимым в папку
sketchbook/libraries (Linux), Му Documents\Arduino\ Libraries (Windows) или
Documents/Arduino/libraries (macOS).
Чтобы установить библиотеку вручную, найдите и распакуйте ZIP-файл

с библиотекой. Например, если вы устанавливаете библиотеку под названием

keypad из архивного файла keypad.zip, вам следует открыть файл keypad.zip,
который будет распакован в каталог с именем keypad, содержащий файлы напо­
добие keypad.cpp и keypad.h. Перетащите каталог keypad в папку с библиотеками
в соответствии с вашей операционной системой: sketchbook/libraries в Linux, Му
Documents\Arduino\ Libraries в Windows и Documents/Arduino/libraries в macOS. Затем
перезапустите среду разработки Arduino.
Библиотеки перечисляются в начале скетча. Эти строки легко определить, т.к.
код начинается с команды #indude. Имена библиотек заключены в угловые скобки о
и заканчиваются расширением ,h, как показано в следующем вызове библиотеки
Servo:
♦include
Сразу установите перечисленные библиотеки, которые вам понадобятся в про­
ектах, чтобы сэкономить в будущем немного времени.

П Е Р В Ы Й Т Е С Т A R D U I N O : МИ Г А ЮЩИ Й С В Е Т О Д И О Д
Теперь, когда мы ознакомились с аппаратной и программной частями наших
проектов, начнем с классического первого проекта Arduino: мигающего
светодиода.
Это не только простейший способ убедиться в работоспособности платы
Arduino, но также знакомство с простейшим скетчем. Как я упоминал ранее,
скетч — это просто набор инструкций, выполняемых на компьютере. В памяти
Arduino одновременно может храниться только один скетч, поэтому, как только
вы загрузите ваш скетч в память Arduino, он будет выполняться каждый раз при
включении Arduino, пока вы не загрузите новый скетч.
В этом проекте мы будем использовать тестовый скетч, поставляемый
в составе со средой разработки Arduino. Эта программа включает светодиод на
1 секунду, затем выключает на 1 секунду и т.д. Светодиод излучает видимый свет,
когда через него проходит ток с небольшим напряжением. Светодиод будет рабо­
тать только при постоянном токе, текущем в одном направлении, поэтому более
длинная ножка должна быть подключена к положительному контакту. Для работы
светодиода также требуется резистор, снижающий силу тока, иначе светодиод
может перегореть. На контакте 13 платы Arduino встроен резистор, которым мы
и воспользуемся.
Выполните следующие шаги, чтобы провести тестирование:
1.

Вставьте длинную ножку (также известную как +5 В, положительный контакт
или анод) светодиода в контакт 13 на плате Arduino, как показано на рис. 0.7.
Подключите короткую ножку (также известную как отрицательный контакт или
катод) к контакту GND (рядом с контактом 13).

29 • ПРОЕКТ 0

Рисунок 0.7
Сборка проекта мигающего светодиода

2.

Подключите Arduino к вашему компьютеру с помощью USB-кабеля.

3.

Введите следующий код в окне среды разработки:

О

// Проект мигающего светодиода

©
©

int led = 13;
void setup () {
pinMode(led, OUTPUT);

О
©

void loop() {
digitalWrite(led, HIGH) ;
о
delay ( 1 0 0 0 ) ;
о
digitalWrite(led, LOW) ;
©
delay ( 1 0 0 0 ) ;
© )

©

4.

Нажмите кнопку Verify (Проверить) в виде галочки и убедитесь, что про­
грамма работает правильно.

5.

Теперь нажмите кнопку Upload (Загрузка), чтобы передать ваш скетч на
Arduino.

Структура кода
Рассмотрим, что происходит в каждой строке скетча.
О

Это комментарий. Каждая строка программы, которая начинается с сим­
волов //, предназначена для чтения только пользователем и игнорируется
Arduino, что вы можете использовать для добавления комментариев и
описания вашего кода (этот процесс называется комментированием кода).
Если комментарий занимает больше одной строки, начните его с символов /*
30 • ПР ОЕ КТ 0

и закончите символами */. Строки текста внутри этих символов будут проигнори­
рованы Arduino.
©

Присваиваем контакту 13 имя led. Каждое упоминание led в скетче относится
к контакту 13.

©

Обозначает, что код настройки между фигурными скобками {} после этой
инструкции будет выполнен однократно при запуске программы. С открываю­
щей фигурной скобки { начинается код настройки.

©

Сообщает Arduino, что контакт 13 работает в режиме вывода. Таким образом мы
будем подавать питание на светодиод. Закрывающая фигурная скобка} обозна­
чает конец кода настройки.

©

Создает цикл. Код, который находится между фигурными скобками {}, после
инструкции 1оор() запустится один раз при включении Arduino и будет повто­
ряться, пока на Arduino подается питание.

©

Инструктирует Arduino перевести led (контакт 13) в режим HIGH, что значит подать
питание на этот контакт. Другими словами, это перевод контакта во включенное
состояние. В этом скетче обозначает включение светодиода.

©

Инструктирует Arduino подождать 1 секунду. Т.к. время в Arduino отсчитывается
в миллисекундах, а 1 секунда = 1000 миллисекунд, здесь указано значение 1000.

©

Инструктирует Arduino перевести led (контакт 13) в режим LOW, т. е. отключить
питание на контакте. Эта инструкция отключает светодиод.

©

Инструктирует Arduino опять подождать 1 секунду.

©

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

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

С П И С О К К О М П О Н Е Н Т О В ДЛЯ П Р О Е К Т О В
Ниже приведен полный перечень компонентов, которые вам понадобятся при
работе над проектами из этой книги. Наиболее важный из них — это, разумеется,
сама плата Arduino; во всех проектах используется версия Arduino Uno R3. Как
упоминалось ранее, словом Arduino обозначаются только официальные платы,
но у некоторых компаний, таких как «Электронные войска», SlicMicro, Sainsmart и
Adafruit, можно приобрести совместимые клоны. (Вы найдете список официальных
магазинов по адресу arduino.cc/en/Main/Buy/.)

31 • ПРОЕКТ О

В начале каждого проекта приводится список необходимых комплекту­
ющих, поэтому, если вы хотите выполнить только определенные проекты,
можете перейти на соответствующую страницу проекта, который вам
понравился, и приобрести компоненты, необходимые только для него.
Хотя вы можете приобрести каждый компонент по отдельности, я реко­
мендую обратить внимание на стартовые наборы Arduino. Множество
из них можно найти в Интернете, а в приложении А приведен список
интернет-магазинов.
1

Arduino Uno R3 (или клон)

1

батарейный отсек, дающий напряжение 9 В, со штекером 2,1 мм

2

полноразмерные макетные платы

1

полуразмерная макетная плата

1

мини-плата

50

соединительных проводов (перемычек) «папа-папа»

10

соединительных проводов (перемычек) «мама-папа»

30

резисторов с сопротивлением 220 Ом

10

резисторов с сопротивлением 330 Ом

1

резистор с сопротивлением 470 Ом

1

резистор с сопротивлением 10 кОм

1

резистор с сопротивлением 1 МОм

40

5-мм светодиодов: красный, зеленый, желтый, синий (по 10 каждого
цвета)

1

потенциометр с сопротивлением 50 кОм

4

тактовых кнопки с четырьмя контактами (ножками)

1

датчик влажности почвы типа HL-69

1

пьезоизлучатель (зуммер)

1

3,5-мм аудиоштекер

2

сервопривода Tower Pro 9g SG90

1

фоторезистор (также известен как LDR)

1

аналоговый пятиконтактный двухосный джойстик

1

корпус с поворотным устройством

1

четырехконтактный ультразвуковой дальномер HC-SR04

1

мембранная клавиатура размером 4x4 кнопки

1

семисегментный светодиодный индикатор

1

четырехразрядный семисегментный последовательный индикатор

1

датчик температуры и влажности DHT11

1

ЖК-дисплей размером 16x2 (совместимый с Hitachi HD44780)

1

датчик наклона с шариком

1

светодиодная RGB-матрица размером 8x8
32 • ПРОЕКТ 0

1

инфракрасный (ИК) датчик с частотой 38 кГц

1

пассивный инфракрасный датчик движения HC-SR501

1

считыватель Mifare RFID RC-522, карта и брелок

4

выходных сдвиговых регистра 74НС595

1

маломощная лазерная указка

1

ракетная установка для квадрокоптера WLToys RC V959

1

микроконтроллер ATMEL ATmega328P

1

кварцевый генератор с частотой 16 МГц (НС-495)

1

5-вольтовый стабилизатор напряжения L7805cv

2

электролитических конденсатора емкостью 100 мкФ

1

клемма для батареи напряжением 9 В (типа «Крона»)

2

дисковых конденсатора емкостью 22 пФ

1

батарея напряжением 9 В (типа«Крона»)

О Б У С Т Р О Й С Т В О

В А Ш Е Г О

Р А Б О Ч Е Г О

М Е С Т А

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

Рисунок 0.8
Пример обустройства рабочего места

Рабочее место может быть устроено где угодно. Вам точно понадобится стол
или ровная поверхность, достаточная для компьютера или ноутбука, на котором вы
33 • ПР ОЕ КТ 0

будете использовать среду разработки и загружать программы, при этом также
имеющая достаточно места для сборки самих проектов.
Вам также может понадобиться место для хранения компонентов под
рукой и инструментов, которые могут понадобиться, например паяльника,
кусачек, ножа, дрели и т.д. Не очень практично держать все инструменты и
материалы на столе, поэтому рекомендуется приобрести ящики или кейсы для
хранения. Я использую большой кейс для инструментов, таких как паяльник
или кусачки, и маленькие кейсы для компонентов. Пластиковые ящики для
рыболовных снастей и прочей мелочевки идеальны для хранения комплек­
тующих (см. рис. 0.9), а раздвижной ящик отлично подойдет для хранения
паяльника и других небольших инструментов (рис. 0.10).

Рисунок 0.9
Ящики или кейсы для инструментов удобны для хранения компонентов

Рисунок 0.10
Раздвижной ящик отлично подойдет для хранения паяльника и других небольших инструментов

34 • ПРОЕКТ 0

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

Рисунок 0.11
Пластиковые контейнеры с маленькими отсеками идеально подойдут для организации очень маленьких
предметов

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

НЕОБХОДИМОЕ ОБОРУДОВАНИЕ
И ИНСТРУМЕНТЫ
Ниже представлены наиболее полезные инструменты, которые вы можете приоб­
рести для повышения эффективности и комфорта работы (они не обязательны для
работы над проектами из этой книги).


Штатив для плат (третья рука) — полезно для удерживания предметов

35 • ПРОЕКТ 0

Антистатический коврике разметкой

Игольчатые плоскогубцы

Кусачки

30-ваттный паяльник и припой (см. раздел «Краткое руководство по пайке»;
Оловоотсос — приспособление для удаления припоя

36 • ПРОЕКТ О

Инструмент для снятия изоляции (стриппер) — особенно полезен для изготовления
перемычек



Кабель USB (А — В) (принтерный) для подключения Arduino



Цифровой мультиметр



Набор отверток

37 • ПРОЕКТ О

Многофункциональный инструмент и насадки

К Р А Т К О Е Р У К О В О Д С Т В О ПО П А Й К Е
Некоторые из компонентов, которые вам понадобятся, могут поставляться
без штырьковых соединителей (рис. 0.12) для удобства транспортировки,
и вам нужно будет припаять их к компонентам самостоятельно. Штырьковые
соединители представляют собой линейки штырьков, которые вы прикрепля­
ете к компоненту, чтобы установить соединения с помощью перемычек или
вставить их в макетную плату. Они продаются в виде длинных полос, которые
можно легко разломить на части требуемого размера, и обычно вставляются
в соответствующие отверстия на компоненте.

Рисунок 0.12
Штырьковые соединители

38 • ПРОЕКТ О

К примеру, модуль RFID, используемый в проекте 23, поставляется без
штырьковых соединителей, поэтому я покажу, как припаять их в этом кратком
руководстве по пайке.
Если вы хотите глубже изучить приемы пайки, то можете просмотреть
удобное руководство в комиксах по ссылке mightyohm.com/files/soldercomic/
FullSoiderComic_EN.pdf.
Первое, что вам потребуется, это паяльник (рис. 0.13). 30-ваттный универ­
сальный паяльник с тонким жалом прекрасно подойдет. Лучше всего приобрести
набор, содержащий паяльник, подставку и припой.

Рисунок 0.13
Набор из паяльника и припоя

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

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

2.

Отломайте нужное количество штырьковых соединителей для вашего
компонента. Для модуля RFID из проекта 23 понадобится линия из восьми
соединителей. Вставьте их в модуль, как показано на рис. 0.14.

3.

Теперь следует припаять контакты. Начните с крайнего левого контакта.
Подержите жало паяльника в соприкосновении с контактом и модулем при­
мерно две секунды. Удерживая паяльник в этом месте, добавьте припой;
припой должен расплавиться и создать соединение.

ПРИМЕЧАНИЕ
Припой наносится не на сами ножки, а на места их контакта с поверхностью платы модуля.

39 • ПРОЕКТ О

Рисунок 0.14
Вставьте ножки соединителя в отверстия на плате модуля

4.

Уберите паяльник и припой — контакт свыше пары секунд может перегреть
ваши компоненты и повредить их. Подождите, пока область пайки остынет.

5.

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

Рисунок 0.15
Качественная пайка должна выглядеть так

Обеспечение безопасности работы
Паяльник нагревается очень и очень сильно! Используйте паяльник с особой
осторожностью. Не оставляйте паяльник в присутствии детей без присмотра!
Обязательно соблюдайте следующие правила безопасности.


Обязательно используйте подставку и никогда не кладите горячий паяльник на
стол.



Паяйте в хорошо проветриваемом помещении. Пары, выделяемые из плавиль­
ного припоя, могут быть вредными.



Храните легковоспламеняющиеся материалы вдали от рабочей зоны.



Держите оборудование в недоступных для детей местах.



Надевайте защитные очки.



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

ЧАСТЬ 1

СВЕТ

ПРОЕКТ 1:
УПРАВЛЯЕМЫЙ
СВЕТОДИОД
В ЭТОМ ПРОЕКТЕ ВЫ ДОБА­
ВИТЕ В ЦЕПЬ СО СВЕТОДИОДОМ
ТАКТОВУЮ КНОПКУ, ЧТОБЫ
УПРАВЛЯТЬ ЕГО СВЕЧЕНИЕМ.

ТРЕБУ ЕМ Ы Е КОМПОНЕНТЫ
• Плата Arduino

• Светодиод

• Макетная плата

• Резистор с сопротивле­

• Перемычки
• Четырехконтактный кно­
почный переключатель

нием 10 кОм
• Резистор с сопротивле­
нием 220 Ом

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

РИСУНОК 1.1
Кнопочный переключатель или кнопка

ПРИНЦИП Р АБОТЫ
При нажатии кнопка замыкает цепь, подавая питание. Как только кнопка отпущена,
она размыкает цепь, прерывая питание. Такие кнопочные переключатели также
известны как моментального действия или нормально открытые и используются,
к примеру, в компьютерных клавиатурах. Кнопки отличаются от тумблеров, кото­
рые остаются во включенном/выкпюченном состоянии, пока вы не переключите их
в другое положение, как, например, выключатель освещения.
Наша кнопка имеет четыре контакта (ножки), но для подключения обычно
используются только два из них. В этом проекте вы будете использовать верхние
ножки (две неиспользуемые нижние ножки выполняют ту же функцию). На рис. 1.2
показано, как контакты работают в цепи. Контакты А и С всегда замкнуты, так же как
В и D. При нажатии кнопки цепь замыкается.

РИСУНОК 1.2
Схема разомкнутой кнопки

44 • ПРОЕКТ 1

СБОРКА
1.

Установите кнопку на макетную плату, как показано на рис. 1.3.

РИСУНОК 1.3
Установка кнопки на макетную плату

2.

Соедините ножку А кнопки с одной из ножек резистора с сопротивлением
10 кОм и подключите эту же ножку резистора к контакту 2 платы Arduino.
Подключите другую ножку резистора к шине заземления, а саму шину — к кон­
такту GND платы Arduino. Подключите ножку В кнопки к шине питания +5 В,
а шину, в свою очередь, — к контакту 5V платы Arduino.
КН О П КА

ARD U IN O

Контакт GND и контакт 2
Контакт А

через резистор с сопро­
тивлением 10 кОм

Контакт В
3.

Контакт 5V

Установите светодиод на макетную плату, подключив длинную ножку анода
к контакту 13 платы Arduino через резистор с сопротивлением 220 Ом, а корот­
кую ножку — к заземлению (GND).
СВЕТО Д И О Д

Длинная ножка (анод)
Короткая ножка (катод)

ARD U IN O

Контакт 13 через резистор
с сопротивлением 220 Ом
Контакт GND

45 • ПРОЕКТ 1

4.

Убедитесь, что ваша цепь соответствует схеме на рис. 1.4, а затем загрузите
код, приведенный в разделе «Скетч» далее в этом проекте.

Р И С У Н О К 1.4

Принципиальная схема светодиода, управляемого с помощью кнопки

46 • ПРОЕ КТ 1

СКЕТЧ
В этом скетче вы определяете контакт кнопки и переводите его в режим ввода —
INPUT, а контакт светодиода — в режим вывода — OUTPUT. Код инструктирует Arduino
включить светодиод, пока нажата кнопка (замыкающая цепь), и держать светодиод
отключенным, если кнопка не нажата. При отпускании кнопки цепь размыкается
и светодиод отключается.

/*Создан DojoDave
изменен 30 августа 2011 Томом Иго.
Этот код - общественное достояние.
http://www.arduino.сс/en/Tutorial/Button
*/

const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;

// Контакт, к которому подключена кнопка
// Контакт, к которому подключен светодиод
// Задание значения кнопки

void setup () {
pinMode(ledPin, OUTPUT);
// Перевод контакта светодиода в режим вывода
pinMode(buttonPin, INPUT); // Перевод контакта кнопки в режим ввода
}
void loop () {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}

//
//
//
//

Чтение ввода с контакта 2
Если кнопка нажата, устанавливается состояние HIGH
Включение светодиода

// В противном случае
// отключаем светодиод

ПРОЕКТ 2:
ДИММЕР
ОСВЕЩЕНИЯ
В ЭТОМ ПРОЕКТЕ ВЫ СОЗДА­
ДИТЕ СВЕТОРЕГУЛЯТОР ТИПА
«ДИММЕР», ПРИМЕНИВ ПОТЕН­
ЦИОМЕТР ДЛЯ УПРАВЛЕНИЯ
ЯРКОСТЬЮ СВЕТОДИОДА.


ТР ЕБУ ЕМ Ы Е КОМПОНЕНТЫ
• Плата Arduino
• Макетная плата
• Перемычки
• Светодиод

• Потенциометр с сопро­
тивлением 50 кОм
• Резистор с сопротивле­
нием 470 Ом

________________________________________ 7

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

ПРИНЦИП РАБОТЫ
Потенциометр управляет постоянным аналоговым сигналом. Люди вос­
принимают мир в аналоговом режиме; все, что мы видим и слышим — это
непрерывная передача информации нашим органам чувств. Этот непрерывный
поток и есть аналоговые данные. С другой стороны, цифровая информация
представляет аналоговые данные, используя исключительно числа. Чтобы
принять непрерывные аналоговые данные, поступающие от потенциометра,
компьютер Arduino должен представить сигнал как серию дискретных чисел —
в данном случае, напряжения. Центральный контакт потенциометра посылает
сигнал на аналоговый вход платы Arduino, любой контакт с метками от АО до А5,
для считывания значения.
По сути, светодиод просто включается и выключается, но это происходит
так быстро, что благодаря компенсации наши глаза видят постоянное свечение
светодиода, но с разным уровнем освещенности. Этот эффект известен под
термином инерция зрения.
Чтобы создать этот эффект, в компьютере Arduino используется техноло­
гия, называемая широтно-импульсной модуляцией (ШИМ). Arduino создает
импульсы, очень быстро включая и выключая питание. Длительность вклю­
чения и отключения питания (так называемая ширина импульса) в цикле
определяет средний уровень выхода, и, изменяя значение ширины импульса,
устройство может симулировать значения напряжения в диапазоне от 5 до 0
В (т.е. от включенного до отключенного состояния). Если питание от Arduino
подается в течение половины времени и отключается также на половину
времени, средний уровень выхода составит 2,5 В, т.е. по центру между 0 и 5 В.
Если сигнал подается 80% всего времени, а отключен в течение 20%, средний
уровень выхода составит 4 В, и т.д. Вы можете изменять сигнал, который, в свою
очередь, меняет ширину импульса, поворачивая ручку потенциометра влево
или вправо, увеличивая или уменьшая сопротивление.
Используя этот метод, вы можете изменить напряжение, посылаемое на
светодиод, и сделать его свечение более тусклым или ярким, соответствующим
аналоговому сигналу от потенциометра. Только контакты 3 ,5, б, 9,10 или 11
платы Arduino поддерживают ШИМ. На рис. 2.1 показаны примеры работы ШИМ
в виде формы сигнала.

50 • ПРОЕКТ 2

Высокий сигнал (5 В) в течение 20% времени и низкий (0 В) в течение 80% времени,
поэтому средний уровень выходного напряжения (красная линия) будет составлять 0,2

х 5 В=

1 В.

Высокий сигнал 50% и низкий сигнал 50% , поэтому средний уровень выходного напряжения
будет составлять 0,5 х 5 В = 2,5 В.

Высокий сигнал 80% и низкий сигнал 20 % , поэтому средний уровень выходного напряжения будет
составлять 0,8 х 5 В = 4 В.

РИСУНОК 2.1
Широтно-импульсная модуляция в виде формы сигнала

СБОРКА
1.

Установите потенциометр на макетную плату и подключите центральный контакт
потенциометра к контакту АО платы Arduino. Подключите один из внешних кон­
тактов потенциометра к положительной шине 5 В, а другой — к заземлению (GND)
на макетной плате (не имеет значения, в каком порядке подключены внешние
контакты потенциометра; эти инструкции отражают вариант подключения, про­
демонстрированный в этой книге), как показано на рис. 2.2.

Р И С У Н О К 2 .2

Подключение потенциометра к Arduino

51 • ПРОЕКТ 2

2.

П О ТЕН Ц И ОМ ЕТР

ARD U IN O

Левый контакт

Контакт 5V

Центральный контакт

Контакт АО

Правый контакт

Контакт GND

Установите светодиод на макетную плату. Подключите ножку анода (длин­
ную) к контакту 9 платы Arduino через резистор с сопротивлением 470 Ом,
а ножку катода (короткую) — к контакту GND, как показано на рис. 2.3.
СВЕТОД И ОД

ARD U IN O

Длинная ножка (анод)

Контакт 9

Короткая ножка (катод)

Яркость светодиода
к о н т р о л и р у е т с я пл а т о й
Arduino.

Контакт GND через резистор
с сопротивлением 470 Ом

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

Р И С У Н О К 2 .3

Принципиальная схема диммера освещения

52 • ПРОЕКТ 2

3.

Загрузите в память Arduino код скетча, приведенный в разделе «Скетч»
далее в этом проекте.

4.

Поворачивайте ручку потенциометра для управления яркостью
светодиода.
У этого проекта есть множество потенциальных возможностей для приме­

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

СКЕТЧ
При работе этого скетча контакт АО настроен на работу с потенциометром,
а контакт 9 служит выводом для питания светодиода. Затем запускается цикл,
который постоянно считывает значение с потенциометра и использует его для
установки напряжения, подаваемого на светодиод. Напряжение колеблется
в пределах от 0 до 5 В, согласно значению которого устанавливается соответ­
ствующая яркость светодиода.
/* http://arduino.cc/en/Reference/AnalogWrite,
Том Иго, itp.nyu.edu/physcomp/Labs/AnalogIn */
int potPin = АО;
int potValue = 0 ;
int led = 9 ;

//
//
//
//
//

Контакт аналогового входа, подключенный
к потенциометру
Значение, считываемое с потенциометра
Контакт 9 (подключен к светодиоду)
поддерживает ШИМ

// Выполняется однократно в начале программы
void setup () {
pinMode(led, OUTPUT);
// Перевод контакта 9 в режим вывода
}
// Непрерывное выполнение
void loop() (
potValue = analogRead(potPin);
analogWrite(led, potValue/4);

delay(10) ;

//
//
//
//
//
//

Чтение значения потенциометра
с контакта АО
Отправка значения потенциометра
на светодиод для управления
яркостью с помощью ШИМ
Ожидание 10 мс

ПРОЕКТ 3:
СВЕТОДИОДНАЯ
ПАНЕЛЬ
В ЭТОМ ПРОЕКТЕ ВЫ
ПРИМЕНИТЕ ЗНАНИЯ ИЗ ПРЕДЫ­
ДУЩИХ ПРОЕКТОВ И СОЗДАДИТЕ
СВЕТОДИОДНУЮ ПАНЕЛЬ, УПРАВ­
ЛЯЕМУЮ ПОТЕНЦИОМЕТРОМ.

ТР ЕБУ ЕМ Ы Е КОМПОНЕНТЫ
Плата Arduino
Макетная плата
Перемычки
9 светодиодов

Потенциометр с сопро­
тивлением 50 кОм
9 резисторов с сопротив­
лением 220 Ом

ПРИНЦИП РАБОТЫ
Устройство из этого проекта представляет собой ряд светодиодов в виде линии.
Нечто подобное вы могли видеть в виде спектроанализатора на аудиотехнике
и в аудиопрограммах. Панель состоит из ряда светодиодов с аналоговым входом,
например потенциометром или микрофоном. В этом проекте вы будете подавать
аналоговый сигнал от потенциометра для управления светодиодами. Когда вы
поворачиваете ручку потенциометра в одну сторону, светодиоды загораются по
очереди, как показано на рис. 3.1 (а), пока они не будут включены все, как пока­
зано на рис. 3.1 (б). Когда вы поворачиваете его в другую сторону, они поочередно
выключаются, как показано на рис. 3.1 (в).

Р И С У Н О К 3.1

Светодиоды включаются/выключаются в соответствии с поворотом ручки потенциометра

56 • ПРОЕКТ 3

СБОРКА
1.

Установите светодиоды на макетную плату, при этом короткие ножки (катоды)
должны быть подключены к шине заземления. Подключите шину заземления к кон­
такту GND платы Arduino с помощью перемычки.

2.

Установите на макетную плату по одному резистору с сопротивлением 220 Ом на
каждый светодиод, одна ножка резистора должна быть соединена с длинной ножкой
(анодом) светодиода. Другую ножку каждого резистора подключите к цифровым
контактам 2-10 соответственно, как показано на рис. 3.2. Важно, чтобы резисторы
при подключении как бы образовали «мостики» через канавку макетной платы, как
показано на рисунке.
СВЕТОДИОДЫ

ARDUINO

Длинные ножки (аноды)

Контакты 2-10 через резисторы с сопротивлением 220 Ом

Короткие ножки (катоды)

Контакт GND

РИСУНОК 3.2
Принципиальная схема светодиодной панели

ПРИМЕЧАНИЕ
Как упоминалось в проекте 2, на самом деле не имеет значения, каким образом подключаются внешние контакты
потенциометра. В тексте я привел инструкции в соответствии с показанным изображением.

57 • ПРОЕКТ 3

3.

Установите потенциометр на макетную плату и подключите его централь­
ную ножку потенциометра к контакту АО платы Arduino. Подключите
правую внешнюю ножку потенциометра к контакту 5V платы Arduino,
а левую потенциометра — к контакту GND платы Arduino.

4.

ПОТЕ НЦ ИОМ ЕТ Р

AR D UIN O

Левый контакт

Контакт GND

Центральный контакт

Контакт АО

Правый контакт

Контакт 5V

Загрузите в память Arduino код скетча, приведенный в разделе «Скетч»
далее в этом проекте.

СКЕТЧ
Сначала скетч считывает данные с потенциометра. Код распределяет входное
значение в виде выходного диапазона, в данном случае на девять светодиодов.
Затем запускается цикл for для подачи питания на выводы. Если номер выхода
светодиода на панели меньше, чем значение в диапазоне, светодиод включа­
ется; если больше — отключается. Как видите, все просто. Если вы повернете
ручку потенциометра вправо, светодиоды будут последовательно загораться.
Повернете влево — гаснуть один за другим.
/* Создан Томом Иго. Этот код - общественное достояние,
http://www.arduino.cc/en/Tutorial/BarGraph */
const int analogPin = AO; // Контакт, к которому подключен потенциометр
const int ledCount = 9;
// Количество светодиодов
int ledPinsf] = {2,3,4,5,6,7,8,9,10};
// Контакты, к которым
// подключены светодиоды
void setup () {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
// Перевод контактов,
/ / к которым подключены светодиоды, в режим вывода
}
}
// Начало цикла
void loop () {
int sensorReading = analogRead(analogPin);
// Аналоговый вход
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
if (thisLed < ledLevel) {
// Последовательное вклюdigitalWrite(ledPins[thisLed] , HIGH); // чение светодиодов
}
else {
// Последовательное выключение светодиодов
digitalWrite(ledPins[thisLed], LOW);
}
}
}

ПРОЕКТ 4:
ДИСКОТЕЧНЫЙ
СТРОБОСКОП
В ЭТОМ П РО ЕКТЕ ВЫ ПРИМ Е­
НИТЕ ЗНАНИ Я, ПОЛУЧЕННЫ Е
В П РО ЕКТЕ 3, ЧТОБЫ СОЗДАТЬ
СТРО БО СКО П С ВОЗМОЖ­
НОСТЬЮ УПРАВЛЕНИЯ
СКОРОСТЬЮ М ЕРЦАНИЯ.

ТРЕБУ ЕМ Ы Е КОМПОНЕНТЫ
Плата Arduino

2 красных светодиода

Макетная плата

Потенциометр с сопро­
тивлением 50 кОм

Перемычки
2 голубых светодиода

4 резистора с сопротив­
лением 220 Ом

ПРИНЦИП РАБОТЫ
Поворот ручки потенциометра вправо/влево изменяет скорость мигания светодио­
дов, создавая стробоскопический эффект. Вы можете использовать красные и синие
светодиоды для создания эффекта полицейских проблесковых маячков (см. рис. 4.1).
Чтобы светодиоды одного и того же цвета светились вместе, подключите их к одному
контакту на плате Arduino. А если вы сделаете корпус и поместите светодиоды внутрь,
у вас получится собственный мобильный стробоскоп! Вы можете установить до 10
светодиодов; понадобится лишь внести минимальные изменения в скетч, добавив
информацию о дополнительных светодиодах и выходах.

РИСУНОК 4.1
Красные и синие светодиоды имитируют свечение полицейских проблесковых маячков

СБОРКА
1.

Установите светодиоды на макетную плату, подключив короткие ножки (катоды)
к шине заземления, а затем к контакту GND платы Arduino.

2.

Установите резисторы на макетную плату, подключив их к длинным ножкам
(анодам) светодиодов. Используя перемычки, подключите два красных свето­
диода к одному контакту на плате Arduino, а два синих светодиода — к другому.
Подключение к плате Arduino осуществляется после резисторов, как показано на
рис. 4.2. Так вы сможете управлять светодиодами одного цвета через один контакт.

ПРИМЕЧАНИЕ
Не забудьте подать напряжение на макетную плату.

61 • ПРОЕКТ 4

Р И С У Н О К 4 .2

Подключение светодиодов с помощью перемычек

3.

Подключите красные светодиоды к контакту 12 на плате Arduino, а синие —
к контакту 11 на плате Arduino.

4.

СВЕТОД И ОД Ы

ARD UIN O

Короткие ножки (катоды)

Контакт GND

Длинные ножки (аноды) (красные светодиоды)

Контакт 12

Длинные ножки (аноды) (синие светодиоды)

Контакт 11

Установите потенциометр на макетную плату и подключите центральную
ножку к контакту АО на плате Arduino, левую — к контакту GND, а правую —
к контакту 5V.

5.

П О ТЕН Ц И ОМ ЕТР

ARD UIN O

Левый контакт

Контакт GND

Центральный контакт

Контакт АО

Правый контакт

Контакт 5V

Убедитесь, что ваша цепь соответствует схеме на рис. 4.3, а затем загрузите
в память Arduino код скетча, приведенный в разделе «Скетч» далее в этом
проекте.

6 2 • ПРОЕКТ 4

Р И С У Н О К 4 .3

Принципиальная схема дискотечного стробоскопа

СКЕТЧ
Скетч начинает работу с настройки контакта Arduino, принимающего аналоговый
сигнал с потенциометра, на режим ввода, а контактов, к которым подключены свето­
диоды, на режим вывода. Микрокомпьютер Arduino считывает аналоговый сигнал,
поступающий от потенциометра, и использует полученные данные в качестве
значения задержки — количества времени, которое проходит до смены светодио­
дами своего состояния (включены или выключены). Это означает, что светодиоды
63 • ПРОЕКТ 4

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

const int analoglnPin = АО;
int sensorValue = 0;
int timer =0;

//
//
//
//
//

Аналоговый контакт, к которому
подключен потенциометр
Значение, полученное
от потенциометра
Задержка

// Перевод контактов 11 и 12 в режим вывода
void setup () {
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);

// Начало цикла, включающего/выключающего
// светодиоды с настраиваемой задержкой
void loop() {
sensorValue = analogRead (analoglnPin);

// Считывание значения
//от потенциометра
timer = map(sensorValue, 0, 1023, 10, 500);// Задержка 10 - 500 мс
digitalWrite(12, HIGH);
// Подача напряжения
//на светодиоды
delay(timer);
// Задержка в зависимости
//от значения потенциометра
digitalWrite (12, LOW) ;
// Прекращение подачи
// напряжения на светодиоды
delay(timer);
digitalWrite (12, HIGH) ;
delay(timer);
digitalWrite (12, LOW) ;
digitalWrite(11, HIGH);
delay(timer);
digitalWrite (11, LOW) ;
delay(timer);
digitalWrite (11, HIGH);
delay(timer);
digitalWrite (11, LOW);

ПРОЕКТ 5: ПРИБОР ДЛЯ
КОНТРОЛЯ ПОЛИВА
В ЭТОМ ПРОЕКТЕ ВЫ ОСВОИТЕ
РАБОТУ С АНАЛОГОВЫМ ДАТЧИКОМ
НОВОГО ТИПА, ОПРЕДЕЛЯЮЩИМ
УРОВЕНЬ ВЛАЖНОСТИ.
ВЫ СКОНСТРУИРУЕТЕ СИСТЕМУ,
КОТОРАЯ БУДЕТ СВЕТОМ И ЗВУКОМ
ОПОВЕЩАТЬ ВАС, КОГДА РАСТЕНИЕ
НУЖДАЕТСЯ В ПОЛИВЕ.

ТРЕБУЕМ Ы Е КОМПОНЕНТЫ
• Перемычки

• Датчик влажности почвы
HL-69

• Светодиод

• Пьезоизлучатель

• Плата Arduino

ПРИНЦИП РАБОТЫ
В этом проекте вы будете использовать датчик влажности почвы HL-69, его (или
его аналог) можно приобрести за пару сотен рублей в Интернете или магазинах,
перечисленных в приложении А. Штыри датчика определяют уровень влажности
в окружающей почве, пропуская через нее ток и измеряя сопротивление. Влажная
почва легко проводит электричество, имея более низкое сопротивление, в то время
как сухая почва имеет более высокое сопротивление.
Датчик состоит из двух частей, как показано на рис. 5.1: собственно, сам датчик
(а) и его контроллер (б). Два контакта на датчике подключаются к двум соответ­
ствующим контактам на одной стороне контроллера (как правило, специальный
шлейф для подключения входит в комплект). Другая сторона контроллера содержит
четыре контакта, три из которых подключаются к плате Arduino.

РИСУНОК 5.1
Комплект HL-69 — датчик влажности почвы (а) и контроллер (6)

Перечислю четыре контакта контроллера, слева направо: АО (аналоговый
выход), DO (цифровой выход), GND (заземление) и VCC (питание) (см. рис. 5.2).
Вы можете считывать значения, получаемые с контроллера, в среде разработки
67 • ПРОЕКТ 5

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

РИСУНОК 5.2
Обозначения контактов на оборотной стороне контроллера

Малые показатели датчика указывают на присутствие влаги в почве, а высо­
кие — на ее сухость. Если замеры выдали значение, равное или превышающее 900,
у вашего растения серьезный недостаток влаги. В этом случае загорится светодиод,
и пьезоизлучатель издаст звук. Пьезоизлучатели — это недорогие излучатели
звука, которые мы рассмотрим подробнее при работе над проектом № 7.

СБОРКА
1.

С помощью входящего в комплект шлейфа подключите два контакта дат­
чика к контактам + и — на плате контроллера, как показано на рис. 5.3.

Р И С У Н О К 5.3

Подключение датчика к контроллеру

2.

Подключите три штыря на плате контроллера напрямую к контактам 5V, GND
и АО на плате Arduino. Схема подключения показана в таблице ниже. Контакт DO
не используется.

3.

КО Н ТР О Л Л ЕР ДАТЧИКА

ARD U IN O

Штырь VCC

Контакт 5V

Ш тырьGND

Контакт GND

Штырь АО

Контакт АО

Штырь DO

используется

Напрямую к плате Arduino подключите светодиод. Короткая ножка (катод) —
к контакту GND, а длинная (анод) — к контакту 13, как показано на рис. 5.4
и в таблице ниже.

РИСУНОК 5.4
Подключение светодиода к плате Arduino

4.

СВЕТО Д И О Д

ARD U IN O

Длинная ножка (анод)

Контакт 13

Короткая ножка (катод)

Контакт GND

Подключите черный провод пьезоизлучателя к контакту GND, а красный про­
вод — к контакту 11 платы Arduino.

5.

П Ь ЕЗО И ЗЛ У Ч А ТЕЛ Ь

ARD U IN O

Красный провод

Контакт 11

Черный провод

Контакт GND

Убедитесь, что ваша цепь соответствует схеме на рис. 5.5, а затем загрузите
в память Arduino код скетча, приведенный в разделе «Скетч» далее в этом
проекте.

69 • ПРОЕКТ 5

РИСУНОК 5.5
Принципиальная схема прибора для контроля полива

6.

Подключите плату Arduino к компьютеру с помощью USB-кабеля. Откройте
панель монитора порта в среде разработки Arduino, чтобы увидеть значе­
ния с датчика. Так вы сможете откалибровать устройство контроля полива
вашего растения. В среде разработки отобразится актуальное показание
датчика. В моем случае значение было равно 1000, если датчик не был
установлен в почву. Так я вычислил значение минимальной влажности. Для
калибровки этого значения вы можете поворачивать ручку потенциометра
на контроллере по часовой стрелке для увеличения сопротивления и про­
тив часовой стрелки для уменьшения (см. рис. 5.5).
Когда датчик установлен во влажную почву, значение снизится при­
мерно до 400. По мере высыхания почвы значение датчика возрастает;
когда оно достигнет 900, загорится светодиод и раздастся звуковой сигнал.

7 0 • ПРОЕКТ 5

Потенциом етр

РИСУНОК 5.6
Поворачивайте ручку потенциометра, чтобы откалибровать устройство для контроля полива растения.

СКЕТЧ
Сначала скетч настраивает контакт АО платы Arduino на считывание показаний
датчика влажности. Затем он настраивает контакт 11 платы Arduino на вывод
на пьезоизлучатель, а контакт 13 — на вывод на светодиод. Функция Serial.PrintlnO
используется для передачи показаний датчика в среду разработки Arduino, чтобы
вы могли увидеть значение влажности на экране.
В своем проекте измените значение в строке
if(analogRead(0) > 900){
таким образом, чтобы оно соответствовало показанию сухого датчика (у меня
получилось значение 900). Когда почва влажная, значение будет ниже 900, поэтому
светодиод и пьезоизлучатель останутся выключенными. Когда значение достигнет
900, это будет означать, что почва высохла, о чем оповестят пьезоизлучатель и све­
тодиод. Так вы узнаете, что растение необходимо полить.

const int moistureAO = 0;
int AO = 0;

int LED = 13;

//
//
//
//
//
//

void setup () {
Serial.begin(9600);

П

int tmp = 0;
int buzzPin = 11;

Контакт, к которому подключен штырь АО
контроллера
Значение аналогового контакта
Контакт, к которому подключен
пьезоизлучатель
Контакт, к которому подключен светодиод

Передача считываемых Arduino данных
в IDE
Serial.println ("Soil moisture sensor");
pinMode(moistureAO, INPUT);
П

71 • ПРОЕКТ 5

pinMode(buzzPin, OUTPUT); // Перевод контакта в режим вывода
pinMode(LED, OUTPUT);
// Перевод контакта в режим вывода

void reop () {
tmp = analogRead( moistureAO );
if ( tmp != AO ) {
AO = tmp;
Serial, print("A = ");
// Вывести значение сопротивления датчика
// в IDE
Serial.println(АО);
}
delay (1000);
if (analogRead(O) > 900) {
// Если показание датчика
// превышает 900,
digitalWrite(buzzPin, HIGH);
// подается питание
// на пьезоизлучатель
// и на светодиод
digitalWrite(LED, HIGH);
// Ожидание в 1 секунду
delay(1000);
digitalWrite(buzzPin, LOW);
digitalWrite(LED, HIGH);
}
else {
digitalWrite(buzzPin, LOW);
// Если показание датчика меньше
// 900, питание на пьезоизлучатель
/ / и светодиод остаются выключенными
digitalWrite(LED, LOW);
}

ПРОЕКТ 6:
ДЕТЕКТОР ПРИЗРАКОВ
ДАВАЙТЕ СОБЕРЕМ ДЕТЕКТОР ПРИ­
ЗРАКОВ! НЕ СМОТРИТЕ НА МЕНЯ КАК
НА СУМАСШЕДШЕГО. ЭТО ДОВОЛЬНО
ПРОСТОЙ ПРОЕКТ, НА СБОРКУ КОТО­
РОГО УЙДЕТ НЕМНОГО ВРЕМЕНИ,
ПОСЛЕ ЧЕГО ВЫ СРАЗУ СМОЖЕТЕ ПРИ­
СТУПИТЬ К ПОИСКУ ПРИВИДЕНИЙ.
ВАМ СТРАШНО? МНЕ — НЕТ.

ТР ЕБУ ЕМ Ы Е КОМПОНЕНТЫ
• Плата Arduino
• Макетная плата
• Перемычки
• 3 красных светодиода
• 1 желтый светодиод
• 6 зеленых светодиодов

• 10 резисторов с сопро­
тивлением 220 Ом
• 20-сантиметровый одно
проволочный провод
• Резистор с сопротивле­
нием 1 МОм

П Р ИН ЦИП Р А Б О Т Ы
Соглашусь, что я немного пофантазировал, назвав этот проект детектором призра­
ков. По сути, устройство обнаруживает электромагнитные поля, но многие люди
считают, что это как раз и есть призрачные субстанции.
В этом проекте вы настроите антенну, обнаруживающую «призраков», и свето­
диодную панель, оповещающую о высоком уровне электромагнитной активности
вокруг. Оголенный провод действует как антенна, определяя электромагнитное
поле в радиусе двух метров. В зависимости от силы сигнала светодиоды будут
загораться последовательно: чем сильнее сигнал, тем больше светодиодов заго­
рится. Включите Arduino и направьте ваш детектор в пространство комнаты, чтобы
зафиксировать присутствие чего-нибудь сверхъестественного. Имейте в виду, что
электрические приборы, например телевизоры, будут оказывать влияние на детек­
тор из-за электромагнитного поля, которое они излучают.

СБОРКА
1.

Установите светодиоды на макетную плату, поместив их ножки по обе стороны
от канавки (см. раздел «Макетные платы» в проекте 0, чтобы узнать больше
о схеме подключения компонентов к макетной плате), как показано на рис. 6.1.
Я начал с желтого светодиода, а затем установил шесть зеленых и три крас­
ных светодиода, чтобы собрать шкалу (перечисляю цвета слева направо). Вы
можете использовать светодиоды любого цвета и устанавливать их по своему
усмотрению.

РИСУНОК 6.1
Установка светодиодов

г
ЭЛЕ КТРОМАГ НИТНЫЕ ПОЛЯ
Электрические поля создаются различиями в потенциалах: чем выше
напряжение, тем сильнее результирующее поле. Магнитные поля
создаются при течении электрического тока: чем сильнее ток, тем
сильнее магнитное поле. Электромагнитное поле можно рассматри­
вать как сочетание этих двух полей.

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

2.

Подключите к каждому светодиоду резистор с сопротивлением 220 Ом.
Одна из ножек резистора подключается к короткой ножке (катоду) светоди­
ода, а вторая ножка резистора устанавливается в гнездо шины заземления
макетной платы (см. рис. 6.2). Длинные ножки (аноды) светодиодов подклю­
чите к цифровым контактам 2-11 платы Arduino.
СВЕТО Д И О Д Ы

ARD UIN O

Длинные ножки (аноды)

Контакты 2-11

Короткие ножки (катоды)

Контакт GND через резисторы
с сопротивлением 220 Ом

РИСУНОК 6.2
Размещение светодиодов на макетной плате

3.

Возьмите одножильный провод длиной примерно 20 см и с помощью стриппера
(или ножа) зачистите примерно сантиметр изоляции с одного конца. Этот конец
прикрепите к контакту А5 платы Arduino. Зачистите примерно 7 см изоляции
с другого конца — этот оголенный конец провода и будет антенной, улавливаю­
щей электромагнитное излучение (см. рис. 6.3).

РИСУНОК б.З
Зачистка провода для создания антенны

4.

Подключите одну ножку резистора с сопротивлением 1 МОм к контакту
GND платы Arduino, а вторую — к контакту А5 платы Arduino; это повысит
чувствительность устройства.

5.

Убедитесь, что ваша цепь соответствует схеме на рис. 6.4, а затем загрузите
в память Arduino код скетча, приведенный в разделе «Скетч» далее в этом
проекте.

РИСУНОК 6.4
Принципиальная схема детектора призраков

СКЕТЧ
Оголенный провод улавливает электромагнитные импульсы в окружающей среде
и отправляет значение в диапазоне от 0 до 1023 на плату Arduino. Программа ана­
лизирует показания с аналогового выхода, чтобы вычислить, сколько светодиодов
следует последовательно включить или выключить, оповестив пользователя о силе
электромагнитного сигнала. В данном случае, 1023 — это самое высокое значение,
при котором все светодиоды будут гореть; при значении 550 загорятся пять све­
тодиодов. Скетч работает в цикле, чтобы постоянно анализировать поступающие
аналоговые данные, а на светодиоды непрерывно подается напряжение, чтобы
моментально отображать результат замеров. Если вы обнаружите, что любые показа­
ния электромагнитного излучения приводят к свечению всех светодиодов, поправьте
это, уменьшив значение переменной senseLimit. Во время цикла программа выполняет
в среднем 25 замеров и использует усредненное значение по результатам показаний
для уменьшения сильных колебаний, способных привести к излишне быстрому зажи­
ганию светодиодов.
ПРИМЕЧАНИЕ
После того, как вы собрали детектор призраков, попробуйте добавить компоненты для звукового сопровождения
(с изменением скорости воспроизведения или уровня громкости в зависимости от показаний). Соорудите корпус
для устройства, чтобы получился персональный карманный детектор, и отправляйтесь на охоту за призраками.
Вы также можете поэкспериментировать с проводом разного типа/толщины и/или снять резистор, чтобы настро­
ить уровень чувствительности.

// Код Джеймса Ньюболда используется с его согласия
fdefine NUMREADINGS 25 // Увеличьте значение, чтобы увеличить скорость
// захвата данных
int senseLimit = 1023; // Увеличьте значение, чтобы снизить
// чувствительность антенны (не более 1023)
// Установка аналогового контакта, к которому
int probePin = 5;
// подключена штырь АО контроллера антенна
// Считывание из probePin
int val = 0;
// Подключение контактов к светодиодной панели с последовательно
// подключенными резисторами
int LEDl = 11;
int LED2 = 10;
int
int
int
int
int
int

LED3 = 9;
LED4 = 8;
LED5 = 7;
LED6 = 6;
LED7 = 5;
LED8 = 4;
int LED9 = 3;

int LED10 = 2;
int readings[NUMREADINGS] ;
int index = 0;
int total = 0;
int average = 0;
void setup() {
pinMode(2, OUTPUT)
pinMode (3, OUTPUT)
pinMode (4, OUTPUT)

//
//
//
//

Считывание с аналогового входа
Индекс текущего считывания
Общее количество
Окончательное усреднение считанных проб

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

pinMode(5, OUTPUT)
pinMode (6, OUTPUT)
pinMode (7, OUTPUT)
pinMode(8, OUTPUT)
pinMode (9, OUTPUT)
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
Serial.pinMode (9600);

// Запуск последовательного подключения
// к IDE для отладки и т.п.

for (int i = 0; i < NUMREADINGS; i++)
readings[i] = 0 ;
// Инициализация всех считываний в виде 0
void loop () {
val = analogRead(probePin);
if (val >= 1) {

// Чтение показаний с антенны
// Если показание не равно нулю,
// продолжить

val = constrain(val, 1, senseLimit);

// Если показание
// превышает текущее
// значениеsenseLimit, присвоить
// senseLimit более высокое значение

val = m a p (val, 1, senseLimit, 1, 1023);
// Сопоставить лимиты
// в диапазоне от 1 до 1023
total -= readings[index];
// Вычитание последнего значения
// считывания
// Чтение с датчика
// Добавление показания к итогу
// Переход к следующему индексу
// Если это последний индекс
// в массиве,
index = 0;
// перейти в начало
average = total / NUMREADINGS; // Вычисление среднего значения
// считывания
readings [index] = val;
total += readings[index] ;
index = (index + 1);
if (index >= NUMREADINGS)

if (average > 50) {

// Если среднее значение
// считывания выше 50,

digitalWrite(LED1, HIGH);

// подать напряжение на первый
Й

80 • ПРОЕКТ 6

}
else {
digitalWrite(LED1, LOW);
}
if (average > 150) {
digitalWrite(LED2, HIGH);
}
else {
digitalWrite(LED2, LOW);
}
if (average > 250) {
digitalWrite(LED3, HIGH);
}
else {
digitalWrite(LED3, LOW);
}
if (average > 350) {
digitalWrite(LED4, HIGH);
}
else (
digitalWrite(LED4, LOW);
}
if (average > 450) {
digitalWrite(LED5, HIGH);
}
else {
digitalWrite(LED5, LOW);
}
if (average > 550) {
digitalWrite(LED6, HIGH);
}

else {
digitalWrite(LED6, LOW);
if (average > 650) {
digitalWrite(LED7, HIGH);
}
else {
digitalWrite(LED7, LOW);
if (average > 750) {
digitalWrite (LED8, HIGH) ;
)
else {

//

свето д и о д

I I

Если нет,

// выключить этот светодиод
// И т.д.

digitalWrite(LED8, LOW);
if (average > 850) {
digitalWrite(LED9, HIGH);
}
else {
digitalWrite(LED9, LOW);

}
if (average > 950) {
digitalWrite(LED10, HIGH);
}
else {
digitalWrite(LED10, LOW);
}
Serial.println(val); // Применение выходных данных для калибровки

ЧАСТЬ 2

звук

ПРОЕКТ 7:
ПРОИГРЫВАТЕЛЬ
ARDUINO
ДО СИХ ПОР ВСЕ НАШИ
ПРОЕКТЫ БЫЛИ ВИЗУАЛЬНЫМИ.
ДАВАЙТЕ СДЕЛАЕМ МУЗЫКАЛЬ­
НУЮ ПАЗУ. В ЭТОМ ПРОЕКТЕ ВЫ
ПРИМЕНИТЕ ПЬЕЗОИЗЛУЧАТЕЛЬ
(ЗУММЕР) ДЛЯ ВОСПРОИЗВЕДЕ­
НИЯ ПРОСТЫХ МЕЛОДИЙ.

PICXTAL (W*~> g *

ARDUINO

Т Р Е Б У Е МЫЕ КОМПОНЕНТЫ
Плата Arduino

Пьезоизлучатель

ПРИНЦИП РАБОТЫ
Наш проигрыватель Arduino включает пьезоизлучатель для генерации сигналов
определенной частоты, напоминающих ноты. Вы также воспользуетесь средой
разработки Arduino, чтобы указать порядок исполнения, скорость и длитель­
ность звучания нот для воспроизведения определенной мелодии.
Пьезоизлучатели дешевы в производстве и часто используются в детских
интерактивных игрушках. Пьезоэлемент без пластикового корпуса выглядит как
позолоченный металлический диск с подключенными положительным (обычно
красным) и отрицательным (черным) проводами. Он способен издавать только
пищащие звуки при подаче на него напряжения. Можно имитировать знакомые
ноты, заставив пьезоэлемент вибрировать сотни раз в секунду на определен­
ной частоте, но сначала нам нужно знать частоту тональных звуков, которые
нужно воспроизвести. В табл. 7.1 перечислены ноты и соответствующие частоты.
Период — это продолжительность времени в микросекундах, в течение кото­
рого генерируются колебания определенной частоты. Я вдвое уменьшил это
число, чтобы получить значения переменной timeHigh, которые используются
в коде для имитации ноты.

ТАБЛИЦА 7.1
Ноты и их частоты

НОТА

ЧАСТОТА

ПЕРИОД

TIM EH IG H

С

261 Гц

3,830

1915

D

294 Гц

3,400

1700

Е

329 Гц

3,038

1519

F

349 Гц

2,864

1432

G

392 Гц

2,550

1275

А

440 Гц

2,272

1136

В

493 Гц

2,028

1014

С

523 Гц

1,912

956

Код передает на пьезоизлучатель прямоугольную волну соответствующей
частоты пьезо, генерируя соответствующий тон (см. проект 2 для получения
дополнительной информации о форме сигнала). Значения переменной timeHigh
(тоны) рассчитываются по следующей формуле:
timeHigh = период / 2 = 1 /

(2 * toneFrequency)

Цепь этого проектаочень проста и включает только две перемычки, подклю­
ченные к плате Arduino.

СБОРКА
1.

Подключите черный провод пьезоизлучателя непосредственно к контакту GND
платы Arduino, а красный провод — к контакту 9 платы Arduino.

2.

П Ь ЕЗО И ЗЛ У Ч А ТЕЛ Ь

ARD U IN O

Красный провод

Контакт 9

Черный провод

Контакт GND

Убедитесь, что ваша цепь соответствует схеме на рис. 7.1, а затем загрузите
в память Arduino код скетча, приведенный в разделе «Скетч» далее в этом
проекте.

РИСУНОК 7.1
Принципиальная схема проигрывателя Arduino

СКЕТЧ
Начнем с простой мелодии. В строке

О мы сообщаем среде разработки Arduino,

что мелодия будет состоять из 15 нот. Затем мы сохраняем ноты мелодии в сим­
вольном массиве в виде текстовой строки в том порядке, в котором они должны
проигрываться. После этого сохраняем значение длительности звучания каждой
ноты в целочисленном массиве. Если вы хотите изменить мелодию, можете поме­
нять ноты в массиве в строке © и количество тактов, в течение которых звучит
каждая нота, в строке ©. И наконец, в строке О мы определяем темп, в котором
будет проигрываться мелодия. Итак, что у нас получилось?

// Melody (фрагмент) 2005 Д. Куартиллье для КЗ
int speakerPin = 9; // Контакт, к которому подключен пьезоизлучатель
(Е int length = 15;
// Число нот
char notes[] = "ccggaagffeeddc
// Пробел - пауза
Z int beats [] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;
void playTone(int tone, int duration) {
for (long i = 0; i < duration * 1000L; i += tone * 2) {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone) ;
digitalWrite(speakerPin, LOW) ;
delayMicroseconds(tone) ;
}
}
// Присвоение переменной timeHigh значения определенной ноты
void playNote(char note, int duration) {
char names[] = { ,c', ,d', ,e', ,f 1, ,g', ,a', ,b', ,C };
int tones!] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
for (int i = 0; i < 8; i++) {
// Воспроизведение тона,
// соответствующего ноте
if (names[i] == note) {
playTone(tones[i], duration);
}
}
}
void setup() {
pinMode(speakerPin, OUTPUT);

// Перевести speakerPin
// в режим вывода

}

// Воспроизведение тона
void loop () {
for (int i = 0; i < length; i++) {
if (notes [i] == ' ') {
delay(beats[i] * tempo); I I Rest
}
else {
playNote(notes[i], beats[i] * tempo);
}
delay(tempo /2);
// Пауза между нотами

ПРОЕКТ 8:
ИГРА НА
ЗАПОМИНАНИЕ
В ЭТОМ ПРОЕКТЕ МЫ СОЗДАДИМ
СОБСТВЕННУЮ ВЕРСИЮ АРКАДНОЙ
ЛОГИЧЕСКОЙ ИГРЫ TOUCH ME КОМ­
ПАНИИ ATARI, ИСПОЛЬЗУЯ ЧЕТЫРЕ
СВЕТОДИОДА, ЧЕТЫРЕ КНОПКИ,
ПЬЕЗОИЗЛУЧАТЕЛЬ, НЕСКОЛЬКО
РЕЗИСТОРОВ И ПЕРЕМЫЧКИ.

----------------------------------------<

ТРЕБУЕМЫЕ
КОМПОНЕНТЫ
• Плата Arduino
• Макетная плата
• Перемычки
• Пьезоизлучатель
• 4 четырехконтактные
кнопки
• 4 светодиода
• 4 резистора с сопротив­
лением 220 Ом

ТРЕБУЕМЫЕ
БИБЛИОТЕКИ
• Топе

ПРИНЦИП РАБОТЫ
В оригинальной игре компании Atari было четыре оборудованных светодиодами
цветных панели, которые загорались в определенном порядке, после чего игрок
должен был повторить комбинацию (см. рис. 8.1).

РИСУНОК 8.1
Оригинальная игра Touch Me

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

СБОРКА
1.

Установите кнопки на макетную плату так, чтобы они перекрывали собой
канавку (словно мостики), а контакты А и В оказались на одной стороне от
канавки, а С и D — на другой (см. рис. 8.2). (См. проект 1 для получения подроб­
ной информации о том, как работает кнопка.)

РИСУНОК 8.2
Схема четырехконтактного кнопочного переключателя

2.

Подключите контакт В каждой кнопки к шине заземления макетной платы,
а саму шину — к контакту GND платы Arduino.

3.

Подключите контакт D каждой кнопки к цифровым контактам 2-5 платы
Arduino (по порядку).

4.

Установите светодиоды в макетную плату так, чтобы короткая ножка (катод)
каждого из них была соединена с контактом С каждой кнопки. Установите
длинную ножку (анод) каждого светодиода в отверстие справа, как пока­
зано на рис. 8.3.

5.

КНОПКА

A R D U IN O /СВЕТОДИОД

Ножка В

Контакт GND платы Arduino

Ножка С

Короткие ножки (катоды)

Ножка D

Контакты 2-5 платы Arduino

Установите на макетную плату резисторы с сопротивлением 220 Ом так,
чтобы одна из ножек каждого резистора была соединена с длинной ножкой
(анодом) каждого светодиода. Другую ножку каждого резистора с помо­
щью перемычек подключите к Arduino к контактам 8-11, как показано на
рис. 8.3.

6.

СВЕТО Д И ОД Ы

A R D U IN O /КНОПКА

Длинные ножки (аноды)

Контакты 8-11 платы Arduino
через резисторы с сопротив­
лением 220 Ом

Короткие ножки (катоды)

Ножка С кнопки

Убедитесь, что красный светодиод, подключенный к контакту 11 платы
Arduino, соединен с кнопкой, подключенной к контакту 5. Желтый свето­
диод, подключенный к контакту 10, соединен с кнопкой, подключенной
к контакту 4. Зеленый светодиод, подключенный к контакту 9, соединен
с кнопкой, подключенной к контакту 3. Синий светодиод, подключенный
к контакту 8, соединен с кнопкой, подключенной к контакту 2.
П ЬЕ З О И З Л У Ч А Т Е Л Ь

AR D UIN O

Красный провод

Контакт 12

Черный провод

Контакт GND

7.

Подключите черный провод пьезоизлучателя напрямую к контакту GND

8.

Убедитесь, что ваша цепь соответствует схеме на рис. 8.3, а затем загрузите

платы Arduino, а красный — к контакту 12 на плате Arduino.
в память Arduino код скетча, приведенный в разделе «Скетч» далее в этом
проекте.

РИСУНОК 8.3
Принципиальная схема игры на запоминание

СКЕТЧ
Скетч генерирует случайную последовательность, в которой будут зажигаться
светодиоды. Случайное значение переменной у, генерируемое в цикле последо­
вательности, определяет, на какой светодиод подается питание (например, если
переменной у присваивается значение 2, загорается светодиод, подключенный к кон­
такту 2). Во время игры вы должны запомнить последовательность и повторить ее,
чтобы перейти на следующий уровень.
На каждом уровне предыдущая последовательность повторяется и добавляется
еще одна вспышка случайного светодиода. Вспышка каждого светодиода сопрово­
ждается собственным тоном пьезоизлучателя, поэтому мелодия также меняется. Если
вы ошиблись при повторе последовательности, программа перезапускается и вос­
производит другую последовательность. Для корректной компиляции скетча нужно
подключить библиотеку Топе (доступную по адресу https://eksmo.ru/files/arduino_
geddes.zip). Подробнее см. раздел «Библиотеки» в проекте 0.

// Код Абдуллы Алхазми используется с его согласия, www.Alhazmyl3.net
♦include
Tone speakerpin;
int starttune[] = {NOTEJ34, N0TE_F4, N0TE_C4, N0TE_F4, N0TE_C4, NOTE_
F4, N0TE_C4, N0TE_F4, N0TE_G4, N0TE_F4, NOTE_
E4, NOTE_F 4, N0TE_G4};
int duration2[] = {100, 200, 100, 200, 100, 400, 100, 100, 100, 100,
200, 100, 500};
int note [] = {NOTE_C4, NOTE_C4, N0TE_G4, NOTE_C5, NOTE_G4, NOTE_C5};
int duration!] = {100, 100, 100, 300, 100, 300};
boolean button[] ={2, 3, 4, 5};
// Контакты, к которым подключены
// кнопки
boolean ledpin[] = {8, 9, 10, 11}; // Контакты, к которым подключены
// светодиоды
int turn = 0 ;
// Счетчик включений
int buttonstate = 0; // Проверка состояния кнопки
int randomArray[100];// Массив, содержащий до 100 вводов
int inputArray[100];
void setup() {
Serial.begin(9600);
speakerpin.begin(12);

// Контакт, к которому подключен
// пьезоизлучатель
for (int х = 0; х < 4; х++) {
pinMode(ledpin[х], OUTPUT);
// Перевод контактов, к которым
// подключены светодиоды, в режим вывода
}
for (int х = 0; х < 4; х++) {
pinMode(button[х], INPUT);
// Перевод контактов, к которым
// подключены кнопки, в режим ввода
digitalWrite(button[х], HIGH);
// Включение внутреннего
// подтягивания; кнопки активны в верхнем
// положении (логическая инверсия)
}
// Генерация "большей случайности" функции randomArray, чтобы
// последовательность каждый раз менялась
randomSeed(analogRead(0));
for (int thisNote = 0; thisNote < 13; thisNote ++) {
speakerpin.play(starttune[thisNote]);
// Воспроизведение
// следующей ноты
ii (thisNote == 0 || thisNote == 2 || thisNote == 4 11 thisNote
// Продолжение ноты
== 6) {
digitalWrite(ledpin[0] , HIGH);
i
/
(thisNote == 1 || thisNote == 3 |I thisNote == 5 11 thisNote
== 7 || thisNote == 9 || thisNote == 11) {
digitalWrite(ledpin[1], HIGH);
}
if (thisNote == 8 II thisNote == 12) {
digitalWrite(ledpin[2], HIGH);
}
if (thisNote == 10) {
digitalWrite(ledpin[3] , HIGH);
)
delay(duration2[thisNote]);

// Остановка для воспроизведения
// следующей ноты

speakerpin.stop() ;
digitalWrite(ledpin[0] ,
digitalWrite(ledpin[l] ,
digitalWrite(ledpin[2] ,
digitalWrite(ledpin[3] ,
delay(25);

LOW)
LOW)
LOW)
LOW)

;
;
;
;

}
delay(1000);

void loop() {
// Генерация массива, назначаемого игроку
for (int у = 0; у

};
byte rowPins[ROWS] = [2,3,4,5} ;
byte colPins[COLS] = [6,7,8,9};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup () {
Serial.begin (9600);
}
void loopO {
char key = keypad.getKey();
if (key != NO_KEY){
Serial.println(key);
}
}
207 • ПРОЕКТ 22

Загрузите этот код на плату и откройте окно монитора порта в среде раз­
работки Arduino (рис. 22.1).

РИСУНОК 22.1
Тестирование клавиатуры

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

С Б О Р К А

1.

Подключите контакты клавиатуры непосредственно к контактам Arduino,
как указано в таблице ниже. Контакты клавиатуры пронумерованы, как
показано на рис. 22.2.
КЛА ВИ АТ УРА

AR D UIN O

Контакт 1

Контакт 9

Контакт 2

Контакт 8

КЛ АВИ АТ УРА

AR D UIN O

Контакт 3

Контакт 7

Контакт 4

Контакт 6

Контакт 5

Контакт 5

Контакте

Контакт 4

Контакт 7

Контакт 3

Контакт 8

Контакт 2

РИСУНОК 22.2
Контакты 1-8 клавиатуры

2.

Установите зеленый и красный светодиоды на макетную плату. Короткие ножки
(катоды) подключите к шине заземления, а длинные ножки (аноды) через
резисторы с сопротивлением 220 Ом к контакту 11 (зеленый светодиод) и кон­
такту 12 (красный светодиод) платы Arduino.
СВЕ ТО ДИ ОД Ы

AR D UIN O

Длинная ножка (анод)
зеленого светодиода

Контакт 11 через резистор

Длинная ножка (анод)
красного светодиода

Контакт 12 через резистор

Короткие ножки (катоды)

Контакт GND

с сопротивлением 220 Ом

с сопротивлением 220 Ом

3.

Теп ерь подклю чите се р во п р и в о д (см. рис. 22.3). П одклю чите коричневы й
п ро во д к ш ине зазе м л ен и я, красн ы й — к ш ине п итания 5 В, а ж елты й
(белы й) п ровод н е п о ср ед ств ен н о к к о н та кту 13 платы A rd u in o .

СЕ Р В О П РИ В О Д

AR D UIN O

Красны й п ро во д

К о н та к т 5V

Ко ричневы й п ро во д

К о н так т G ND

Ж елты й п ро во д

К о н так т 13

РИСУНОК 22.3
Подключение сервопривода

4.

У б ед и те сь, что ваш а цепь со о тв е тств у е т схе м е, п о казанн о й на р ис. 22.4,
и загр узи те в пам ять A rd u in o код скетч а, п р и веден н ы й в р а зд е л е «Скетч»
д а л е е в этом п ро екте.

РИСУНОК 22.4
Принципиальная схема цепи системы ввода с клавиатуры

СКЕТЧ
Сначала в коде скетча вызываются библиотеки Keypad, Servo и Password. Библиотека
Servo входит в дистрибутив среды разработки Arduino, а библиотеки Keypad
и Password необходимо загрузить из архива по ссылке eksmo.ru/files/arduino_geddes.zip
и сохранить в папке среды разработки Arduino. Затем мы настраиваем восемь контак­
тов, принимающих ввод с клавиатуры, и определяем контакты 11 и 12 платы Arduino
для управления светодиодами, а контакт 13 — для управления сервоприводом. Плата
Arduino ждет ввода пароля с клавиатуры и нажатия кнопки * для подтверждения
ввода. Как только вы нажали кнопку *, скетч проверяет соответствие пароля запи­
санному в коде. Если пароль не соответствует записи, контакт красного светодиода
переводится в режим HIGH, и светодиод начинает светиться; если пароль соответ­
ствует записи, контакт зеленого светодиода переводится в режим HIGH, и светодиод
начинает светиться, а сервопривод повернется. Нажатие кнопки # сбрасывает выпол­
нение кода, и скетч будет готов к следующему вводу пароля.
Чтобы задать другой пароль, измените число в кавычках в строке, показанной ниже.
Password password = Password("2468");
Пароль по умолчанию — 2468.
/* Библиотека Keypad для Arduino
Авторы: Марк Стэнли, Александр Бревик
http://playground.arduino.cc/Main/KeypadTutorial
*/
♦include
♦include
♦include
Servo myservo;
Password password = Password("2468") ;
const byte ROWS = 4 ;
const byte COLS = 4 ;

// Установка 4 строк
// Установка 4 столбцов

char keys[ROWS][COLS] = {
Ы \ '2', '3', 'А'},
{,4','5','6','В'],
{,7', '8', '9' , 'С },
' 0 ' , -D'}
};
byte rowPins[ROWS] = { 9,8,7,6 };

byte colPins[COLS] =[5,4,3,2,

// Создание клавиатуры

// Записанный пароль

// Определение схемы кнопок

// Контакты, к которым подключена
// клавиатура
// ROW0, ROW1, ROW2 и ROW3
};
// Контакты, к которым подключена
// клавиатура
// COLO, COL1 и COL2

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup () (
Serial.begin (9600);
delay(200);
pinMode(ll, OUTPUT);
// Перевод контакта зеленого светодиода
// в режим выхода
pinMode(12, OUTPUT);
// Перевод контакта красного светодиода
// в режим выхода
myservo.attach(13);
// Контакт, к которому подключен
// сервопривод
keypad.addEventListener(keypadEvent); // Добавление слушателя
// событий для обнаружения нажатия кнопок
}
void loop() {
keypad.getKey();
myservo.write (0);
}
void keypadEvent(KeypadEvent eKey) {
switch (keypad.getState ()) {
case PRESSED:
Serial.print("Pressed: ");
Serial.println(eKey) ;
switch (eKey) {
case '*': checkPassword(); break;
case '#': password.reset(); break;
default: password.append(eKey);
}
}
}
void checkPassword() {
if (password.evaluate() )(
Serial.println ("Success");
myservo.write (90);
digitalWrite (11, HIGH);
delay(500);
digitalWrite (11, LOW);
} else (
Serial.println("Wrong");
myservo.write (0);
digitalWrite (12, HIGH);
delay (500);
digitalWrite(12, LOW);
}
}

// Если пароль правильный...
// Поворот сервопривода
// на 90 градусов
// Включение зеленого светодиода
// Задержка 5 секунд
// Выключение зеленого светодиода
// Если пароль неправильный...
// Включение красного светодиода
// Задержка 5 секунд
// Выключение красного светодиода

ПРОЕКТ 23:
БЕСКОНТАКТНЫЙ
ЭЛЕКТРОННЫЙ
ПРОПУСК
В ЭТОМ ПРОЕКТЕ МЫ ИСПОЛЬЗУЕМ
СЧИТЫВАТЕЛЬ РАДИОЧАСТОТ­
НЫХ МЕТОК (RFID-МОДУЛЬ) ДЛЯ
ПОСТРОЕНИЯ БЕСПРОВОДНОЙ
СИСТЕМЫ ВВОДА ID-КАРТЫ.

РИ М

ТРЕБУЕМЫЕ
КОМПОНЕНТЫ

ТРЕБУЕМЫЕ
БИБЛИОТЕКИ

• Плата Arduino

• RFID

• Макетная плата

• SPI

• Перемычки

• Wire

• RFID-модуль Mifare
RC-522, карта и брелок

• Servo

• Сервопривод Tower Pro
9g SG90
• Пьезоизлучатель
• Красный светодиод
• Зеленый светодиод
• 2 резистора с сопротив­
лением 220 Ом

• Pitches

ПРИНЦИП РАБОТЫ
RFID-модуль основан на беспроводной технологии для идентификации карты,
метки или брелока без непосредственного контакта с ними. Модуль реаги­
рует, если RFID-метка находится рядом с ним. Для нашего проекта нам нужно,
чтобы модуль прочитал уникальный номер нашей RFID-карты. Также мы доба­
вим сервопривод, который будет двигаться в зависимости оттого, распознает
RFID-модуль карту или нет. Можно использовать эту систему идентификации
для блокировки двери или ящика, как в случае с электронным привратником из
главы 9.
Возможно, вы видели наклейки, подобные показанным на рис. 23.1, на
товарах в магазине. Эти наклейки представляют собой RFID-метки, позволяющие
сотрудникам магазина защищать товары от воровства. Если вы пройдете с това­
ром через специальные RFID-турникеты на выходе без оплаты, прозвучит сигнал
тревоги. RFID-модули и карты также часто используются для доступа определен­
ного круга лиц к секретным лабораториям и военным базам.

РИСУНОК 23.1
Наклейка с RFID-меткой

Существует два типа RFID-систем: пассивная и активная. Каждая RFID-система
использует радиоволны определенной частоты для обмена сигналами между
RFID-модулем и метками или картами. Этот сигнал содержит уникальный код
метки или карты, и если RFID-модуль распознает этот код, он реагирует соот­
ветствующим образом, например позволяет без оповещения проносить товары
через детекторы в магазине или разблокирует двери.
В пассивной системе, когда оба элемента находятся близко друг к другу,
радиосигнал RFID-модуля обеспечивает питанием метку или карту, достаточным
для обмена данными с ними. Активные системы оснащены и RFID-модулем с пита­
нием, и метками с питанием, и позволяют считывать метки с гораздо большего
расстояния. Активные системы очень дороги и используются для более сложных
конструкций, поэтому мы будем использовать пассивную RFID-систему, состо­
ящую из RFID-модуля Mifare RC-522 и пустой карты, и брелока, как показано на
рис. 23.2. RFID-модуль работает на частоте 13,56 МГц и может идентифицировать
карту или брелок, которые получат питание от самого RFID-модуля, только если

они находятся на расстоянии не более 6 см. Важно помнить об этом, настраивая свою
RFID-систему.

РИСУНОК 23.2
RFID-модуль с картой и брелоком для ключей

Мы сконструируем сервопривод, управляемый посредством RFID. Когда вы
подносите карту к RFID-модулю, он считывает карту. Если модуль распознает
карту и на ней записаны права доступа, загорается зеленый светодиод, звучит
сигнал, и сервопривод поворачивается на 180 градусов. Если модуль не распоз­
нает карту, загорается красный светодиод, звучит другой сигнал, и сервопривод
не двигается.
В табл. 23.1 описаны различные функции RFID-модуля.

ТАБЛИЦА 23.1
Функции контактов RFID-модуля
КО Н ТАК­

РАСШ И Ф РОВКА

ПРИМ ЕЧАНИЕ

3.3V

3.3 В

Для питания модуля допустимо только такое
напряжение.

RST

Сброс

Сброс модуля до исходного состояния.

GND

Заземление

Подключается к контакту GND платы Arduino.

IRQ

Запрос на прерывание

Не используется в этом проекте.

Вход ведущего, выход

Служит для передачи данных от ведомого
устройства ведущему.

ТЫ RFID

MISO

MOSI

ведомого
Выход ведущего, вход
ведомого

Служит для передачи данных от ведущего
устройства ведомому.

КО Н ТАК­

РАСШ И Ф РОВКА

ПРИМ ЕЧАНИЕ

Последовательный

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

ТЫ RFID

SC К

тактовый сигнал
Последовательные

SDA/SS

мого

Модуль может иметь контакт SDA или SS,
хотя они одинаковы. С помощью него Arduino
и модуль обмениваются данными.

VCC

Питание.

данные/Выбор ведо­

Pin 16

СБОРКА
1.

Возможно, для установки модуля вам потребуется сначала припаять
к нему штырьковые соединители. Выломайте полоску из восьми штырьков.
Припаяйте по одному к каждому отверстию. Обязательно удерживайте
паяльник в месте пайки не более нескольких секунд, чтобы не повредить
микросхему. Если вы никогда не паяли до этого, см. раздел «Краткое руковод­
ство по пайке» в проекте 0.

2.

Установите RFID-модуль на макетную плату, как показано на рис. 23.3, а затем
подключите штырьки RFID-модуля к контактам Arduino согласно следующей
таблице. Не забудьте, что RFID-модуль следует подключать к источнику пита­
ния напряжением 3,3 В (но не 5 В !), иначе модуль выйдет из строя.

РИСУНОК 23.3
Установка модуля RFID на макетную плату

3.

R F ID -М ОДУЛЬ

A R D U IN O

Контакт 3.3V

Контакт 3.3V

Контакт RST

Контакт 5

Контакт GND

Контакт GND

Контакт IRQ

He используется

Контакт MISO

Контакт 12

Контакт MOSI

Контакт 11

Контакт SCK

Контакт 13

Контакт SDA

Контакт 10

Теперь нам нужно проверить работу RFID-модуля. Загрузите библиотеку RFID
из архива по ссылке eksmo.ru/files/arduino_geddes.zip и установите ее в среде
разработки Arduino, как это показано в разделе «Библиотеки» проекта 0.
Загрузите следующий тестовый скетч для RFID-модуля. Плата Arduino должна
быть подключена USB-кабелем к компьютеру.

// Библиотека RFID создана Мигелем Бальбоа (circuitito.com)
tinclude
tinclude
#define SS_PIN 10
tdefine RST_PIN 9
RFID rfid (SS_PIN, RST_PIN);

// Определение переменных
int serNumO;
int serNuml;
int serNum2;
int serNum3;
int serNum4;
void setup() {
Serial.begin(9600);
SPI .begin ();
rfid.initO ;
}
void loop() { // В этом цикле выполняется поиск карт для считывания
if (rfid.isCard() ) {
if (rfid. readCardSerial () ) {
if (rfid. serNum [0 ] != serNumO
&& rfid. serNum [1 ] != serNuml
&& rfid. serNum [2 ] != serNum2
&& rfid. serNum [3] != serNum3
&& rfid. serNum[4 ] != serNum4

) {
// Если карта найдена, выполняется следующий код
Serial.println(" ");
Serial.println("Card found");
serNumO = rfid.serNum [0 ] ;
serNuml = rfid.serNum [1 ] ;
serNum2 = rfid. serNum[2] ;
serNum3 = rfid. serNum[3] ;
serNum4 = rfid.serNum [4 ] ;
// Выводится идентификатор карты в мониторе порта IDE
Serial.println("Cardnumber
Serial.print("Dec: ");
Serial, print (rfid. serNum [0 ] , DEC) ;
Serial.print(", ");
Serial, print (rfid. serNum [1 ] , DEC) ;
Serial.print(", ");
Serial .print (rfid. serNum [2] , DEC) ;
Serial.print(", ");
Serial, print (rfid. serNum [3] , DEC) ;
Serial.print(", ");
Serial, print (rfid. serNum [4 ] , DEC) ;
Serial.println(" ");
Serial.print("Hex: ");
Serial.print (rfid. serNum [0 ] , HEX) ;
Serial.print(", ");
Serial .print (rfid. serNum [1] , HEX) ;
Serial.print(", ");
Serial .print (rfid. serNum [2] , HEX) ;
Serial.print(", ");
Serial .print (rfid. serNum[3] , HEX) ;
Serial.print(", ");
Serial .print (rfid. serNum[4] , HEX) ;
Serial.println(" ");
} else {
// Если идентификатор совпадает, выводится точка
// в мониторе порта
Serial.print(".");

)
}
)
rfid. halt () ;

)
4.
5.

Откройте окно монитора порта в среде разработки Arduino.
Проведите картой или брелком перед RFID-модулем. В мониторе порта
должен отобразиться уникальный номер, как показано на рис. 23.4.
Запишите этот номер, он понадобится в дальнейшем. В данном случае
номер моей карты был таким: 4D 55 AD D3 66.

220 • ПРОЕКТ 23

РИСУНОК 23.4
Номер RFID-метки отображается в шестнадцатеричном виде

6.

Установите два светодиода на макетную плату, подключив короткие ножки
(катоды) к шине заземления, а длинные (аноды) — через резистор с сопротивле­
нием 220 Ом к контакту 3 (красный светодиод) и контакту 2 (зеленый светодиод)
платы Arduino.

7.

СВЕТОД И ОД Ы

ARD UIN O

Длинная ножка (анод)
зеленого светодиода

Контакт 2 через резистор с со­

Длинная ножка (анод)
красного светодиода

Контакт 3 через резистор с со­

Короткие ножки (катоды)

Контакт GND

противлением 220 Ом

противлением 220 Ом

Подключите сервопривод к Arduino: красный провод к шине питания, корич­
невый (или черный) — к шине заземления, а желтый — к контакту 9 платы
Arduino.

8.

СЕРВ О П РИ В О Д

ARD U IN O

Красный провод

Контакт 5V

Черный провод

Контакт GND

Желтый провод

Контакт 9

Подключите пьезоизлучатель к Arduino: красный провод к контакту 8, а чер­
ный — к контакту GND платы Arduino. Теперь цепь должна выглядеть примерно
так, как показано на рис. 23.5.
П Ь ЕЗО И ЗЛ У Ч А ТЕЛ Ь

ARD U IN O

Красный провод

Контакт 8

Черный провод

Контакт GND

Р И С У Н О К 2 3 .5

Законченный проект RFID-системы

9.

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

byte card[5] = {0 x 4 D , 0x55,OxAD,0

x D 3 ,0 x 6 6

};

10. Убедитесь, что ваша цепь соответствует схеме, показанной на рис. 23.6,
а затем загрузите в память Arduino код скетча, приведенный в разделе
«Скетч» далее в этом проекте.

Р И С У Н О К 2 3 .6

Принципиальная схема цепи беспроводной системы ввода ID-карты

СКЕТЧ
Скетч начинается с вызова библиотек SPI, RFID, Servo, Pitches и Wire для обес­
печения обмена данными между Arduino, RFID-модулем и сервоприводом.
Установлены две мелодии, одна проигрывается при успешном считывании
карты, другая — при неудачном. Зеленый светодиод подключен к контакту 2

платы Arduino, красный — к контакту 3, пьезоизлучатель — к контакту 8, а сер­
вопривод — к контакту 9.
В показанной ниже строке нужно добавить шестнадцатеричное значение
вашей карты:

byte card[5] = {0 x 4 D , 0x55,OxAD, 0 x D 3 ,

0 x 6 6

);

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

О.

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

♦include
♦include
♦include
♦include
♦include




"pitches.h"


RFID rfid(10, 5);

// Определение RFID-метки

// Замените строку ниже на код вашей карты в шестнадцатеричном виде
0 x D 3 , 0 x 6 6 } ;
// Перечислите здесь все коды дополнительных карт доступа

О byte card[5] = {0 x 4 D , 0x55, O x A D ,
byte serNum[5];
byte data[5];

// Определение мелодий для успешной авторизации и отказа
int access_melody[] = (NOTE_G4, 0, N0TE_A4, 0, NOTE_B4, 0, NOTE_A4,
0, NOTE_B4, 0, NOTE_C5, 0};
int access_noteDurations[] = {8, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 4};
int fail_melody[] = {NOTE_G2, 0, NOTE_F2, 0, NOTE_D2, 0};
int fail_noteDurations[] = {8, 8, 8, 8, 8, 4};
int LED_access = 2 ;
int LED_intruder = 3 ;
int speaker_pin = 8 ;
int servoPin = 9 ;

Servo doorLock;

//
//
//
//
//
//
//
//

Контакт, к которому
светодиод
Контакт, к которому
светодиод
Контакт, к которому
пьезоизлучатель
Контакт, к которому
сервопривод

подключен зеленый
подключен красный
подключен
подключен

// Определение сервопривода

void setup () {
doorLock.attach(servoPin);
Serial.begin (9600);

// Назначение контакта сервопривода
// Начало последовательной связи

SPI.beginO;

// Начало последовательной связи
// между RFID-модулем и компьютером
rfid.initO;
// Инициализация RFID-модуля
Serial.println("Arduino card reader");
delay (1000);
pinMode(LED_access, OUTPUT);
pinMode(LED_intruder, OUTPUT);
pinMode(speaker_pin, OUTPUT);
pinMode(servoPin, OUTPUT);
}
void loop() (
// Создание переменной для каждого пользователя
boolean card_card = true;
// Определение вашей карты
if (rfid. isCard () ) {
if (rfid.readCardSerial () ) {
delay(1000);
data[0] = rfid.serNum[0] ; •
data[l] = rfid. serNum[1 ];
data [2] = rfid.serNum[2] ;
data[3] = rfid.serNum[3] ;
data [4] = rfid.serNum[4] ;

}
Serial.print("Card found - code:");
for (int i = 0; i < 5; i++) (
// Если это не ваша карта, она считается ложной
if (data[i] != card[i]) card_card = false;
}
Serial.println ();
if (card_card) (
// Обнаружение карты с правами доступа
Serial.println("Hello!");
// Вывод на монитор порта
for (int i = 0; i < 12; i++) {
// Воспроизведение
приветственной мелодии
int access_noteDuration = 1000 / access_noteDurations[i];
tone(speaker_pin, access_melody[i], access_noteDuration);
int access_pauseBetweenNotes = access_noteDuration * 1.30;
delay(access_pauseBetweenNotes);
noTone(speaker_pin);
}
}
else { // Если карта не распознана
// Вывод сообщения на монитор порта
Serial.println("Card not recognized! Contact administrator!");
digitalWrite(LED_intruder, HIGH); // Включение красного
светодиода
for (int i = 0; i < 6; i++) {
// Воспроизведение мелодии
// отказа
int fail_noteDuration = 1000 / fail_noteDurations[i];
tone(speaker_pin, fail_melody[i], fail_noteDuration);
int fail_pauseBetweenNotes = fail_noteDuration * 1.30;
delay(fail_pauseBetweenNotes);
noTone(speaker_pin);
}
delay(1000);
digitalWrite(LED_intruder, LOW); // Выключение красного
// светодиода
)
if (card_card) (
// Добавление других пользователей
// с правом доступа
Serial.println("Access granted...... Welcome!");
digitalWrite(LED_access, HIGH);
// Включение зеленого

doorLock.write(180) ;
delay(5000);
doorLock.write(0) ;
digitalWrite(LED_access,
}
Serial.printlnO ;
delay(500);
rfid.halt () ;
}

}

LOW);

// светодиода
// Поворот сервопривода
// на 180 градусов
// Задержка 5 секунд
// Поворот сервопривода
// обратно до 0 градусов
// Выключение зеленого
// светодиода

ЧАСТЬ 7

П РО Д ВИ Н УТЫ Е
П РО ЕКТЫ

ПРОЕКТ 24:
РАЗНОЦВЕТНОЕ
СВЕТОВОЕ ШОУ
В ЭТОМ ПРОЕКТЕ МЫ УСТРОИМ
РАЗНОЦВЕТНОЕ СВЕТОВОЕ ШОУ
С ПОМОЩЬЮ СВЕТОДИОДНОЙ RGBМАТРИЦЫ РАЗМЕРОМ 8x8. МЫ ТАКЖЕ
ИСПОЛЬЗУЕМ СДВИГОВЫЕ РЕГИСТРЫ,
ЧТОБЫ РАСШИРИТЬ ВОЗМОЖНОСТИ
ARDUINO И УПРАВЛЯТЬ МАТРИЦЕЙ.

ТР ЕБ УЕМ ЫЕ КОМПОНЕНТЫ
• Плата Arduino
• 4 сдвиговых регистра
• 2 макетные платы
_
• Перемычки
• Светодиодная RGB„ „
матрица размером 8x8

• 4 сдвиговых регистра
74НС595
* 16 резисторов
с сопротивлением 220 Ом
• 8 резисторов
„„„ ^
с сопротивлением 330 Ом

П Р И Н Ц И П

Р А Б О Т Ы

Светодиодная RGB-матрица (рис. 24.1) представляет собой сетку из 64 красных,
зеленых и синих светодиодов. Вы можете создавать разные оттенки, по отдельно­
сти управляя каждым светодиодом и смешивая цвета.

Р И С У Н О К 24.1
С в е т о д и о д н а я R G B - м атрица

Светодиодная матрица оборудована в общей сложности 32 контактами
(рис. 24.2). 8 контактов представляют собой общий анод каждого светодиода, и еще
24 контакта управляют свечением красного, зеленого и синего светодиода (по 8
контактов на цвет). В матрице, которую использовал я, контакты 17-20 и 29-32 — это
аноды, контакты 9-16 управляют свечением красных светодиодов, 21 -28 — зеленых
и 1-8 — синих, но у вашей матрицы могут быть другие контакты. Контакт 1 — это
нижняя левая ножка на рис. 24.2, остальные номера контактов на этом рисунке
отсчитываются по порядку по часовой стрелке.

Р И С У Н О К 24.2
Контакты светодиодной R G B -матрицы

К любой матрице прилагается файл спецификации, в котором указано, какие
контакты управляют красными, зелеными и синими светодиодами. Если номера
контактов в вашем файле спецификации отличаются от номеров, указанных
в табл. 24.1, учитывайте эти поправки?1ри подключении сдвиговых регистров
и Arduino. Каждый контакт управления светодиодом требует установки резистора,

чтобы предотвратить перегрузку и выгорание, причем требуются разные резисторы:
с сопротивлением 220 Ом для синих и зеленых светодиодов и 330 Ом — для красных.

Т А Б Л И Ц А 24.1
К о н ф и г у р а ц и я контактов с в е т о д и о д н о й R G B - м а т р и ц ы

ФУНКЦИЯ МАТРИЦЫ

НОМЕР КОНТАКТОВ МАТРИЦЫ

О бщ ий ан о д (+)

17, 18, 19, 2 0 ,2 9 , 3 0 ,3 1 ,3 2

Красны е св ето ди о ды

9 ,1 0 ,1 1 ,1 2 ,1 3 ,1 4 ,1 5 ,1 6

Зеле н ы е св ето ди о ды

2 1 ,2 2 , 23, 2 4 ,2 5 , 26, 2 7 ,2 8

С ин и е св ето ди о ды

1, 2, 3, 4, 5, 6, 7, 8

Расположение нужных контактов может напугать, но не волнуйтесь. Просто выпол­
няйте этот проект шаг за шагом.
Требуется столь много подключений, что контактов платы Arduino не хватит.
Поэтому мы расширим ее возможности с помощью сдвиговых регистров. (Подобно
тому, как мы делали это в проекте 16.) В этом проекте используется сдвиговый регистр
74НС595 для одновременного управления восемью выходами, при этом занимая
только три контакта платы Arduino. Мы подключим несколько регистров вместе, чтобы
управлять еще большим количеством контактов одновременно, используя один кон­
такт для общего анода и по одному контакту для светодиодов каждого цвета.
Расположение контактов сдвигового регистра показано на рис. 24.3, а их предна­
значения описаны в табл. 24.2. При работе над проектом мы будем ссылаться на номер
контакта сдвигового регистра и его предназначение, чтобы вам легче было определить,
какой контакт вы подключаете.

Р И С У Н О К 24.3
Р а с п о л о ж е н и е контактов сдвиго в о г о регистра

ТАБЛИЦА 24.2
К о н т а к т ы сдвиг о в о г о регистра 7 4 Н С 5 9 5

ОБОЗНА­

КОНТ А К Т

ПРЕДНАЗНАЧЕНИЕ

ЧЕНИЕ

Контакты

Q0-Q7

Параллельные выходы

Контакты 8

GND

Заземление, VSS

Контакты 9

SO

Выход для последовательного соединения

1-7,15

регистров
Контакты 10

MR

Сброс значений регистра при получении
сигнала LOW

Контакты 11

SH_CP

Вход для тактовых импульсов (контакт CLOCK)

Контакты 12

STCP

Синхронизация выходов (контакт LATCH)

Контакты 13

OE

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

Контакты 14

DS

Вход для последовательных данных (контакт
DATA)

Контакты 16

VCC

Питание

СБОРКА
1.

Установите светодиодную RGB-матрицу 8x8 на две полноразмерные макетные платы,
расположенные параллельно.

2.

Подключите резисторы с сопротивлением 330 Ом к контактам красных светодиодов,
а с сопротивлением 220 Ом — к контактам зеленых и синих светодиодов.

3.

Установите один сдвиговый регистр на одну из макетных плат рядом с контактами
общего анода светодиодной матрицы. Установите микросхему так, чтобы она перекры­
вала канавку макетной платы, как показано на рис. 24.4. Подключите контакты общего
анода светодиодной матрицы к первому сдвиговому регистру в соответствии с табли­
цей ниже. Эти контакты не нуждаются в резисторах.
КОНТАКТЫ ОБЩЕГО АНОДА

КОНТАКТЫ СДВИГОВОГО РЕГИСТРА 1

СВЕТОДИОД­
НАЯ М А Т Р И Ц А

сдвиговый
РЕГИСТР

СДВИГОВЫЙ
РЕГИСТР

ARDUINO

32

15: Q0

8: GND

Контакт GND

31

1: Q1

9: SO

Сдвиг 3 DS

30

2: Q2

10: MR

Контакт 5V

232 • ПРОЕКТ 24

КОНТАКТЫ ОБЩЕГО АНОДА

КОНТАКТЫ СДВИГОВОГО РЕГИСТРА 1

СВЕТОДИОД­
НАЯ МАТРИЦА

СДВИГОВЫЙ
РЕГИСТР

СДВИГОВЫЙ
РЕГИСТР

ARDUINO

29

3: Q3

11: SH-CP

К о н так т 13

20

4: Q4

12: ST-CP

К о н та к т 10

19

5: Q5

13: О Е

К о н та к т G ND

18

6: Q 6

14: DS

С д в и г 2 SO

17

7: Q7

16: VCC

К о н та к т 5V

Р И С У Н О К 24.4
С д в и г о в ы е р е г и с т р ы д о л ж н ы п е р е к р ы в а т ь канавку на м а к е т н о й плате

4.

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

К О Н ТА КТЫ ЗЕЛЕНО ГО СВЕТО ДИ О ДА

КО Н ТА КТЫ СД ВИ ГО ВО ГО РЕГИ С ТРА 2

СВЕТОДИОДНАЯ
МАТРИЦА

СДВИГОВЫЙ
РЕГИСТР

сдвиго вы й

28

15: Q0

8: GND

Контакт GND

27

1: Q1

9: SO

Сдвиг 1 DS

26

2: Q2

10: MR

Контакт 5V

25

3: Q3

11: SH-CP

Контакт 13

24

4: Q4

12: ST-CP

Контакт 10

23

5: Q5

13: OE

Контакт GND

22

6: Q6

14: DS

Контакт 11

21

7: Q7

16: VCC

Контакт 5V

К О Н ТА КТЫ СИНЕГО СВЕТО ДИ О ДА

РЕГИСТР

ARDUINO

КО Н ТА КТЫ СД ВИ ГО ВО ГО РЕГИ С ТРА 3

СВЕТОДИОДНАЯ
МАТРИЦА

СДВИГОВЫЙ
РЕГИСТР

СДВИГОВЫЙ
РЕГИСТР

ARDUINO

1

15: Q0

8:GND

Контакт GND

2

1: Q1

9: SO

Сдвиг 4 DS

3

2: Q2

10: MR

Контакт 5V

4

3: Q3

11: SH-CP

Контакт 13

5

4: Q4

12: ST-CP

Контакт 10

6

5: Q5

13: OE

Контакт GND

7

6: Q6

14: DS

Сдвиг 1 SO

8

7: Q7

16: VCC

Контакт 5V

КО Н ТА КТЫ КРАСНОГО СВЕТО ДИ О ДА

КО Н ТА КТЫ СД ВИ ГО ВО ГО РЕГИ С ТРА 4

СВЕТОДИОДНАЯ
МАТРИЦА

СДВИГОВЫЙ
РЕГИСТР

СДВИГОВЫЙ
РЕГИСТР

ARDUINO

9

15: Q0

8:GND

Контакт GND

10

1:Q1

9: SO

Сдвиг 3 DS

11

2: Q2

10: MR

Контакт 5V

12

3: Q3

11: SH-CP

Контакт 13

13

4: Q4

12: ST-CP

Контакт 10

14

5:05

13: OE

Контакт GND

15

6: Q6

,14: DS

Сдвиг 2 SO

16

7:07

16: VCC

Контакт 5V

5.

Микроконтроллер Arduino управляет светодиодами через три контакта ШИМ, по
одному для тактовых импульсов, данных и защелки. Каждый контакт подключа­
ется к Arduino следующим образом:

6.

СД ВИГО ВЫ Й РЕГИСТР

ARDUINO

ПРЕДНАЗНАЧЕНИЕ

К о н так т 9 (р е ги с тр 2)

К о н так т 11

Д ан ны е

К о н та к т 12 (все р е ги стр ы )

К о н так т 10

Защ елка

К о н та к т 11 (все р е ги стр ы )

К о н такт 13

Такты

Убедитесь, что ваша цепь соответствует схеме, показанной на рис. 24.5, а затем
загрузите в память Arduino код скетча, приведенный в разделе «Скетч» далее
в этом проекте.

Р И С У Н О К 24.5
П р и н ц и п и а л ь н а я с х е м а ц е п и устройства светового ш о у

СКЕТЧ
Сначала в коде скетча определяются три контакта платы Arduino, управляющие
сдвиговыми регистрами. Контакт защелки определен как контакт 10 платы Arduino,
контакт тактовых импульсов — как 13, а контакт данных — как 11. Мы определяем

переменные от 0 до 255 для управления яркостью свечения каждого светодиода.
Затем скетч по очереди включает каждый светодиод и смешивает три цвета для
создания оттенка. Например, при включенном зеленом, выключенном синем
и включенном красном светодиодах отображается желтый цвет. Затем скетч заци­
кленно зажигает светодиоды в произвольном порядке.

/* Пример 18.1 — эксперименты со светодиодной RGB-матрицей
Лицензия СС by-sa 3.0
http://tronixstuff.wordpress.com/tutorials
*/
int latchpin = 10;
int clockpin =13;
int datapin = 11;

//
//
//
//
//
//
//

Контакт, к которому подключены
контакты 12 всех сдвиговых регистров
Контакт, к которому подключены
контакты 11 на всех сдвиговых регистров
Контакт, к которому подключен
контакт 14 второго сдвигового регистра
Переменная задержки

int zz = 500;
int v a [] = {
1, 2, 4, 8, 16, 32, 64, 128, 255
};
int va2[] = {
1, 3, 7, 15, 31, 63, 127, 255
);

void setup() {
pinMode(latchpin, OUTPUT);
pinMode(clockpin, OUTPUT);
pinMode(datapin, OUTPUT);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 0);
shiftOut(datapin, clockpin, MSBFIRST, 0);
shiftOut(datapin, clockpin, MSBFIRST, 0);
shiftOut(datapin, clockpin, MSBFIRST, 0);
digitalWrite(latchpin, HIGH);
randomSeed(analogRead(0));
}
void allRed() {
// Включение всех красных светодиодов
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 255);
// Включение катодов
// на полную мощность
shiftOut(datapin, clockpin, MSBFIRST, 0);
// Включение
// зеленого на 0
shiftOut(datapin, clockpin, MSBFIRST, 0);
// Включение
// синего на 0
shiftOut(datapin, clockpin, MSBFIRST, 255);
// Включение красного
// на полную мощность
digitalWrite(latchpin, HIGH);
}

void allBlueO {
// Включение всех синих светодиодов
digitalWrite(latchpin, LOW);
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Катоды
shiftOut(datapin,
clockpin, MSBFIRST, 0);
// Зеленый
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Синий
shiftOut(datapin,
clockpin, MSBFIRST, 0);
// Красный
digitalWrite(latchpin, HIGH);
}
void allGreen() {
// Включение всех зеленых светодиодов
digitalWrite(latchpin, LOW);
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Катоды
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Зеленый
shiftOut(datapin,
clockpin, MSBFIRST, 0);
// Синий
shiftOut(datapin,
clockpin, MSBFIRST, 0);
// Красный
digitalWrite(latchpin, HIGH);
}
void allOn() {
// Включение всех светодиодов
digitalWrite(latchpin, LOW);
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Катоды
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Зеленый
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Синий
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Красный
digitalWrite(latchpin, HIGH);
}
void allYellow()

{

// Включение зеленых
// (желтый)
digitalWrite(latchpin, LOW);
shiftOut(datapin,
clockpin, MSBFIRST, 255);
shiftOut(datapin,
clockpin, MSBFIRST, 255);
shiftOut(datapin,
clockpin, MSBFIRST, 0);
shiftOut(datapin,
clockpin, MSBFIRST, 255);
digitalWrite(latchpin, HIGH);

и красных светодиодов

//
//
//
//

Катоды
Зеленый
Синий
Красный

}
void allAqua()

{

// Включение зеленых и синих светодиодов
// (голубой)
digitalWrite(latchpin, LOW);
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Катоды
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Зеленый
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Синий
shiftOut(datapin,
clockpin, MSBFIRST, 0);
// Красный
digitalWrite(latchpin, HIGH);

}
void allPurpleO

{

// Включение синих и красных светодиодов
// (лиловый)
digitalWrite(latchpin, LOW);
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Катоды
shiftOut(datapin,
clockpin, MSBFIRST, 0);
// Зеленый
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Синий
shiftOut(datapin,
clockpin, MSBFIRST, 255);
// Красный

digitalWrite(latchpin, HIGH);
}
void clearMatrix() {
// Включение всех светодиодов
digitalWrite(latchpin, LOW);
shiftOut(datapin,
clockpin, MSBFIRST, 0);
// Катоды
shiftout(datapin,
clockpin, MSBFIRST, 0);
// Зеленый
shiftOut(datapin,
clockpin, MSBFIRST, 0);
// Синий
shiftOut(datapin,
clockpin, MSBFIRST, 0);
// Красный
digitalWrite(latchpin, HIGH);
}
void lostinspace() {
// Мигание светодиодами случайным
for (int z = 0; z < 100; z++) {
digitalWrite(latchpin, LOW);
shiftout(datapin, clockpin, MSBFIRST, v a [random(8)]); //
shiftOut(datapin, clockpin, MSBFIRST, v a [random(8)]); //
shiftOut(datapin, clockpin, MSBFIRST, v a [random(8)]); //
shiftOut(datapin, clockpin, MSBFIRST, v a [random(8)]); //
digitalWrite(latchpin, HIGH);
delay(100);
}
}
void displayLEDs(int rr, int gg, int bb, int cc, int dd) {
// Добавление десятичных значений в функции shiftOut
/ / и не выключать матрицу в течение dd миллисекунд
digitalWrite(latchpin, LOW);
shiftOut(datapin,
clockpin, MSBFIRST, cc);
// Катоды
shiftOut(datapin,
clockpin, MSBFIRST, gg);
// Зеленый
shiftOut(datapin,
clockpin, MSBFIRST, bb);
// Синий
shiftOut(datapin,
clockpin, MSBFIRST, rr);
// Красный
digitalWrite(latchpin, HIGH);
delay(dd);
)
void loop() {
allOn () ;
delay (zz);
delay(zz);
allRedO ;
delay(zz);
delay (zz);
allGreen();
delay(zz);
delay(zz);
allBlue();
delay(zz);
delay(zz);
allPurple();

// Включение всей матрицы сплошным цветом

образом

Катоды
Зеленый
Синий
Красный

delay (zz);
delay(zz);
allYellow();
delay(zz);
delay(zz);
allAqua();
delay(1000);
// Включение некоторых отдельных светодиодов, используя случайные
// значения
lostinspace ();
// Прокрутка некоторых горизонтальных
// и вертикальных линий
for (int z = 0; z < 5; z++) {
for (int q = 1; q < 129; q *= 2) {
displayLEDs(255, 0, 0, q, 200);
}
}
clearMatrix();
delay(1000);
for (int z = 0; z < 5; z++) (
for (int q = 1; q < 129; q *= 2) (
displayLEDs(0, 255, 0, q, 200);
displayLEDs(q, 0, 0, 255, 200);
}
}
clearMatrix();
delay(1000);
for (int z = 0; z < 5; z++) {
for (int q = 1; q < 9; q++) {
displayLEDs(0, 0, 255, va2[q], 200);
}
}
clearMatrix();
delay (1000);
)

ПРОЕКТ 25:
СОБСТВЕННАЯ
ПЛАТА ARDUINO!
В ЭТОМ П РО ЕК ТЕ ВЫ
С О Б ЕР ЕТЕ АН АЛО Г A RD U IN O ,
ИСПОЛЬЗУЯ МИНИМУМ
КО М П О Н ЕН ТО В.


ТР ЕБУ ЕМ Ы Е КОМПОНЕНТЫ
• Микроконтроллер ATMEL
ATmega328P
• Макетная плата

• 2 электролитических
конденсатора емкостью
100 мкФ

• Красный светодиод

• Клемма для батареи
напряжением 9 В (типа
«Крона»)

• 3 резистора с сопротив­
лением 220 Ом

• 2 дисковых конденсатора
емкостью 22 пф

• Кварцевый генератор
с частотой 16 МГц (НС-495)

• Тактовая четырехконтакт­
ная кнопка

• 5-вольтовый стабилиза­
тор напряжения L7805cv

• Батарея напряжением
9 В (типа «Крона»)

• Зеленый светодиод

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

ПРИНЦИП РАБОТЫ
Плата из нашего проекта работает точно так же, как и Arduino. В ее основе используется
микроконтроллер ATMEL ATmega328P (рис. 25.1), к которому мы подключим дополни­
тельные компоненты. Микроконтроллер ATmega — это «мозг» Arduino, выполняющий
инструкции из загруженного скетча.

РИСУНОК 25.1
Микроконтроллер ATMEL ATmega328P

5-вольтовый стабилизатор напряжения L7805cv контролирует напряжение и сни­
жает напряжение тока от 9-вольтовой батареи до 5 В, до уровня, на котором работает
микросхема ATmega, тем самым защищая микроконтроллер и дополнительные компо­
ненты. Кварцевый генератор с частотой 1б МГц (рис. 25.2) позволяет Arduino вычислять
время, а конденсаторы действуют как фильтр для выравнивания напряжения.

РИСУНОК 25.2
Кварцевый генератор с частотой 16 МГц (НС-495)

В табл. 25.1 перечислены контакты микроконтроллера ATmega328P и их соответ­
ствие контактам Arduino. Например, контакт 13 платы Arduino, который мы использовали
для тестирования Arduino в начале книги, соответствует контакту 19 на микроконтрол­
лере ATMEL АТтеда328Р.
Распознать верхнюю часть микросхемы можно по небольшой полукруглой выемке
(рис. 25.3). Контакт 1 находится ниже этой выемки, а затем контакты нумеруются от 1 до
28 против часовой стрелки.

ТАБЛИЦА 25.1
Контакты микроконтроллера ATmega и их соответствие контактам Arduino

КОНТАКТ
ATMEGA

ФУНКЦИЯ
ARDUINO

КОНТАКТ
ATMEGA

ФУНКЦИЯ
ARDUINO

1

Сброс

15

Контакт 9

2

Контакт 0

16

Контакт 10

3

Контакт 1

17

Контакт 11

4

Контакт 2

18

Контакт 12

5

Контакт 3

19

Контакт 13

6

Контакт 4

20

вес

7

VCC

21

AREF

8

GND

22

GND

9

Кварц

23

АО

10

Кварц

24

А1

11

Контакт 5

25

А2

12

Контакт 6

26

АЗ

13

Контакт 7

27

А4

14

Контакт 8

28

А5

РИСУНОК 25.3
Наверху микроконтроллера есть полукруглаявыемка

ПОДГОТОВКА МИКРОКОНТРОЛЛЕРА
Обязательно покупайте микроконтроллер ATmega с предустановленным загруз­
чиком Arduino, так как он также содержит предустановленный скетч мигающего
светодиода, который вам понадобится для этого проекта.

У нашей поделки нет USB-разъема для подключения микросхемы непосред­
ственно к компьютеру, поэтому, если вы хотите использовать самодельную плату
Arduino с другим скетчем (или если в вашем микроконтроллере не был установлен
загрузчик), вам необходимо взять полноценную плату Arduino и загрузить скетч на
свой микроконтроллер ATmega следующим образом:
1.

Осторожно снимите микроконтроллер Arduino ATmega с оригинальной платы
Arduino (рис. 25.4) и замените его своим микроконтроллером ATmega.

РИСУНОК 25.4
Снятие микроконтроллера ATmega с платы Arduino

2.

Подключите Arduino к компьютеру с помощью USB-кабеля.

3.

Откройте среду разработки Arduino на компьютере.

4.

Загрузите скетч на микроконтроллер.

5.

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

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

СБОРКА ARDUINO
Во всех проектах я приводил принципиальную схему в самом конце, но в этом
случае полезно сначала взглянуть на нее, чтобы ссылаться на расположение
и определять используемые компоненты (рис. 25.5).

Р И С У Н О К 25.5

Полная схема

6.

Установите микросхему ATmega на макетную плату, перекрыв канавку. Для раз­
мещения компонентов вам понадобится небольшое пространство с двух сторон,
поэтому установите ее примерно так, как показано на рис. 25.6. Помните, что кон­
такт 1 микроконтроллера ATmega328P находится рядом с небольшим полукруглым
углублением на чипе. От него контакты отсчитываются по порядку, против часовой
стрелки. Учитывайте это, чтобы правильно разместить свой микроконтроллер.
Полукруглое углубление должно быть слева, как показано на схеме.

РИСУНОК 25.6
Расположение микросхемы ATmega таким образом, чтобы она перекрывала канавку макетной платы

7.

Подключите контакты 7,20 и 21 микроконтроллера ATmega к ближайшей шине
питания макетной платы, а контакты 8 и 23 — к шине заземления. Используйте
перемычки для соединения шин питания и заземления по обеим сторонам
платы, как показано на рис. 25.7.

РИСУНОК 25.7
Подключение шин питания и заземления

8.

Подключите одну ножку кварцевого генератора к контакту 9 микросхемы
ATmega, а другую — к контакту 10. Подключите ножки одного дискового
конденсатора емкостью 22 пф к контактам 9 и GND, а ножки второго — к кон­
тактам 10 и GND, как показано на рис. 25.8.

РИСУНОК 25.8
Установка кварцевого генератора и дисковых конденсаторов

9.

Установите кнопку на макетную плату слева от микросхемы ATmega так, чтобы
перекрыть канавку. Используя перемычки, подключите нижний правый контакт
кнопки к контакту 1 микроконтроллера ATmega, а нижний левый контакт — к кон­
такту GND, как показано на рис. 25.9. Подключите резистор с сопротивлением
220 Ом к нижнему правому контакту кнопки, а другой контакт этого резистора —
к шине заземления. Эта кнопка будет выполнять функцию сброса.

Р И С У Н О К 2 5.9

Установка кнопки сброса

10. Установите 5-вольтовый стабилизатор напряжения L7805cv в верхний левый
угол макетной платы, чтобы его номер был обращен к вам, как показано на
рис. 25.10 — его контакты 1-3 пронумерованы слева направо. Установите один
электролитический конденсатор емкостью 100 мкФ в верхнюю часть макет­
ной платы, одной ножкой в шину питания, а второй — в шину заземления.
Подключите второй конденсатор емкостью 100 мкФ к контактам 1 и 2 стабилиза­
тора напряжения. Затем подключите контакт 2 стабилизатора напряжения к шине
заземления, а контакт 3 — к шине питания.

РИСУНОК 25.10
Подключение электролитических конденсаторов емкостью 100 мкФ и 5-вольтового стабилизатора напряжения L7805cv

11. Установите красный светодиод на макетную плату, подключив длинную ножку
(анод) через резистор с сопротивлением 220 Ом к шине питания, короткую ножку
(катод) — к шине заземления. Затем установите зеленый светодиод, подключив
короткую ножку (катод) к контакту 21 микроконтроллера ATmega, а длинную
(анод) через резистор с сопротивлением 220 Ом к шине питания, как показано на

рис. 25.11. Подключите контакт + батареи 9 В к контакту 1 стабилизатора напря­
жения, а контакт — соедините с контактом 2 стабилизатора напряжения.

РИСУНОК 25.11
Установка светодиодов и подключение батареи 9 В

Ваша плата готова и должна выглядеть так, как показано на рис. 25.12. Красный
светодиод загорается, когда на шины макетной платы подается питание, оповещая,
что Arduino включен и работает, а зеленый светодиод загорается, реагируя на скетч
«Мигающий светодиод», загруженный в микроконтроллер ATmega.

РИСУНОК 25.12
Завершенная цепь

Используя табл. 25.1 для информации, вы можете применять эту цепь так же,
как и Arduino Uno, подключая компоненты к контактам микросхемы ATmega. Если вы
хотите собрать какой-либо проект из этой книги на постоянной основе, предвари­
тельно соберите свою плату Arduino, чтобы сэкономить деньги! Не забудьте при сборке
загрузить скетч в микросхему ATmega с помощью оригинальной платы Arduino.

ПРИЛОЖЕНИЕ А:
КОМПОНЕНТЫ
ЭТО ПРИЛОЖЕНИЕ СОДЕРЖИТ
ДОПОЛНИТЕЛЬНУЮ ИНФОР­
МАЦИЮ О КОМПОНЕНТАХ,
ИСПОЛЬЗУЕМЫХ В ПРОЕК­
ТАХ ЭТОЙ КНИГИ. ОПИСАНИЕ
КАЖДОГО КОМПОНЕНТА
СОПРОВОЖДАЕТСЯ ФОТО­
ГРАФИЕЙ И НЕКОТОРЫМИ
СВЕДЕНИЯМИ. ТАКЖЕ Я ПРИ­
ВЕЛ СПИСОК МАГАЗИНОВ,
В КОТОРЫХ МОЖНО ПРИОБ­
РЕСТИ УКАЗАННЫЕ ДЕТАЛИ.
А В САМОМ КОНЦЕ ВЫ РАЗ­
БЕРЕТЕСЬ С МАРКИРОВКОЙ
РЕЗИСТОРОВ.

Р У К О В О Д С Т В О ПО К О М П О Н Е Н Т А М
Ниже приведено руководство по компонентам, которые используются в проек­
тах, а также полезная дополнительная информация. Компоненты перечислены
в том порядке, в котором они используются в книге. Большинство компонентов
можно купить в интернет-магазинах, таких, как «Чип и Дип» или eBay, а некоторые
у специализированных розничных продавцов, список которых приведен в конце
приложения.

Батарейный отсек, рассчитанный на напряжение 9 В
Батарейный отсек, рассчитанный на напряжение 9 В, подключается к плате Arduino
для подачи электропитания. Вы вставляете батарейки и подключаете штекер
к гнезду на плате Arduino, как описано в разделе «Питание» в проекте 0. Обратите
внимание, что плату Arduino также можно запитать через USB-кабель.
• Необходимое количество: 1
• Количество контактов: 1
• Используется в проектах: Все
(опционально)

Датчик влажности почвы HL-69
Этот датчик измеряет влажность почвы. Он оборудован двумя штырями и двумя кон­
тактами (сверху). В проектах этой книги используется датчик влажности почвы HL-69.
Он поставляется с модулем драйвера, который вы подключаете к своему Arduino,
вместо того, чтобы напрямую подключаться к датчику.
• Необходимое количество: 1
• Количество контактов: 2
• Используется в проектах: 5

Датчик наклона
Датчик наклона представляет собой капсулу с металлическим шариком внутри,
который замыкает цепь, когда капсула находится в вертикальном положении.
Наклоните ее, и цепь разорвется.
• Необходимое количество: 1
• Количество контактов: 2
• Используется в проектах: 14

250 • ПРИЛОЖЕНИЕ А

Датчик температуры и влажности ОНИ 1
Датчик DHT11 измеряет влажность и температуру. Это небольшая синяя или белая
пластиковая коробочка с четырьмя контактами, которая иногда сразу монтируется на
плате модуля с тремя контактами. В этой книге используется датчик DHT11 с модулем
и тремя контактами: 5V, DATA и GND.
• Необходимое количество: 1
• Количество контактов: 4 (но мы исполь­
зуем только 3)
• Используется в проектах: 13

Джойстик
Джойстик имеет аналоговый вход, изменение которого джойстик выдает на цифро­
вом выходе. Джойстик состоит из двух потенциометров, подающих сигнал по двум
осям: влево/вправо и вверх/вниз. Джойстики используются в самых разных проектах,
таких, как игры или управление сервоприводами.
• Необходимое количество: 1
• Количество контактов: 5
• Используется в проектах: 10

Дисковый конденсатор
Дисковый конденсатор также может накапливать заряд, но это другой тип конден­
сатора (в данном случае, емкостью 22 пФ). Он выглядит как маленький диск с двумя
ножками. Номинал обычно указан на лицевой стороне. Существуют различные типы
дисковых конденсаторов; на рисунке показан керамический вариант.
• Необходимое количество: 2
• Количество контактов: 2
• Используется в проектах: 25

ЖК-дисплей
Жидкокристаллический дисплей служит для вывода символов. Дисплеи бывают раз­
ных размеров. В книге используется модель HD44780 (16 символов х 2 строки) с 16
контактами. ЖК-дисплей состоит из двух листов поляризующего материала с жидко­
кристаллическим раствором между ними; ток, проходящий через кристалл, создает
изображение.

• Необходимое количество: 1
• Количество контактов: 16
• Используется в проектах: 12,13,14,15

Инфракрасный датчик
Инфракрасный (ИК) датчик фиксирует инфракрасные сигналы, поступающие,
например, с пульта дистанционного управления. ИК-датчик представляет собой
светодиод в небольшом корпусе с тремя ножками: OUT (данные), GND и 5V. При
подключении ИК-датчика необходимо соблюдать полярность. Проверьте файл
спецификации к вашему датчику на тот случай, если контакты отличаются.
• Необходимое количество: 1
• Количество контактов: 3
• Используется в проектах: 11

Кварцевый генератор 16 МГц
Кварцевый генератор с частотой 16 МГц позволяет Arduino вычислять время. Это
небольшой металлический компонент с двумя ножками, причем к каждой из них
нужно подключать конденсатор, чтобы выровнять скачки напряжения. Частота
генератора обозначена на лицевой стороне.
• Необходимое количество: 1
• Количество контактов: 2
• Используется в проектах: 25

Клавиатура
Клавиатура размером 4x4, используемая в книге, представляет собой, по сути, ряд
переключателей. Она содержит 16 кнопок, объединенных в ряды. Также существует
12-кнопочная модель. Из восьми контактов четыре управляют строками и еще
четыре — столбцами. Плата Arduino повторяет номер каждой нажатой кнопки.
• Необходимое количество: 1
• Количество контактов: 8
• Используется в проектах: 22

Клеммы для батареи
Клеммы для батареи 9 В (типа «Крона») представлены в виде небольшого черного
разъема, который имеет два контакта и провода: черный для заземления (-) и крас­
ный для питания (+).
• Необходимое количество: 1
• Количество контактов: 2
• Используется в проектах: 25

Кнопка
Кнопка представляет собой простой переключатель, который замыкает цепь при
нажатии и размыкает при отпускании. Ее также называют мгновенным переключателем.
Кнопки бывают различных размеров и большинство из них имеют четыре контакта.
Необходимое количество: 4
Количество контактов: 4
Используется в проектах: 2 ,8,15,1 6,1 7 ,2 5

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

обычно ножки помечаются символами на

цилиндре. Существуют различные типы конденсаторов; на рисунке изображен алюми­
ниевый электролитический конденсатор емкостью 100 мкФ.
• Необходимое количество: 2
• Количество контактов: 2
• Используется в проектах: 25

Макетная плата
Макетная плата используется для подключения компонентов и создания цепей,
описанных в проектах. См. раздел «Макетные платы» в проекте 0 для получения
дополнительной информации.

• Необходимое количество: 2 полноразмерные платы,
1 полуразмерная плата, 1 мини-плата
• Количество контактов: 940 на полноразмерной плате,
420 на полуразмерной плате, 170 на мини-плате
• Используется в проектах: Все, за исключением про­
екта 7

Микроконтроллер ATmega328P
Микроконтроллер ATMEL АТтеда328Р — это мозг Arduino; именно он выполняет
инструкции из загруженного скетча. Это маленький черный микроконтроллер
с 32 ножками. На одном его конце вы увидите точку или полукруг — контакт 1
находится слева от этой метки.
• Необходимое количество: 1
• Количество контактов: 32
• Используется в проектах: 25

Пассивный инфракрасный датчик движения
Датчик движения (пассивный инфракрасный) обнаруживает движение в преде­
лах определенной области. В книге используется наиболее распространенная
модель НС SR501. Датчик оборудован линзой на передней панели и тремя
контактами: 5V, OUTPUT и GND. Оранжевые компоненты на плате датчика — это
потенциометры, которые изменяют чувствительность датчика и время актив­
ного состояния.
• Необходимое количество: 1
• Количество контактов: 3
• Используется в проектах: 21

Плата Arduino Uno R3
Arduino Uno R3 — основной компонент и «мозг» для всех наших проектов.
• Необходимое количество: 1
• Количество контактов: 14
• Используется в проектах: Все

Потенциометр
Потенциометр — это переменный резистор, сопротивлением которого вы можете
управлять, изменяя проходящее через него напряжение. Он оборудован ручкой,
которую вы можете поворачивать, изменяя сопротивление. У потенциометра три кон­
такта снизу. Центральный контакт служит для передачи сигнала управления и влияет
на каждую сторону (неважно, как подключены два других контакта). Потенциометр
обычно используется для управления выходом, таким как уровень громкости радио.
• Необходимое количество: 1 Потенциометр
с сопротивлением 50 кОм
• Количество контактов: 3
• Используется в проектах: 2, 3 ,4,12,13,14,15,17

Пьезоизлучатель
Пьезоизлучатель — это примитивный динамик. Электрические импульсы заставляют
его очень быстро щелкать, создавая звуковой тон. Пьезоизлучатель часто выглядит как
маленький черный ящик с двумя проводами. Если его извлечь из корпуса, вы увидите
маленький позолоченный диск. Это дешевый компонент, часто используемый в недоро­
гих игрушках для генерации звука (например, в сиренах игрушечных машинок). Он также
может использоваться в качестве датчика звука, как это показано в проекте 9.
• Необходимое количество: 1
• Количество контактов: 2
• Используется в проектах: 5, 7,8,9,15,17,
18,19,21,23

Ракетная установка WLT-V959-19
Ракетная установка WLT-V959-19, предназначенная для квадрокоптеров, представляет
собой мини-версию пулемета Гатлинга, способную быстро выпустить шесть пласти­
ковых ракет. Установка оборудована четырьмя проводами, но для непрерывной
стрельбы нам понадобятся только желтый и белый.
• Необходимое количество: 1
• Количество контактов: 4 (используется
только 2)
• Используется в проектах: 20

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

концов. Значение сопровления резистора определяется цветовым кодом — для
получения дополнительной информации см. раздел «Расшифровка значений рези­
сторов» в конце приложения. Проверяйте значения внимательно, иначе очень легко
ошибиться. Резисторы могут содержать две, четыре или пять цветных полос, поэтому
имейте в виду, что, например, четырехполосный резистор с сопротивлением 220 Ом
может несколько отличаться от пятиполосного резистора с тем же номиналом.
• Необходимое количество: 30 с сопротивлением
220 Ом, 10 с сопротивлением 330 Ом, 1 с сопротивле­
нием 10 кОм, 1 с сопротивлением 1 МОм
• Количество контактов: 2
• Используется в проектах: 1 — 4 ,6 ,8 , 9,16,17,18,19,
22, 23, 24, 25

Светодиод
Светодиод излучает свет, когда на него подается небольшой ток. Светодиод похож
на маленькую лампочку с двумя ножками. Длинная нога — это анод, предназна­
ченный для подключения к источнику питания +. Светодиодам обычно требуется
резистор, иначе они могут перегореть. Светодиоды зависят от полярности, то
есть ток через них течет только в одном направлении.
• Необходимое количество: 40 (по 10 красных, синих,
желтых и зеленых).
• Количество контактов: 2.
• Используется в проектах: 1 — 6, 8,9,17,18,19, 21, 22,
23,25.

Светодиодная RGB-матрица
Светодиодная RGB-матрица размером 8x8 представляет собой панель из 64
светодиодов, которые могут светиться красным, зеленым или синим цветом, соз­
давая различные оттенки. Матрица оборудована 32 контактами: 8 контактов для
общего анода всех светодиодов и по 8 контактов для красных, зеленых и синих
светодиодов. При подаче питания на катоды каждого светодиода необходимо
использовать резисторы.
• Необходимое количество: 1
• Количество контактов: 32
• Используется в проектах: 24

Сдвиговый регистр
Сдвиговый регистр представляет собой небольшую интегральную схему. Это
последовательный логический счетчик, который позволяет увеличить количество
контактов Arduino путем «сдвига» и хранения данных. Регистр выглядит как малень­
кий черный микроконтроллер с 16 ножками. На одном его конце вы увидите точку
или полукруг — контакт 1 находится слева от этой метки.
• Необходимое количество: 1
• Количество контактов: 16
• Используется в проектах: 16,24

Семисегментный светодиодный индикатор
Такой индикатор отображает цифру или символ, выстраивая ее из семи светодиодных
сегментов. Светодиодные индикаторы часто используются для отображения номеров
счетчиков, часов или таймеров. Доступны индикаторы разных размеров, от однораз­
рядных (с одним отображаемым символом) до восьмиразрядных; а четырехразрядные
индикаторы обычно используются для создания цифровых часов.
• Необходимое количество: 1
• Количество контактов: 10 — 12
• Используется в проектах: 16,17

Сервопривод
Сервопривод — это двигатель с рычагом, который можно поворачивать на определенное
количество градусов, передавая на сервопривод закодированный сигнал. Он выглядит как
небольшая коробка с тремя проводами и выходным валом, к которому может крепиться
рычаг. Красный провод отвечает за питание и подключается к контакту 5V, а черный (или
коричневый) отвечает за заземление и подключается к контакту GND. Оранжевый (или
белый) провод передает сигнал управления и подключается к аналоговым контактам
платы Arduino. Сервоприводы Tower Pro 9g, используемые в этой книге, поворачиваются
на 180 градусов, но существуют модели, способные поворачиваться на 360 градусов.
• Необходимое количество: 2
• Количество контактов: 3
• Используется в проектах: 9,10,11,18, 20,22,23

Ультразвуковой дальномер
Ультразвуковой дальномер посылает сигнал (часто называемый пингом), который
отражается от объекта и возвращается к датчику. Время от момента отправки
сигнала и до получения обратно используется для вычисления расстояния.
В проектах этой книги используется датчик модели HC-SR04. Это модульная плата
с двумя круглыми датчиками и четырьмя контактами.
• Необходимое количество: 1
• Количество контактов: 4
• Используется в проектах: 18, 20

Фоторезистор
Фоторезистор, также называемый светозависимым резистором, изменяет свое
сопротивление в зависимости от количества падающего на него света и исполь­
зуется для определения уровня освещенности. Существуют разные модели, но
обычно это небольшой овальный компонент с волнистыми линиями и двумя
ножками. Вам необходимо его откалибровать, чтобы определить уровень осве­
щенности в своем помещении, прежде чем использовать в своей программе.
• Необходимое количество: 1
• Количество контактов: 2
• Используется в проектах: 19

Четырехразрядный семисегментный последовательный
индикатор
Это четырехразрядная версия семисегментного светодиодного индикатора, опи­
санного выше, с дополнительной встроенной цепью, поэтому им можно управлять
с помощью небольшого количества контактов. На рисунке показан индикатор
компании SparkFun, отображающий разные цвета. Он оборудован 10 контактами,
но может быть подключен к Arduino с помощью лишь трех из них (VCC, GND и RX).
• Необходимое количество: 1
• Количество контактов: 10 (используется
только 3)
• Используется в проектах: 17

5-вольтовый стабилизатор напряжения
5-вольтовый стабилизатор напряжения L7805cv принимает напряжение от 7 до 11 В
и стабилизирует его до 5 В.
• Необходимое количество: 1
• Количество контактов: 3
• Используется в проектах: 25

RGB-светодиод
RGB-светодиод содержит три светодиода в одном: красный, зеленый и синий.
Смешивая эти цвета в разных соотношениях, вы можете получить любой оттенок.
Это прозрачный светодиод с четырьмя ножками, иногда устанавливаемый на модуль
со встроенными резисторами, как показано на рисунке. Резисторы необходимы для
ограничения напряжения, иначе светодиод перегорит. Самая длинная нога у светоди­
ода без модуля — это либо общий катод, либо анод.
• Необходимое количество: 1
• Количество контактов: 4
• Используется в проектах: 15

RFID-модуль
RFID-модуль предназначен для радиочастотной идентификации. Он считывает RFIDкарты и брелки для разрешения (либо запрета) доступа в зависимости от уровня карты.
Это небольшая плата с восемью контактами и встроенной антенной. RFID-модуль,
используемый в книге, — Mifare RC-522 — обычно поставляется с картой и брелоком.
• Необходимое количество: 1
• Количество контактов: 8
• Используется в проектах: 23

ИНТЕРНЕТ-МАГАЗИНЫ
Большинство электронных компонентов можно найти на крупных сайтах, таких, как
«Чип и Дип» или eBay, но если у вас есть проблемы с нахождением той или иной
детали, перечисленные ниже розничные продавцы могут вам помочь.

США
Adafruit www.adafruit.com
DigiKey www.digikey.com
Jameco Electronics www.jameco.com
Little Bird Electronics www.littlebirdelectronics.com
MCM www.mcmelectronics.com
Newark elementl 4 www.newark.com
RadioShack www.radioshack.com
RS Components www.rs-components.com
Seeed Studio www.seeedstudio.com/depot
SparkFun www.sparkfun.com
Европа
Electronic Sweet Pea's www.sweefpea5.se
Element 14 www.elementl4.com
Farnell www.farnell.com
Jameco Electronics www.jameco.com
Великобритания
4tronix www.4tronix.co.uk/store
Cool Components www.coolcomponents.co.uk
CPC cpc.farnell.com
Hobby Components www.hobbycomponents.com
Malfinson Electrical www.mallinson-electrical.com/shop
Maplin www.maplin.co.uk
Oomlout oomlout.co.uk
The Pi Hut thepihut.com
Proto-pic proto-pic.co.uk
Rapid Electronics www.rapidonline.com
RS uk.rs-oniine.com/web
Spiratronics spiratronics.com
Россия
Farnell elementl 4 ru.farnell.com
Mouser Electronics ru.mouser.com
Radiotech www.rct.ru
Амперка amperka.ru
Вольтмастер voltmaster.ru
Импульс www.impulsi.ru/catalog
Контест www.kontest.ru
Платан www.platan.ru
Радио-комплект www.radio-komplekt.ru
Чип и Дип www.chipdip.ru
Чип-НН chip-nn.ru
Электронные компоненты elecomp.ru

РАСШ ИФРОВ КА ЗНАЧЕНИЙ РЕЗИСТОРО В
Почти в каждом проекте этой книги мы использовали резисторы — электрические
компоненты, которые ограничивают величину передаваемого через цепь тока
(сопротивление измеряется в омах). Они используются для защиты компонентов,
таких как светодиоды, от перегрузки и перегорания. Сопротивление резистора

определяется цветными полосками на теле. Резисторы могут иметь четыре, пять или
шесть цветных полос.
Важно правильно определять значения резисторов, чтобы использовать кор­
ректные детали в своих проектах. Попробуем определить значение резистора
с четырьмя полосами, показанного на рис. А.1.

РИСУНОК А.1
Р е зи с то р с ч е ты р ь м я п о л о ск а м и

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

ТАБЛИЦА АЛ
Р а сч е т зн ач е н и й р е зи с то р а

ПОГРЕШ­
Н О СТЬ

ЦВЕТ

ПЕРВАЯ
П О Л О СА

ВТ ОР АЯ
П О Л О СА

ТРЕТЬЯ
ПО Л О СА

МНОЖИ­
ТЕЛЬ

Черный

0

0

0

10

Коричневый

1

1

1

100

±1%

Красный

2

2

2

ю оо

±2%

Оранжевый

3

3

3

1К0

Желтый

4

4

4

10KQ

Зеленый

5

5

5

100KQ

±0.5%

Синий

6

6

6

1М0

±0.25%

Фиолетовый

7

7

7

ю м п

± 0.10%

Серый

8

8

8

Белый

9

9

9

Золотой
Серебряный

±0.05%

0 .1 0

±5%

0 .010

±10%

261 • ПРИЛОЖЕНИЕ А

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

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


Первая полоса коричневая (1) = 1.



Вторая полоса черная (0) = 0.



Третья полоса красная (2) = 00 (2 — это количество нулей).



Четвертая полоса золотая, т.е. погрешность (точность) будет равна ± 5 %.
Таким образом, это резистор с сопротивлением в 1000 Ом, или 1 кОм, с точ­

ностью 5%, что значит, что фактическое значение может быть на 5% больше или
меньше, чем 1 кОм. Можно выполнить аналогичные расчеты для резисторов
с пятью или шестью полосками.
Если вы все еще не уверены в значении резистора, можете выполнить поиск
в Интернете, указав цвета в правильном порядке, прочитав их слева направо,
с погрешностью справа.

ПРИЛОЖЕНИЕ Б:
СПРАВКА
ПО КОНТАКТАМ
ARDUINO
ЭТО ПРИЛОЖЕНИЕ ПРЕДСТАВЛЯЕТ
СОБОЙ КРАТКИЙ СПРАВОЧНИК
ПО КОНТАКТАМ ARDUINO UNO,
ИХ ТЕХНИЧЕСКИМ НАЗВАНИЯМ
И ФУНКЦИЯМ. КОНТАКТЫ ОПИ­
СЫВАЮТСЯ БОЛЕЕ ПОДРОБНО
В ПРОЕКТАХ, ГДЕ ИСПОЛЬЗУ­
ЮТСЯ, ТАК ЧТО ПРИВЕДЕННАЯ
ЗДЕСЬ ИНФОРМАЦИЯ, ВЕРОЯТНО,
БУДЕТ ИМЕТЬ БОЛЬШИЙ СМЫСЛ
ПОСЛЕ ТОГО, КАК ВЫ ПОСТРОИТЕ
НЕСКОЛЬКО ПРОЕКТОВ.

КО Н ТАКТ

Ф УН КЦ ИЯ И М Е ТК А

П Р И М ЕЧ АН И Е

0

RX — используется для по­
лучения последовательных
данных TTL

1

ТХ — используется для от­
правки последовательных
данных TTL

2

Внешнее прерывание

3

Внешнее прерывание

4

ХСК/ТО — внешние часы
Ввод/Вывод
(Таймер/Счетчик 0)

5

Т1 (Таймер /Счетчик 1)

Широтно-импульсная
модуляция

6

AIN0 — Аналоговый компа­
ратор, положительный вход

Широтно-импульсная
модуляция

7

AIN1 — Аналоговый компа­
ратор, отрицательный вход

8

ICP1 — Захват ввода

9

ОС1А — Регистр таймера

Широтно-импульсная
модуляция

10

SS (Slave Select) — предна­
значен для активизации
ведущим устройством
(Master) того или иного пе­
риферийного устройства.

Широтно-импульсная
модуляция

11

MOSI (Master Out Slave In) —
линия для передачи данных
от ведущего устройства
(Master) к ведомым (Slave).

Широтно-импульсная
модуляция

12

MISO (Master In Slave Out) —
линия для передачи данных
от ведомого устройства
(Slave) к ведущему (Master).

13

SCK (Serial Clock) —
тактовые импульсы,
генерируемые ведущим
устройством (Master) для
синхронизации процесса
передачи данных.

Широтно-импульсная
модуляция

К О Н ТА КТ

ФУ НКЦ ИЯ И М Е ТК А

AREF

Опорное напряжение для
аналоговых входов.

АО

Аналоговый вход может
принимать 1024 различных
значения.

А1

Аналоговый вход может
принимать 1024 различных
значения.

А2

Аналоговый вход может
принимать 1024 различных
значения.

АЗ

Аналоговый вход может
принимать 1024 различных
значения.

А4

Аналоговый вход может
принимать 1024 различных
значения.

Посредством выводов
осуществляется связь
I2C (TWI), для создания
которой используется
библиотека Wire.

А5

Аналоговый вход может
принимать 1024 различных
значения.

Посредством выводов
осуществляется связь
I2C (TWI), для создания
которой используется
библиотека Wire.

RESET

Может использоваться для
сброса микроконтроллера.

3.3V

Напряжение на выводе 3.3 В
генерируемое встроенным
регулятором на плате.

5V

Регулируемый источник
напряжения 5 В.

GND

Выводы заземления.

Vin

Вход используется для по­
дачи питания от внешнего
источника или с помощью
разъема питания.

П Р И М ЕЧ АН И Е

265 • ПРИЛОЖЕНИЕ Б

Последовательные: О (RX) и 1 (ТХ). Эти контакты используются для приема (RX)
и передачи (ТХ) последовательных данных в транзисторно-транзисторной логике
(TTL). Мы используем контакт ТХ в ракетной установке в проекте 17.

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

ШИМ: 3,5, б, 9,10 и 11. Эти контакты могут использоваться с широтно-импульс­
ной модуляцией с помощью функции analogWrite ( ) . В проекте 2 приведена
дополнительная информация.

SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Эти контакты поддерживают связь SPI
с использованием библиотеки SPI и используются несколько раз в этой книге. Мы
используем связь SPI для электронной игры в кости в проекте 16, чтобы Arduino
мог отправлять и получать данные из сдвигового регистра, используемого для
управления семисегментным светодиодом.

Светодиод: 13. На плате есть встроенный светодиод, подключенный к циф­
ровому выходу 13. Когда контакт находится в режиме

h i g h ,светодиод

горит;

в режиме LOW — выключен. Встроенный светодиод используется для индикации
запуска загрузчика микроконтроллер ATmega328p, как правило, при загрузке
Arduino.

AREF. Э т о опорное напряжение для аналоговых входов; контакт используется
с функцией analogReference (). Допустимо вводить напряжение в диапа­
зоне от 0 до 5 В, поэтому, если ваш датчик использует напряжение ниже 5 В, вы
можете использовать этот контакт для увеличения разрешения для более точного
считывания.

Аналоговые входы: А0-А5. Плата Uno имеет шесть аналоговых входов, каждый
из которых может принимать 1024 различных значения.

TWI: А4 и А5. Эти контакты поддерживают связь TWI (двухпроводного интер­
фейса) с использованием библиотеки Wire. Используется для управления и связи
с устройством I2C, таким как последовательный ЖК-дисплей, через два провода.

RESET. Установите для этого контакта режим

l o w ,чтобы

сбросить микроконтрол­

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

П р е д м е тн ы й указател ь
А

М

Arduino Uno 23,32

Макетная плата 24, 32

ATmega328P 242

Мембранная клавиатура 33, 207

F
Fritzing 18

Мини-плата 24,32

П
Паяльник 34, 39

R
RGB-светодиод 146

A

Перемычки 24,26, 32,33,87
Питание 23
Потенциометр 33, 50,139,165
Пьезоизлучатель 33,68, 86,100,165

Анод 30

Р
Б

Ракетная установка 33,192

Батарейный отсек 24,32

Режим вывода 31

Библиотека 28

Резистор 30,33

д

С

Датчик влажности 33,132

Светодиод 2 9 ,3 0 ,3 3 ,5 0,5 6 ,6 1

Датчик влажности почвы 33,67

Светодиодная матрица 230

Датчик наклона 33,139

Светодиодный индикатор 156,165

Датчик температуры 33,132

Сдвиговый регистр 33,156,231

Джойстик 33,108

Сервопривод 33,100,108,115,178,192,207

Дисковый конденсатор 33,246

Скетч 19,27,28
Среда разработки 26, 29

Ж
Жидкокристаллический дисплей 33,124,146

Стабилизатор напряжения 33,242

Т

3

Тактовая кнопка 33

Загрузчик 243

Технология RFID 216

И

У

Инфракрасный датчик движения 33,200

Ультразвуковой дальномер 33,178,192

К

Ф

Катод 30

Фоторезистор 33,185

Кварцевый генератор 33, 242

ц

Кнопка 44,165

Цветовая модель RGB 146

Комментарий 31
Корпус с поворотным устройством 33,
108,115

Ш

Л

Э

Лазерная указка 33,108,185

Шина питания 25

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

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

Научно-популярное издание
ЭЛ ЕКТРО Н И КА Д Л Я НАЧИНАЮЩИХ

Марк Геддес
25 КРУТЫХ ПРОЕКТОВ С ARDUINO
Главный редактор Р. Фасхутдинов
О тветственный редактор Е. Истомина
Младший редактор Е. Минина
Художественный редактор А. Гусев

ООО «Издательство «Эксмо»
123308, Москва, ул. Зорге, д. 1. Тел.: 8 (495) 411 -68-86.
Home раде: www.eksmo.ru E-mail: info@eksmo.ru
вщ уруил: «ЭКСМО» АКБ Баспасы , 123308, М эскеу, Ресей, Зорге кеш еа, 1 уй.
Тел.: 8 (495) 411-68-86.
Н о т е раде: www.eksmo.ru E-mail: info@eksmo.ru.
Тауар бел rich «Эксмо»
Интернет-магазин : www.book24.ru
Интернет-дукен: www.book24.kz
Импортёр в Республику Казахстан ТОО «РДЦ-Алматы».
Казакстан Республикасындагы импорттаушы «РДЦ-Алматы» Ж Ш С.
Дистрибьютор и представитель по приему претензий на продукцию,
в Республике Казахстан: ТОО «РДЦ-Алматы»
Казакстан Республикасында дистрибьютор жэне еым бойынша арыз-талаптарды
кабылдаушынын, etdni «РДЦ-Алматы» Ж Ш С,
Алматы к-. Домбровский кеш ., 3«а», литер Б, офис 1.
Тел.: 8 (727) 251-59-90/91/92; E-mail: RDC-Almaty@eksmo.kz
бы мнщ жарамдылык M ep 3iM i шектелмеген.
Сертификация туралы акпарат сайтта: www.eksmo.ru/certification
Сведения о подтверждении соответствия издания согласно законодательству Р Ф
о техническом регулировании можно получить на сайте Издательства «Эксмо»
www.eksmo.ru/certification
Э ндр ген мемлекет: Ресей. Сертификация карастырылмаган

Подписано в печать 15.11.2018.
Формат 70х1001/ 16. Печать оф сетная. Уел. печ. л. 22,04.
Тираж 2000 экз. Заказ № 1188.
Отпечатано в ОАО «Можайский полиграфический комбинат».
143200, г. Можайск, ул. Мира, 93.
www.oaom pk.ru, w w w .O A O M n K- р ф т е л .: (495) 745-84-28, (49638) 20-685

Оптовая торговля книгами «Эксмо»:
ООО «ТД «Эксмо». 123308, г. Москва, ул.Зорге, д.1, многоканальный тел.: 411 -50-74.
E-mail: reception@eksmo-sale.ru
По вопросам приобретения книг «Эксмо» зарубежными оптовыми
покупателями обращаться в отдел зарубежных продаж ТД «Эксмо»
E-mail: international@eksmo-sale.ru
International Sales: International wholesale custom ers should contact
Foreign Sales Department o f Trading House «Eksmo» for their orders.

internationai@eksmo-sale.ru
По вопросам заказа книг корпоративным клиентам, в том числе в специальном
оформлении, обращаться по тел.: +7(495) 411-68-59, доб. 2261.
E-mail: ivanova.ey@eksmo.ru
Оптовая торговля бумажно-беловыми
и канцелярскими товарами для школы и офиса «Канц-Эксмо»:
Компания «Канц-Эксмо»: 142702, Московская обл., Ленинский р-н, г. Видное-2,
Белокаменное ш., д . 1, а/я 5. Тел.:/факс +7 (495) 745-28-87 (многоканальный),
e-mail: kanc@eksmo-sale.ru, сайт: www.kanc-eksmo.ru

В Санкт-Петербурге: в магазине «Парк Культуры и Чтения БУКВОЕД», Невский пр-т, д. 46.
Тел.: +7(812)601 -0-601, www.bookvoed.ru
Полный ассортимент книг издательства «Эксмо» для оптовых покупателей:

Москва. ООО «Торговый Дом «Эксмо». Адрес: 123308, г. Москва, ул.Зорге, д.1.
Телефон: +7 (495) 411-50-74. E-mail: reception@eksmo-sale.ru
Нижний Новгород. Филиал «Торгового Дома «Эксмо» в Нижнем Новгороде. Адрес: 603094,
г. Нижний Новгород, ул. Карпинского, д. 29, бизнес-парк «Грин Плаза».
Телефон: +7 (831) 216-15-91 (92, 93, 94). E-mail: reception@eksmonn.ru
Санкт-Петербург. ООО «СЗКО». Адрес: 192029, г. Санкт-Петербург, пр. Обуховской Обороны,
д . 84, лит. «Е». Телефон: +7 (812) 365-46-03 / 04. E-mail: server@szko.ru
Екатеринбург. Филиал ООО «Издательство Эксмо» в г. Екатеринбурге. Адрес: 620024,
г. Екатеринбург, ул. Новинская, д. 2щ. Телефон: +7 (343) 272-72-01 (02/03/04/05/06/08).
E-mail: petrova.ea@ekat.eksmo.ru
Самара. Филиал ООО «Издательство «Эксмо» в г. Самаре.
Адрес: 443052, г. Самара, пр-т Кирова, д. 75/1, лит. «Е».
Телефон: +7(846)207-55-50. E-mail: RDC-samara@mail.ru
Ростов-на-Дону. Филиал ООО «Издательство «Эксмо» в г. Ростове-на-Дону. Адрес: 344023,
г. Ростов-на-Дону, ул. Страны Советов, д. 44 А. Телефон: +7(863) 303-62-10. E-mail: info@rnd.eksmo.ru
Центр оптово-розничных продаж Cash&Carry в г. Ростове-на-Дону. Адрес: 344023,
г Ростов-на-Дону, ул. Страны Советов, д. 44 В. Телефон: (863) 303-62-10.
Режим работы: с 9-00 до 19-00. E-mail: rostov.mag@rnd.eksmo.ru
Новосибирск. Филиал ООО «Издательство «Эксмо» в г. Новосибирске. Адрес: 630015,
г. Новосибирск, Комбинатский пер., д . 3. Телефон: +7(383) 289-91-42. E-mail: eksmo-nsk@yandex.ru
Хабаровск. Обособленное подразделение в г. Хабаровске. Адрес: 680000, г. Хабаровск,
пер. Дзержинского, д . 24, литера Б, офис 1. Телефон: +7(4212) 910-120. E-mail: eksmo-khv@mail.ru
Тюмень. Филиал ООО «Издательство «Эксмо» в г. Тюмени.
Центр оптово-розничных продаж Cash&Carry в г. Тюмени.
Адрес: 625022, г. Тюмень, ул. Алебашевская, д. 9А (ТЦ Перестройка+).
Телефон: +7 (3452) 21-53-96/97/ 98. E-mail: eksmo-tumen@mail.ru
Краснодар. ООО «Издательство «Эксмо» Обособленное подразделение в г. Краснодаре
Центр оптово-розничных продаж Cash&Carry в г. Краснодаре
Адрес: 350018, г. Краснодар, ул. Сормовская, д. 7, лит. «Г». Телефон: (861) 234-43-01(02).
Республика Беларусь. ООО «ЭКСМО ACT Си энд Си». Центр оптово-розничных продаж
Cash&Carry в г.Минске. Адрес: 220014, Республика Беларусь, г. Минск,
пр-т Жукова, д. 44, пом. 1-17, ТЦ «Outleto». Телефон: +375 17 251 -40-23; +375 44 581 -81 -92.
Режим работы: с 10-00 до 22-00. E-mail: exmoast@yandex.by
Казахстан. РДЦ Алматы. Адрес: 050039, г. Алматы, ул. Домбровского, д. 3 «А».
Телефон: +7 (727) 251-59-90 (91,92). E-mail: RDC-Almaty@eksmo.kz
Интернет-магазин: www.book24.kz
Украина. ООО «Форс Украина». Адрес: 04073 г. Киев, ул. Вербовая, д . 17а.
Телефон: +38 (044) 290-99-44. E-mail: sales@forsukraine.com

Полный ассортимент продукции Издательства «Эксмо» можно приобрести в книжных
магазинах «Читай-город» и заказать в интернет-магазине www.chitai-gorod.ru.
Телефон единой справочной службы 8 (800) 444 8 444. Звонок по России бесплатный.
Интернет-магазин ООО «Издательство «Эксмо»

www.book24.ru
Розничная продажа книг с доставкой по всему миру.
Тел.: +7 (495) 745-89-14. E-mail: imarket@eksmo-sale.ru

НАУЧИТЕ ДЕТЕЙ ПРОГРАММИРОВАТЬ
УЖЕ СЕЙЧАС С ПОМОЩЬЮ НАШЕЙ
НОВОЙ СЕРИИ КНИГ!

ПРОГРАММИРОВАНИЕ

ДЛЯ ДЕТЕЙ

ПОЛЕЗНЫЕ, ИНТЕРЕСНЫЕ И ЗАБАВНЫЕ

ВСЕ ПР ОЕК ТЫ ВЫПО ЛНЕ НЫ С ИСПОЛЬЗ ОВАНИЕМ ARDUINO UNO

ВЫ КУПИЛИ ARDUINO - ЧТО ДАЛЬШ Е?
«25 КРУТЫХ ПРОЕКТОВ С ARDUINO» -

любые проекты, которые вам нравятся,

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

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

составляющие, Arduino и компьютер,
вы научитесь создавать и программи­
ровать самые разные вещи - от све­

Эта книга - самый веселый способ
начать работать с микроконтролле­
рами и подходит как для начинающих,

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

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

25 ПОШАГОВЫХ ПРОЕКТОВ








СВЕТОДИОДНАЯПАНЕЛЬ
ДИСКОТЕЧНЫЙСТРОБОСКОП
МОНИТОРПОЛИВА
ДЕТЕКТОРПРИЗРАКОВ
ПРОИГРЫВАТЕЛЬ
ЭЛЕКТРОННЫЙПРИВРАТНИК
ЛАЗЕР, УПРАВЛЯЕМЫЙДЖОЙСТИКОМ









МЕТЕОСТАНЦИЯ
ПРЕДСКАЗАТЕЛЬСУДЬБЫ
ЭЛЕКТРОННЫЕКОСТИ
РАКЕТНАЯПУСКОВАЯУСТАНОВКА
ЛАЗЕРНАЯСИГНАЛИЗАЦИЯ
ДАТЧИКДВИЖЕНИЯ
СВЕТОВОЕШОУ

ИДРУГИЕ.
«Эта книга отлично подойдет тем, кто знаком с основами программиро­
вания Arduino и хочет проверить и закрепить знания на практике. В ней хорошо
объясняются основы электроники и технические моменты, касающиеся пайки,
подготовки рабочего места, и многие другие. Еще одним плюсом книги является
наличие иллюстраций и таблиц. Сами проекты интересные и хорошо подходят
для обучения - большую часть из них можно включать в практические части
обучающих занятий no Arduino».
МИХАИЛ КИСЕЛЕВ,
руководитель отдела разработки в проектах
«Лига Роботов» и «Эра Инженеров»