Logout succeed
Logout succeed. See you again!

Изучаем Arduino. 65 проектов своими руками PDF
Preview Изучаем Arduino. 65 проектов своими руками
ББК 32.973.23-018.2 УДК 004.3 Б78 Бокселл Дж. Б78 Изучаем Arduino. 65 проектов своими руками. — СПб.: Питер, 2017. — 400 с.: ил. — (Серия «Вы и ваш ребенок»). ISBN 978-5-496-02421-1 Что такое Arduino? За этим словом прячется легкое и простое устройство, которое способно пре- вратить кучу проводов и плат в робота, управлять умным домом и многое другое. Прочитайте эту книгу и овладейте бесчисленными возможностями Arduino, позволяющими электронике взаимодействовать с окружающим миром. Познакомившись с основами Arduino, вы быстро перейдете к работе с разнообразными электронны- ми компонентами. А конкретные проекты позволят вам сразу закрепить знания на практике. Страница за страницей проекты будут становиться все более изощренными, сложными и интересными. 12+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.973.23-018.2 УДК 004.3 Права на издание получены по соглашению с No Starch Press. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как на- дежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-1593274481 англ. Copyright © 2013 by John Boxall ISBN 978-5-496-02421-1 © Перевод на русский язык ООО Издательство «Питер», 2017 © Издание на русском языке, оформление ООО Издательство «Питер», 2017 © Серия «Вы и ваш ребенок», 2017 Краткое содержание Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Глава 1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Глава 2. Знакомство с платой Arduino и IDE . . . . . . . . . . . . . . . . . . . . . . . 39 Глава 3. Первые шаги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Глава 4. Строительные блоки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Глава 5. Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Глава 6. Числа, переменные и арифметика . . . . . . . . . . . . . . . . . . . . . . 134 Глава 7. Жидкокристаллические индикаторы . . . . . . . . . . . . . . . . . . . . . 173 Глава 8. Расширение Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Глава 9. Цифровые клавиатуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Глава 10. Сенсорные экраны . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Глава 11. Семейство плат Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Глава 12. Электродвигатели и движение . . . . . . . . . . . . . . . . . . . . . . . . 253 Глава 13. Arduino и GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Глава 14. Беспроводная передача информации . . . . . . . . . . . . . . . . . . . 300 Глава 15. Инфракрасный пульт дистанционного управления . . . . . . . . . 314 Глава 16. Чтение радиомаркеров RFID . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Глава 17. Шины данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 Глава 18. Часы реального времени . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Глава 19. Интернет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Глава 20. Сети сотовой связи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Оглавление Благодарности ............................................ 20 Глава 1. Введение .......................................... 21 Бесконечность не предел! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Сила в массовости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Компоненты и аксессуары . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Необходимое программное обеспечение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Windows XP и более поздние версии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Ubuntu Linux 9 .04 и выше . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Безопасность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Забегая вперед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Глава 2. Знакомство с платой Arduino и IDE .................... 39 Плата Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Обзор среды разработки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Область управления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Область ввода текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Область вывода сообщений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Создание первого скетча в IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Комментарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Функция setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Управление аппаратными компонентами . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Функция loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Проверка скетча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Загрузка и запуск скетча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Изменение скетча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Забегая вперед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Оглавление 7 Глава 3. Первые шаги ...................................... 53 Планирование проектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Об электричестве . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Сила тока . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Напряжение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Мощность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Электронные компоненты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Резистор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Светодиод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Макетная плата для навесного монтажа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Проект № 1: Эффект бегущей волны из огоньков светодиодов ........63 Алгоритм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Запуск скетча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Проект № 2: Повторение команд с помощью цикла for ...............67 Изменение яркости светодиода с использованием широтно-импульсной модуляции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Проект № 3: Демонстрация ШИМ..................................69 Дополнительные электронные компоненты . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Транзистор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Выпрямительный диод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Реле . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Схемы управления более высоким напряжением . . . . . . . . . . . . . . . . . . . . . . . . 73 Забегая вперед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Глава 4. Строительные блоки ................................ 75 Принципиальные схемы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Обозначение компонентов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Проводники на схемах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Чтение принципиальных схем . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Конденсатор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Емкость конденсатора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Маркировка конденсаторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Типы конденсаторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Цифровые входы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 8 Оглавление Проект № 4: Демонстрация работы цифрового входа ................86 Алгоритм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Изменение скетча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Анализ скетча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Определение констант с помощью #define . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Чтение состояний цифровых входов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Принятие решений с помощью if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Принятие альтернативных решений с помощью if-then-else . . . . . . . . . . . . . . 93 Логические переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Операторы сравнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Выполнение двух и более сравнений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Проект № 5: Управление движением ..............................95 Цель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Алгоритм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Запуск скетча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Аналоговые и цифровые сигналы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Проект № 6: Тестер для одноэлементных батареек .................103 Цель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Алгоритм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Выполнение арифметических операций в Arduino . . . . . . . . . . . . . . . . . . . . . . . 106 Вещественные переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Операторы сравнения чисел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Увеличение точности измерения аналоговых сигналов с помощью источника опорного напряжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Использование внешнего источника опорного напряжения . . . . . . . . . . . . . 107 Использование внутреннего источника опорного напряжения . . . . . . . . . . . 109 Переменный резистор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Пьезоэлектрические зуммеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Изображение пьезоэлектрических зуммеров на схемах . . . . . . . . . . . . . . . . . 111 Оглавление 9 Проект № 7: Испытание пьезоэлектрического зуммера..............111 Проект № 8: Быстродействующий термометр . . . . . . . . . . . . . . . . . . . . . . 113 Цель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Доработка скетча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Забегая вперед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Глава 5. Функции ......................................... 118 Проект № 9: Функция для повторного выполнения действий.........119 Проект № 10: Функция, изменяющая число миганий светодиода .....120 Функция, возвращающая значения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Проект № 11: Быстродействующий термометр, сообщающий температуру миганием светодиода ............................122 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Отображение данных из Arduino в окне монитора последовательного порта . . . 125 Монитор последовательного порта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Проект № 12: Отображение температуры в мониторе порта..........126 Отладка при помощи монитора порта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Принятие решений при помощи инструкций while . . . . . . . . . . . . . . . . . . . . . . . 128 do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Передача данных из монитора порта в Arduino . . . . . . . . . . . . . . . . . . . . . . . . . 129 Проект № 13: Умножение числа на два ...........................130 Переменные типа long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Проект № 14: Использование переменных типа long................131 Забегая вперед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Глава 6. Числа, переменные и арифметика ................... 134 Случайные числа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Использование электрического поля для генерации случайных чисел . . . . . . 135 Проект № 15: Электронный кубик................................136 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Доработка скетча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 10 Оглавление Краткое введение в двоичную систему счисления . . . . . . . . . . . . . . . . . . . . . . 139 Переменные типа byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Увеличение числа цифровых выходов с применением сдвигового регистра . . . . 141 Проект № 16: Светодиодный индикатор для двоичных чисел ........142 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Подключение микросхемы 74HC595 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Проект № 17: Игра «Двоичная викторина» ........................145 Алгоритм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Определение массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Обращение к значениям в массиве . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Запись в массивы и чтение из массивов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Семисегментные светодиодные индикаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Управление сегментами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Проект № 18: Дисплей с одной цифрой ...........................153 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Отображение двух цифр . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Проект № 19: Управление двумя семисегментными индикаторами....156 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Схема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Деление по модулю . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Проект № 20: Цифровой термометр ..............................159 Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Скетч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Матричные светодиодные индикаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Схема светодиодной матрицы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Соединения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Поразрядная арифметика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Оператор поразрядного И (AND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Оператор поразрядного ИЛИ (OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Оператор поразрядного ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) . . . . . . . . . . . . . . . . . . 165 Оператор поразрядного НЕ (NOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Поразрядный сдвиг влево и вправо . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Проект № 21: Создание светодиодной матрицы ....................166