Text
                    ДЕНИС ГОЛИКОВ

ДЕНИС ГОЛИКОВ ИЛ® Д Л Я|юных< ПРОГРАММИСТОВ! МИКГОКОНТРрЛЛЕРОВМН 2-Е ИЗДАНИЕ Санкт-Петербург «БХВ-Петербург» 2025
УДК 004.43-053.2 ББК 32 973.26-018.1 Г60 Голиков Д. В. Г60 Scratch и Arduino. 18 игровых проектов для юных программистов микроконтролле- ров. - 2-е изд., перераб и доп. - СПб.: БХ В Петербург, 2025. - 144 с.: ил. ISBN 978-5-9775-1998-4 Книга написана на основе опыта обучения визуальному программированию микроконтроллера Arduino на языке Scratch в кружке юных программистов и протестирована на сотне детей 7-12 лет Материал рассчитан на самостоятельное изучение, без помощи взрослых. Необходимые сведе- ния из области робототехники даны в предельно понятной форме Создавая простые интерактивные игры на Scratch и Arduino с управлением от датчиков, юные читатели познакомятся с аналоговыми и цифровыми сигналами, током, напряжением и сопро- тивлением, научатся пользоваться мультиметром, узнают, как устроены цифровые и аналоговые датчики, как их подключать и использовать в играх Второе издание обновлено в соответствии с последней версией Snap4Arduino, добавлена глава с проектами на базе универсальных робототехнических плат (mCore, SPBot), на которых интегри- рованы датчики, модули и устройства управления Электронный архив, на сайте издательства содержит все необходимые для работы файлы. Для детей младшего и среднего школьного возраста УДК 004 43-053.2 ЬБК 32 973.26-018.1 Группа подготовки издания: Руководитель проекта Зав редакцией Компьютерная верстка Корректор Дизайн обложки Евгений Рыбаков Людмила Гауль Людмилы Гауль Светлана Крутоярова Зои Канторович «ЬХВ Петербург», 191036, Санкт-Петербург, Гончарная ул., 20 ISSN 978-5-9775-1998 4 © Голиков Д В , 2025 © Оформление ООО «ЬХ В- Петербург», ООО «БХВ», 2025
СОДЕРЖАНИЕ Введение........................................................... 6 Коротко о Snap4Arduino................................6 Подготовка к работе................................. 7 Условные обозначения..................................7 Знакомство с интерфейсом Snap4Arduino............... 8 Настройка интерфейса..................................9 Версии Online и Desktop..............................10 Основы программирования на Snap4Arduino..............12 Знакомство с платой Arduino..........................18 Состав набора для работы с книгой....................21 Установка макетной платы.............................22 Знакомство с макетной платой....................... 22 Глава 1. Цифровые выходы. Моргаем одним светодиодом..............23 Резистор.............................................23 Светодиод............................................25 Знакомство с цифровыми пинами........................26 Сборка схемы.........................................26 Программирование Arduino.............................27 Глава 2. Цифровые выходы. Бегущий огонёк. Новогодняя гирлянда....29 Сборка схемы.........................................29 Бегущий огонёк.......................................30 Бегущий огонёк с собственным блоком..................31 Первая гирлянда......................................34 Вторая гирлянда......................................35 Глава 3. Цифровые выходы. Зуммер. Сигнал SOS.................. 37 Зуммер........................................... 37 Сборка схемы....................................... 37 Программирование Arduino.............................38 Глава 4. Цифровые входы. Управление зуммером с помощью кнопки....................................................41 Знакомство с цифровыми входами................... 41 Знакомство с кнопкой............................... 42 Тест схемы с кнопкой.................................43 Управление зуммером с помощью одной кнопки...........45
Глава 5. Игра «Кликер»............................................48 Сборка схемы.........................................48 Программирование Arduino........................... 49 Глава 6. Игра «Кликер» с запрещающим светодиодом................. 51 Сборка схемы.........................................51 Программируем Arduino................................52 Глава 7. Цифровые входы. Управление с помощью одной кнопки. Игра «Успей в барбершоп»...........................................54 Сборка схемы.........................................54 Программирование игры «Успей в барбершоп»............55 Глава 8. Датчик инфракрасного излучения. Валера с управлением от телевизионного пульта...........................................62 Знакомство с датчиком инфракрасного излучения........62 Сборка схемы.........................................63 Доработка игры «Успей в барбершоп»...................63 Глава 9. Цифровые входы. Управление с помощью двух кнопок. Игра «Успей в барбершоп» для двоих.................................65 Программирование игры на двоих..................... 65 Глава 10. Аналоговые выходы. Плавно изменяем яркость светодиодов. Новогодняя гирлянда................................. 71 Сборка схемы.........................................72 Программирование Arduino.............................72 Глава 11. Управление яркостью светодиода с помощью потенциометра......................................................77 Потенциометр.........................................77 Сборка схемы....................................... 78 Программирование Arduino.............................79 Глава 12. Аналоговые входы. Управление с помощью одного потенциометра. Игра «Арканоид»..............................81 Сборка схемы.........................................81 Создание игры «Арканоид».............................82 Программирование Arduino.............................83 Глава 13. Аналоговые входы. Игра «Арканоид» версия 2. Управление с помощью датчика освещённости.................88 Датчик освещённости..................................88 Сборка схемы.........................................89 Доработка игры «Арканоид»............................90
Глава 14. Аналоговые входы. Цветомузыка. Управление с помощью датчика громкости звука...................................91 Сборка схемы..........................................92 Программирование Arduino..............................92 Глава 15. Аналоговые входы. Датчик температуры. Комната с обогревом и кондиционером.................................95 Датчик температуры....................................95 Комната с бытовыми приборами..........................96 Сборка схемы..........................................96 Подготовка сп райтов..................................96 Программирование Arduino.............................101 Глава 16. Управление потенциометром и двумя кнопками. Игра «Кольцевая автогонка».........................................106 Сборка схемы.........................................106 Подготовка спрайтов и фонов..........................107 Программирование Arduino.............................109 Глава 17. Управление двумя потенциометрами. Игра «Гонка в пустыне» для двоих...................................113 Сборка схемы.........................................113 Подготовка спрайтов..................................114 Программирование Arduino.............................116 Глава 18. Зуммер. Азбука Морзе.....................................126 Знакомство с циклом for..............................126 Сборка схемы.........................................127 Программирование Arduino.............................127 Глава 19. Многофункциональные платы Arduino........................131 Плата SPBot..........................................131 Загрузка прошивки Firmware...........................134 Добавление новых блоков в Snap4Ardumo................136 Цифровые выходы. Моргаем цветными светодиодами.........................................137 Цифровые выходы. Зуммер..............................138 Датчик инфракрасного излучения. Управление светодиодом от телевизионного пульта.............................139 Аналоговый вход. Управляем светодиодом и зуммером с помощью кнопки.....................................139 Аналоговые входы. Измеряем освещённость..............140 В этой главе.........................................141 Рекомендуемая литература......................................... 142
ВВЕДЕНИЕ Эта книга написана специально для тех, кто уже познакомился с основами про- граммирования на Scratch и хочет сделать следующий шаг в освоении современ- ных технологий и научиться программировать микроконтроллер Arduino. Микроконтроллер - эго маленький компьютер, поэтому запрограммировать его совсем несложно. Делать это мы будем в специальной среде программирова- ния - Snap4Arduiпо, которая является одной из модификаций Scratch. Программирование на Snap4Arduino, как и в Scratch, происходит путём соеди- нения разноцветных блоков. ждать 1 сек. На страницах книги рассказано, как управлять зуммером и светодиодами, как использовать дат- чики, а также приведены примеры игр с управле- нием от аналоговых и цифровых входов Arduino. Не знаете, что такое аналоговые и цифровые входы? Об этом тоже подробно рассказано в книге. Книга предназначена для детей 11-13 лет, од- нако некоторые проекты смогут сделать и школьни- ки помладше. КОРОТКО О SNAP1ARDUIN0 Snap4Ardumo разработан Бернатом Ромагозой (Bernat Romagosa) совместно с командой единомышленников в лаборатории Citilab («Ситилаб») в Барселоне на основе языка Snap! Snap! был создан Джене Мёнихем (Jens Monig at MioSoft Corporation, now at SAP) совместно с Брайаном Харви (Brian Harvey at Berkeley) при помощи студентов Калифорнийскогоуниверситета в Беркли. Snap! является идейным продолжением Scratch, но содержит ряд важных от- личий, которые позволяют использовать его не только в начальной школе, но и для обучения старшеклассников и студентов. Snap4Arduino поддерживает все возможности Snap! и вдобавок к ним имеет специальные блоки для работы с Arduino.
ПОДГОТОВКА К РАБОТЕ Перед тем как приступить к созданию проектов, необходимо установить про- граммное обеспечение. Для этого, скорее всего, вам потребуется помощь родителей. Подробную инструкцию по установке можно скачать со страницы книги на сай - те издательства по ссылке www.bhv.ru. Скачать архив с изображениями, необходимыми для создания проектов, мож- но по ссылке https://disk.yandex.ru/cl/oLIR-4SIJqF-aQ. Для работы с книгой, помимо набора электронных компонентов, желательно приобрести цифровой мультиметр. УСЛОВНЫЕ ОБОЗНАЧЕНИЯ Жирным шрифтом выделены элементы интерфейса программы - кнопки, поля ввода, списки и другое. Названия блоков выделены цветом. Названия переменных, списков и сообщений выделены узким жирным шрифтом Названия клавиш клавиатуры заключены в угловые скобки, например <Пробел>. Задания Фрагменты текста, выделенные как этот, содержат задания для самостоятельной работы. Совет Фрагменты текста, выделенные как этот, содержат советы, идеи и рекомендации. Обратите внимание! Обратите особое внимание на этот фрагмент. Между прочим Фрагменты текста, выделенные как этот, привлекают ваше внимание к полезной дополнительной информации.
ЗНАКОМСТВО С ИНТЕРФЕЙСОМ SNAPIAWUINO Запустите Snap4Arduino, внешний вид которого очень похож на Scratch 1.4. Д ЗпцЯагошпо Hwj* mmwwA ' ил» | Centro! ( Setnne ( Орнаеп I Vauten | A. fens move О *tep* О \ Неомгпажленный Свойства спрайта pomt in dlrectton CD point toward* mow i point In direction »f Ж Это сцена. o ««₽• по ней перемещаются спраиты edge, bounce i 8 go to iwiocm Это скрипт Ярлыки change ж by О спрайтов change у by о Палитра блоков Область скриптов Область спрайтов Белое поле справа вверху - это Сцена, на ней будет происходить всё действие. По сцене будут перемещаться Спрайты (игровые персонажи). При создании но- вого проекта на сцене всего один спрайт - Стрелка. Ваш проект может включать в себя множество спрайтов, например космический корабль, астероиды, инопла- нетяне. В списке спрайтов вы можете увидеть ярлыки всех спрайтов, которые есть в вашем проекте, и щёлкать их, чтобы переключаться между ними. Список спрай- тов находится под сценой. По центру - Область скриптов, где мы будем собирать Скрипты проекта из разноцветных блоков, которые хранятся в Палитре блоков, расположенной сле- ва. Скрипты (от англ, scripts) - это части, из которых состоит программа. У каждого спрайта они собственные. Строка меню в верхней части экрана используется для управления вашими проектами.
Настройка интерфейса 9 НАСТРОЙКА ИНТЕРФЕЙСА По умолчанию в Snap4Arduino английский язык интерфейса. Однако его можно переключить на один из 39 языков. Переключите интерфейс на Русский Poiski О untitled © Language Zoom blocks... Fade blocks... Stage size... Microphone resolution.. Portugal Portugues ao Brasil Русский ovenscma SlovenCma Вы также можете изменить масштаб отображения блоков на экране монитора. □ Сохранять линии пера в векторном виде □ Case sensitivity_______________ ' □ Расширенная форма диалоо ввода □ Простые заголовки блоков □ Звук щелчка □ Плоский дизайн I □ Защищенность скрипта в многопот, Если обычный интерфейс Snap4Arduino вам не нравится, то его мож- но изменить на Flat design (плоский дизайн). Установите галочку напротив этого пункта меню. ® Язык.,. Масштаб блоков кода... Обесцвечивание блоков.. Размер сцены... Разрешение микрофона.. □ JavaScript extensions □ Extension blocks □ Использование бегунков ввода □ Режим Турбо □ Отображение шагов выполнения □ Сохранять линии пера в векторном виде □ Case sensitivity □ Расширенная форма диалога ввода □ Простые заголовки блоков □ Звук щелчка И Плоский дизайн ипспеск for default GUI design
Теперь Snap4Arduino выглядит почти как Scratch 3? # Неозаглавленньн I Движете | Внешность |3ву* Перо Управление 4 Сенсоры Операторы | Переменны* Arduino Spnte </ ДВИЖИМЫЙ 15 ш*|« повернуть ♦. на 15 градусов градусов повернуть на Сфипты Костюмы Звуки Спрайт Sputa SpnteiZj |.Ц.!1..1Ц||Цо|Ь1 перейти в точку случайную точку скользить сек к х оТТо Сц»«а ВЕРСИИ ONLINE И DESKTOP В среде Snap4Arduino можно работать как в режиме офлайн (Desktop version), так и онлайн (Snap4Ardumo online). Для работы в режиме офлайн скачайте с сайта разработчика (https:// snap4arduino.rocks/) бесплатный дистрибутив приложения Snap4Arduino и уста- новите его на своём компьютере (1). Затем подключите к компьютеру плату Arduino и загрузите специальную прошивку firmware (2). Загрузите и установите на ПК приложение Snap4Arduino Загрузите на плату > специальную прошивку которая взаимодействует со Snap4Arduino Наслаждайтесь программированием и конструированием В режиме онлайн можно работать, используя браузеры Chromium, Chrome, Edge. Для этого в браузере необходимо установить расширение Snap4Arduino connector, которое можно бесплатно скачать с сайта разработчика (1), а затем за- грузить на плату Arduino прошивку firmware, как и в случае версии офлайн (2).
Версии Online и Desktop 11 Когда всё готово, нажмите кнопку 0 для начала работы. Установите (Snap4Arduino connector) для взаимодействия браузера с платой Arduino Загрузите на плату специальную прошивку которая взаимодействует со Snap4Arduino Наслаждайтесь программированием и конструированием Обращаем внимание, что названия одних и тех же блоков для русскоязычных версий онлайн и офлайн могут немного отличаться. На изображении ниже пока- заны блоки из вкладка Arduino. Слева для версии офлайн и справа - для версии онлайн. Подключиться к Arduino Отключиться от Arduino Desktop version Подключиться к Aiduino Отключиться от Arduino Online version arduino connected? arduino connected? подключиться к arduino через | Отключиться от arduino I set servo изменить статус разъема серво analog reading изменить статус цифрового разъема ▼ по-часовой стрелке ▼ digital reading изменить статус разъема PWM Между прочим Подробную инструкиию по установке приложения Snap^Arduino можно найти по ссылке https://zip.bhv.ru/9785977519984.zip Если вы уже знакомы со Scratch, то можете переходить к разделу по зна- комству с Arduino, а если нет, то познакомьтесь с основами программирования на Snap4Arduino.
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА SNAP4 ARDUINO ДВИЖЕНИЕ ПО ПРЯМОЙ Сначала научимся перемещать спрайты по сцене Выберите жёлтые блоки Управление. Щёлкните мышью на блоке при нажатии клавиши пробел и, не отпуская кнопку мыши, тяните его в область скриптов. | Движение | Внешность I З’У*' перо Сенсоры Операторы fПеременные Arauino Спрайт •* —* Скрипты Костюмы Звуки при нажатии на при нажатии клавиши пробел при нажатии клавиши пробел Расположите блок в верхней части области скриптов и отпустите кнопку мыши. Затем выберите синие блоки из раздела Движение и вытащите в область скрип- тов блок передвинуть на <© шагов . Перетащите его к первому блоку. В тот момент, когда он захочет к нему прицепиться, появится зелёная полоса. Отпустите кнопку мыши - блок приклеится снизу. Движение | Внешность (Звук Перо Управление Сенсоры Операторы | Переменные Arduino Спрайт 4 дегхнмын Скрипты Костюмы Звуки при нажатии клавиши пробел Получилась программа, состоящая из одного скрипта. при нажатии клавиши пробел передвинуть на <Е> шагов И Нажимайте клавишу <Пробел>, и вы увидите, как Стрелка передвигается вправо - в ту сторону, куда смотрит её кончик.
Задание Замените число 10 на 5 и посмотрите, как изменится перемещение Стрелки. щелкнув на блоке Совет Если Стрелка скроется за краем сиены то вернуть её можно, дважды перейти в точку х С- о непосредственно в пали- тре блоков ВРАЩЕНИЕ Добавьте к имеющемуся скрипту блок повернуть $ на © градусов при нажатии клавиши пробел передвинуть на шагов || повернуть < на градусов Нажимайте клавишу <Пробел>, и вы увидите, как Стрелка вращается против часовой стрелки. Задание Изменяйте значения в блоках в интервале от 1 до 20 и смотрите, как изменится движение Стрелки. Как возвращать исчезнувшую Стрелку в центр сиены, вы уже знаете. ДВИЖЕНИЕ ПО КООРДИНАТАМ Ещё один способ перемещения спрайта - изменение его координат. Коорди- ната X отвечает за горизонтальное перемещение спрайта направо и налево, а ко- ордината Y - за вертикальное перемещение вверх и вниз. Соберите вот такой скрипт. при нажатии клавиши стрелка вправо изменить у на
Совет Аля того чтобы изменить управляющую клавишу в блоке при нажатии клавиши пробел , шёлкните на маленьком треугольнич- ке выпадающего списка и выберите иариант стрелка вправо при нажатии клавиши пробел I 8 9 любая клавиша стрелка вверх стрелка вниз стрелка вправо стрелка влево enter пробел + Нажимайте клавишу <-»> (стрелка вправо) - спрайт будет перемещаться вправо. Его коор- дината X будет изменяться на 5 при каждом нажатии клавиши со стрелкой вправо. изменить х на ОсьХ -5 -4 -3 -2 -1 0 1 2 3 4 5 Соберите следующий скрипт для движения спрайта налево. при нажатии клавиши стрелка вправо изменить х на СЭ При изменении координаты X на отрицательное значение спрайт пе- реместится налево. На следующем рисунке показан результат работы блока изменить х на -1 1 2
Для перемещения спрайтов по верти- кали нужно изменять координату Y На ри- сунке справа показан результат работы изменить у на OcbY При изменении координаты Y на отри- цательное значение спрайт переместится вниз. На рисунке справа показан результат -1 - изменить у на работы блока изменить у на -4 - ОсьУ КООРДИНАТНАЯ ПЛОСКОСТЬ Сцена Snap4Arduino по умолчанию имеет размер 480 пикселов в шири- ну и 360 пикселов в высоту. Центральная точка сцены имеет координаты X = 0 и У = 0. Математически это записывается вот так - (0; 0), где первая цифра - это координата X, а вторая - Y. На рисунке справа по- казана координатная сетка Snap4Arduino с координа- тами различных точек. Как видите, в правой половине сцены координата X всегда больше нуля, и наоборот, в левой половине сцены она меньше нуля. Коор- дината Y больше нуля в верхней половине сцены и меньше нуля в нижней.
БЛОКИ ЦИКЛОВ Для того чтобы повторить какое-либо действие несколько раз подряд, в Snap4Arduino используются блоки циклов непрерывно! Блок повторять Ь- - 4 повторять повторит указанное количество раз те блоки, которые у него и внутри. при нажатии на повторять говорить ЕИРН в течение О сек Например, этот скрипт скажет «Привет!» 10 раз. Блок непрерывно будет постоянно выполнять то, что у него внутри. при на* **ни мл непрерывно |?'“ ? повернуть (► на (В градусов Этот скрипт будет непрерывно вращать спрайт по часовой стрелке до тех пор, пока вы не остановите выполнение проекта, нажав на красный восьми- угольник ф Еще один интересный блок - это цикл с условием. Он выполняется цикличе- ски до тех пор, пока не выполнится условие в синем блоке. при •».»*.» I и и н < л г\ ; Z ' повторять пока не касается курсор мышки ? noin’piiyib * на О Например, этот скрипт будет вращать спрайт по часовой стрелке до тех пор, пока его не коснётся курсор мыши.
УСЛОВНЫЕ БЛОКИ Для проверки выполнения различных условий применяются условные блоки. Один из условных блоков - это знакомый вам блок повторять пока неД Есть ещё два условных блока Условные блоки выполняют свое содержимое только при выполнении усло- вия, которое записано в поле блока. Например, этот скрипт скажет «Привет!», только если спрайт коснётся курсора мыши. Блок если иначе выполнит первый набор блоков, если условие выполняется, и второй набор блоков, если условие не выполняется. Например, этот скрипт скажет «Привет!», если спрайт касается курсора мыши, и «Пока!», если не касается. СОХРАНЕНИЕ ПРОЕКТОВ В Snap4Arduino есть несколько способов сохранения проектов. Сохранение проектов в браузере Первый, самый ненадежный способ, - сохранение проектов в браузере. Этот способ опасен тем, что при случайной очистке истории браузера все ваши проекты будут удалены. Сохранение проектов в облаке Второй способ - сохранение проектов в облаке. Способ удобен тем, что вы получаете доступ к своим проектам с любого компьютера, подключенного к Ин- тернету. Вы также можете поделиться своим проектом, размещённым в облаке
(расшарить его). Для получения возможности сохранять проекты в облаке необ- ходимо зарегистрироваться. Для этого нажмите кнопку с облачком в строке меню и выберите пуню Signup. || О # \ Untitled Управ;» Войти в аккаунт Сенсор Зарегистрироваться... Сбросить пароль.. Операг{ выслать ещё раз письмо для подтверждения e-mail... ЛеремеЙОТ* VUBWIIIB ШЛЯНИИ JWJP.W MWrTBI После регистрации необ- ходимо войти в систему, и тог- да появится возможность со- хранения проектов в облаке. Экспорт проектов Третий способ - экспорт проектов на свой компьютер в форматеXML. Нажми- те кнопку с бумажным листком и выберите пункт Экспортировать проект. # \ Untitled Notes..._______________ Новый проект Открыть.. Сохранить Сохранить как... Импорт... экспортировать проект AN ЛО AS кимый CiUbl Ibukw зеке project data as XML j to your downloads folder I Сводка экспортируемых данных... Сохраните проект в папку на своем компьютере. Подробнее о среде програм- мирования Snap! вы можете про- читать в моей книге «Знакомь- тесь, это Snap!». Hide blocks Совет Я рекомендую сохранять все проекты в облако не реже чем один раз в 10 минут и экспортировать их по окончании работы. Обратите внимание! При загрузке нового проекта Snap4Arduino не предлагает сохранять текущий проект! Помните об этом и сохраняйте проект как можно чаше. ЗНАКОМСТВО С ПЛАТОЙ ARDUINO Плата Arduino UNO сконструирована на базе микроконтроллера ATmega328 (это самая большая микросхема на плате). Далее для краткости будем называть её просто Arduino. Питание на плату подаётся либо от компьютера по проводу USB, либо от отдельного разъёма. Напряжение питания - 5 вольт (записывается так - 5 В).
Со Между прочим <S / В книге описаны эксперименты на базе популярной платы Arduino Vp \ Uno R3 (2011). В 2023 году поянился новый релиз этой платы — \Arduino Uno R4. Приобрести эти платы Arduino, а также дополни- тельные датчики и модули для экспериментов можно в интернет- магазине БХВ-Электроника (https://bhv.ru/elements/). Плата Arduino имеет 14 цифровых выводов (пинов) и б аналоговых вы- водов. Цифровые выводы сообщают пла- те Arduino о поданном на них напря- жении. Эти пины различают только два вида напряжения - высокий уровень (5 вольт) и низкий уровень (0 вольт). ЦИФРОВЫЕ ПИНЫ АНАЛОГОВЫЕ ПИНЫ Для получения информации об уровне напряжения используется блок цифровое значение Если на цифровой пин 2 подать высокий уровень напряжения (5 вольт), это означает, что Snap4Arduino получит информацию о состоянии вывода истина (true). В программировании принято говорить, что блок Desktop versioi Online version digital reading цифровое значение вернёт значение истина. Далее мы так и будем писать: «Блок вернет значение ис- тина (или ложь)». Desktop version digital reading Online version цифровое значение истина Совет △ля того чтобы увидеть возвращаемое блоком значение, дважды щелкните на нём. Если на цифровой пин 2 подать низкий уровень напряжения (0 вольт), то это означает, что Snap4Arduino получит информацию о состоянии вывода ложь (false).
Desktop versior digital reading Online version цифровое значение Аналоговые выводы также сообщают плате Arduino о поданном на них напря- жении, но в отличие от цифровых выводов, они могут измерить его уровень. Для получения информации об уровне напряжения используется блок analog reading При напряжении на пине А2 равном 0 вольт считанное значение будет равно 0. Desktop version analog reading Online version аналоговое значение При напряжении на пине равном 5 вольт считанное значение будет равно 1023. Desktop version analog reading Online version аналоговое значение Помимо считывания сигналов с цифровых и аналоговых пинов, Arduino мо- жет выдавать на цифровые пины различные сигналы (на аналоговые пины выдать сигнал нельзя). Если в программе установить значение цифрового пина истина (true), то на нём появится высокий уровень напряжения (5 вольт), а если установить значение ложь (false), то появится низкий уровень напряжения (0 вольт). Для установки на цифровом пине высокого уровня напряжения 5 вольт ис- пользуется блок set digital pin frP to V с зелёной галочкой. Для установки на цифровом пине низкого уровня напряжения 0 вольт исполь- зуется блок set digital pin ФР to ф * с красным крестиком. Также имеется возможность плавно регулировать уровень выходного напря- жения на некоторых цифровых пинах в диапазоне от 0 до 5 вольт. Для этого ис- пользуется блок Все эти блоки управления платой Arduino вы скоро начнёте использовать для создания проектов, будет интересно! Подробнее о плате Arduino вы можете прочитать в книге Джереми Блума «Изучаем Arduino: инструменты и методы технического волшебства».
Состав набора для работы с книгой 21 СОСТАВ НАБОРА ДЛЯ РАБОТЫ С КНИГОЙ Плата Arduino Uno R3,1 шт. Макетная плата 400.1 шт. Акриловая платформа. 1 шт. ИК-приёмник. 1 шт, Фоторезистор, 1 шт Красные светодиоды, 5 шт. Жёлтые светодиоды, 5 шт. Зеленые светодиоды. 5 шт. Термистор ТМР36,1 шт. Кнопки диаметром 12 мм, 2 шт. Датчик звука, 1 шт. Резисторы 10 кОм 1 Вт, 4 шт Резисторы 220 Ом 1 Вт, 10 шт. Провода, 20 шт. Активный зуммер, 1 шт. Мультиметр, 1 шт.
УСТАНОВКА МАКЕТНОЙ ПЛАТЫ Для удобства в работе макетную плату лучше всего приклеить на подложку рядом с платой Arduino. Новая акриловая подложка обычно обклеена бумагой с двух сторон. Удалите бумагу и установите плату Arduino на шести- гранные стоечки. Макетную плату приклейте с помощью двустороннего скотча. ЗНАКОМСТВО С МАКЕТНОЙ ПЛАТОЙ Макетная плата создана для того, чтобы устанавливать в неё электронные ком- поненты и электрически соединять их друг с другом без пайки. Все пятёрки отверстий на макетной плате, помеченные как А, В, С, D, Е, соединены вместе. Если установить провод в оранжевое отверстие, то он бу- дет электрически соединён с четырьмя проводами, установ- ленными в желтые отверстия. Соседние ряды изолированы друг от друга, поэтому провод, установленный в оранжевое отверстие, не будет соединён с зелёными отверстиями. Всего есть 60 пятёрок отверстий для установки электронных компонентов. Есть также две пары шин питания, обозначен- ных синей и красной полосками К синим отверстиям следует подключать «-» питания (говорят «минус питания», GND - земля), а к красным «+» питания (говорят «плюс питания»). Вот так выглядит макетная плата сза- ди со снятым слоем двустороннего скот- ча. На фотографии очень хорошо видны длинные шины питания и земли, а так- же шинки, соединяющие все отверстия по 5 штук в ряд. Подробнее о макетной плате мож- но прочитать в книге Ю. Винницкого и А. Григорьева «Scratch и Arduino для юных программистов и конструкторов».
ГЛАВА 1 ЦИФРОВЫЕ выходы. МОРГАЕМ ОДНИМ СВЕТОДИОДОМ Перед тем как собрать первую схему на макетной плате, познакомимся с ис- пользуемыми компонентами - с резистором и светодиодом. РЕЗИСТОР Резистор - это электронный компонент, обладающий сопротивлением. " («К Сопротивление измеряется в омах. Резисторы необходимы для ограничения тока, протекающего в цепи. Например, при использовании светодиода последо- вательно с ним всегда устанавливают резистор, чтобы светодиод не перегорел. Ре- зистор можно устанавливать как до светодиода, так и после него. Резисторы бывают разной мощности. Маленькие резисторы имеют мощность 0,125 ватт (записывают - 0,125 Вт), а резисторы, входящие в этот набор, имеют мощность 1 Вт. Мощные резисторы имеют более толстые ножки, поэтому их удоб- нее устанавливать на макетной плате. н:и If
На всех резисторах нанесены цветные полоски, которые обозначают номи- нальное сопротивление. Следующая табличка поможет определить сопротивле- ние резистора по его полоскам. Цвет Первая цифра Вторая цифра Множитель Множитель Точность Черный 0 0 1 10° Коричневый 1 1 10 101 1% Красный 2 2 100 10г 2% Оранжевый 3 3 1 000 10} Желтый 4 4 10 000 ю4 Зеленый 5 5 100 000 105 0,50% Синий 6 6 1000 000 106 0,25% Фиолетовый 7 7 10 000 000 ю7 0,10% Серый 8 8 100 000 000 10» 0,05% Белый 9 9 1 000 000 000 10’ Золотистый 0.1 10-1 5% Серебристый 0.01 10'2 10% Возьмём резистор номиналом 10 кОм, который входит в набор. Первые три полоски: коричневая, чёрная и чёрная, обозначают первые три цифры номинала резистора. Это соответственно 1,0 и 0. Красная полоска - это («(( множитель, равный 100. Запишем это в виде примера: 100 • 100 = 10 000 Ом = 10 • 1000 Ом = 10 кОм. Номинал резистора 10 кОм (килоом). На электрической принципиальной схеме резистор обозначается вот так: в Европе в США Для определения номинального сопротивления ре- зистора можно использовать мультиметр в режиме Q. Д Обратите внимание! Измеренное сопротивление резистора 9,96 кОм немного отличается от номи- нального сопротивления в 10 кОм.
Подробнее о резисторах вы можете узнать в книге Чарльза Платта «Энцикло- педия электронных компонентов. Том 1. Резисторы, конденсаторы, катушки ин- дуктивности». СВЕТОДИОД Светодиод - электронный компонент, который может излучать свет. Светодиоды бывают разных цветов и разной яркости. У светодиода две ножки: та, которая короче, на- зывается катод, она подключается к минусу; а та, которая длиннее, называется анод, она подключается к плюсу. Анод(+) срез на корпусе Катод (-) короткая ножка На электрической принципиальной схеме светодиод обозначается вот так: Для того чтобы проверить исправность свето- диода, можно использовать мультиметр в режиме тестирования диодов. Если светодиод исправен, то при подключении катода к черному щупу, а анода (длинной ножки) - к красному светодиод будет слабо светиться (некото- рые виды мультиметров при этом показывают значе- ние около 1500). Обратите внимание! При использовании светодиода надо обязательно последователь- но с ним подключать резистор. Без последовательного резистора светодиод выйдет из строя!
ЗНАКОМСТВО С ЦИФРОВЫМИ ПИНАМИ На плате Arduino есть 14 цифровых пинов, отмеченных словом DIGITAL (циф- ровой), они пронумерованы от 0 до 13. Цифровые пины могут работать как вы- ходы и как входы. 14 цифровых пинов отмечены словом DlGlTALn пронумерованы от 0 до 13 В режиме выходов цифровые пины Arduino могут программно изменять своё напряжение. Для этого используется блок set digital pm При использовании следующего блока на пине 8 будет установлено напряже- ние 5 В. set digital pm СР to При использовании следующего блока на пине 8 будет установлено напряже- ние О В. set digital pm СР to ф О работе цифровых пинов в режиме входов вы узнаете в глазе 4. СБОРКА СХЕМЫ Теперь можно собрать первую схему со светодиодом и резистором и запро- граммировать Arduino, чтобы светодиод непрерывно моргал. Как вы уже знаете, без резистора светодиод подключать нельзя. Соберите пер- вую схему, подключив последовательно светодиод и резистор с подачей питания от пина 9.
На этом рисунке приведена электрическая принципиальная схема соеди- нений. LED1 На следующем рисунке приведена наглядная схема соединений. Используйте красный светодиод и резистор номиналом 220 Ом. Давайте проследим путь тока от пина 9 до пина GND Сначала ток потечёт от пина 9 по жёлтому проводу к аноду свето- диода, затем через светодиод и резистор к синей шине, а от неё через черный про- вод к пину GND. Обратите внимание! Сеетодиод загорится только в том случае, если на пин 9 будет подан высокий уровень напряжения (S вольт). Аля того чтобы подать его, необ- ходимо запрограммировать Arduino. ПРОГРАММИРОВАНИЕ ARDUINO Соедините Arduino с компьютером, запустите Snap4Arduino и подключитесь к Arduino через СОМ-порт. Arduino иться от Art одключиться м Arduino select a port arduino connect* COM1 COM3
Соберите следующий скрипт для единственного спрайта - для стрелки. Циф- ровой пин 9 будет работать как выход. при нажатии на непрерывно При выполнении этого скрипта стрелка будет неподвижно стоять на месте и управлять статусом цифрового разъёма 9 - уровнем напряжения на нём. Для этого будет использован блок Если в этом блоке щелкнуть на поле то оно переключится на зелёную га- лочку , которая означает истина При выполнении такого блока напряжение на пине станет равным 5 В. Если ещё раз щелкнуть на поле с зеленой галочкой , то оно переключится на красный крестик который означает ложь. При выполнении такого блока на- пряжение на пине станет равным О В. Наш скрипт будет поочерёдно подавать на пин 9 напряжения 5 В и О В. При по- даче напряжения 5 В светодиод будет светиться, а при подаче напряжения О В - погаснет. Протестируйте работу скрипта. Нажмите на зеленый флажок - свето- диод должен мигать. Задания Jiti — il \ ) 1. Сделайте так, чтобы светодиод мигал в 2 раза реже. <Vg7> 2. Сделайте так, чтобы светодиод мигал в 2 раза чаше. 3. Переключите управление светодиодом на пин 8. 4. Замените резистор с 22С Ом на 1 кОм. Б. Замените резистор на 10 кОм.
ГЛАВА 2 цифровые выходы, бегущий огонек. новогодняя гирлянда Соберем схему с девятью светодиодами и на ее основе создадим три проекта, бегущий огонек и две разные новогодние гирлянды. СБОРКА СХЕМЫ Используйте три красных, три жёлтых и три зелёных светодиода и девять рези- сторов номиналом 220 Ом.
БЕГУЩИЙ ОГОНЁК Соедините Arduino с компьютером, запустите Snap4Arduino и подключитесь к Arduino через СОМ -порт. ждать С 3 сек. ждать СЗ сек. ждать 03 сек. ждать С 3 сек. ждать С 3 сек. ждать 0 3 сек. Соберите следующий скрипт для единственного спрайта - для стрелки. Цифровые пины со второго по десятый будут работать как выходы. Этот скрипт поочередно подает высокий и низкий уровни напряжения на пины со второго по десятый. При подаче напряжения 5 В светодиоды будут светиться, а при подаче напряжения 0 В - гаснуть. Сохраните проект и протестируйте его работу. Свето- диоды должны включаться поочередно. : ▼ ждать С 3 сек. ждать 0 3 сек. S'- ждать 0.3 сек. ждать С 3 сек. 10 v ждать 0 3 сек. ждать СЗ сек. Задания 1. Замедлите скорость бегущего огонька в 2 рава. 2. Ускорьте скорость бегущего огонька в 3 раза. 3. Измените направление бега огонька не от второго пина к десятому, а от де- сятого пина ко второму.
БЕГУЩИЙ ОГОНЁК С СОБСТВЕННЫМ БЛОКОМ Обратите внимание, в предыдущем проекте использовано много повторяю- щихся однотипных блоков изменения статуса цифровых пинов. Намётанный глаз сразу определит, что мы 9 раз изменяли статусы цифровых разъёмов, при этом изменялся только номер разъема, а сами блоки были одинаковыми! Это означает, что из этих однотипных блоков можно создать собственный новый блок, который будет включать и выключать светодиод. Мы должны лишь сообщить ему, к какому пину он подключён. Для того чтобы создать новый блок, вы- берите раздел Прочее в палитре блоков и на- жмите кнопку Новый блок. Выберите тип блока Arduino, введите имя блока Моргнуть, выберите тип блока Команда и нажмите кнопку ОК. Новый блок Г Движение f Внешность | Звук Перо Прочее Управление |сенсоры Операторы | Переменные | Списки Arduino Моргнуть Генератор значений I» Предикат • для всех спрайтов только для текущш о спрайта ОК Отменить Появится вот такая заготовка, нажмите на плюсик, чтобы добавить вводимые Введите имя переменной, например Пин, и нажмите кнопку ОК Перемен- ная Пин будет использоваться только внутри этого блока и не будет видна другим скриптам проекта.
Редактор блоков Определить имя вводимых данных Пин| Заголовок текста дБ имя вводимых данных ОК Отменить Переменная появится внутри блока. Если еще раз нажать на плюсик, то можно добавить еще одну переменную. Теперь соберите следующий скрипт для блока ). Нажмите на пере- менную Пин и тяните её в блок ▼ , при этом появится новый овальчик переменной. Нажмите кнопку ОК, в палитре блоков в разделе Arduino появится новый блок. Ок применит» отменит» Соберите следующий скрипт с использованием нового блока , но сначала создайте пере- менную Пин, для этого нажмите на кнопку Объ- явить переменную
Введите имя переменной и нажмите на кнопку ОК • пли •с«*слр»й’,ов толыо дгя т«кулего спр»йт» ОК Отменить б Обратите внимание! Эта переменная имеет такое же имя, как и переменная, использованная ннутри блока Моргнуть . Однако это две разные переменные. Переменная, созданная в палитре блоков, видна всем скриптам проекта, а переменная, созданная ннутри блока Моргнуть , видна только внутри это- при нажатии на установить Пин з» непрерывно повторять 9 2 установить Пин знач. го блока. При запуске проекта переменной Пин будет присвоено значение 2. Затем не- прерывно будет исполняться цикл, повторяющийся 9 раз. В этом цикле будет мор- гать очередной светодиод, и номер пина будет увеличиваться на 1. После того как моргнут все светодиоды, подключённые к пинам от второго до десятого, номер пина снова станет вторым, и светодиоды продолжат моргать от второго до деся- того. Сохраните проект и протестируйте его работу. Задания 2 Замедлите скорость бегущего огонька в 2 раза. Ускорьте скорость бегущего огонька в 3 раза 3. Измените направление бега огонька не от второго пина к деся- тому, а от десятого пина ко второму. 4. Измените схему и программу так, чтобы светодиоды были под- ключены от 3 пина до II.
ПЕРВАЯ ГИРЛЯНДА Теперь запрограммируем Arduino так, чтобы сначала включались все зеленые светодиоды, затем все жёлтые, а потом все красные. Это будет похоже на ново- годнюю гирлянду, В этом проекте мы тоже создадим собственный блок. Создайте новый проект, выберите раздел Прочее в палитре блоков и нажмите кнопку Новый блок. Выберите тип блока Arduino, введите имя блока Моргнуть тремя, выберите тип блока Команда и нажмите кнопку ОК Нажмите на плюсик и добавьте переменную Пин, которая будет использовать- ся только внутри этого блока. Соберите следующий скрипт для блока Моргнуть тремя Соберите следующий скрипт для единственного спрайта стрелки. <Ж QTwmrtb при нажатии на ||g| установить Пин знач. непрерывно повторять 3 I Моргнуть тремя Пин J изменить Пин на о установить Пин знач. [ Скрипт очень похож на скрипт из предыдущего проекта. При запуске проекта переменной Пин будет присвоено значение 2. Затем не- прерывно будет исполняться цикл, повторяющийся 3 раза. В этом цикле будет моргать очередная тройка светодиодов, и номер первого пина станет увеличи- ваться на 1. Если переменная Пин будет равна 2, будут включены зеленые светодиоды, подключённые к пинам 2, 5 и 8, а через 0,3 секунды выключены.
Если переменная Пин будет равна 3, то моргнут жёлтые светодиоды, а если переменная Пин равна 4 - красные. Сохраните проект и протестируйте его работу. Задания 1. Сделайте так, чтобы сначала включались красные светодиоды, затем жёлтые, а потом зеленые. 2. Замедлите скорость моргания гирлянды в 2 раза. 3. Ускорьте скорость моргания гирлянды в 3 раза. ВТОРАЯ ГИРЛЯНДА Теперь запрограммируем Arduino так, чтобы сначала включались все чётные светодиоды, а потом все нечётные. Для этого нам понадобятся два собственных блока. Создайте новый проект, выберите раздел Прочее в палитре блоков и нажмите кнопку Новый блок Выберите тип блока Arduino, введите имя блока Моргаем чётными, выберите тип бло- ка Команда и нажмите кнопку ОК Создавать переменную в этом блоке не нуж- но. Соберите следующий скрипт для блока юроем четными ’ При использовании этого скрипта высокий уровень напряжения будет подан на пины 2,4, 6, 8, 10, а затем через 0,3 секунды будет подан низ- кий уровень напряжения. Все чётные светодиоды моргнут. дк пртммп* <ли»»вт»
По аналогии создайте ещё один блок Моргаем нечетными и соберите для него вот такой скрипт: ОК Применить Отменить При использовании этого скрипта высокий уровень напряжения будет подан на пины 3, 5, 7, 9, а затем через 0,3 секунды будет подан низкии уровень напряжения. Все нечётные све- тодиоды моргнут. Соберите следующий скрипт для стрелки. при нажатии на а непрерывно Морг аем четными | Моргаем нечетными Этот скрипт будет просто поочерёдно вклю- чать и выключать чётные и нечётные свето- диоды. Задания Ускорьте в 3 раза скорость моргания чётных и нечётных свето- диодов. Сделайте так, чтобы когда четные светодиоды выключаются, то сразу включаются нечётные, и наоборот. 3. Придумайте и запрограммируйте собственную гирлянду.
ГЛАВА 3 ЦИФРОВЫЕ выходы. ЗУММЕР СИГНАЛ SOS В этой главе мы соберем схему с активным зуммером и передадим простей- ший сигнал SOS, используя азбуку Морзе. ЗУММЕР Зуммер (от немецкого слова summer - «жужжать») - это электронный ком- понент, который издаёт звук при подаче на него высокого уровня напряжения 5 В. При подключении зуммера следует соблюдать полярность. Положительный вы- вод (обычно он помечен символом «+») следует подключать к цифровым пинам Arduino, отрицательный вывод - к земле (GND). На электрической принципиальной схеме зуммер обозначается вот так: Для проверки исправности зуммера его можно подключить напря- мую к источнику тока с напряжением 5 В. Исправный зуммер должен пищать. СБОРКА СХЕМЫ Для подключения зуммера к Arduino нужно собрать вот такую схему. На следующем рисунке приведена наглядная схема соединений.
Давайте проследим путь тока от пина 2 до пина GND. Сначала ток поте- чёт от пина 2 по жёлтому проводу к по- ложительному выводу зуммера, затем через зуммер по черному проводу к си- ней шине, а от нее - через черный про- вод к пину GND. Подробнее о зуммере вы можете узнать в книге Чарльза Платта «Энци- клопедия электронных компонентов. Том 1. Резисторы, конденсаторы, ка- тушки индуктивности». Обратите внимание! Зуммер будет пишать только в том случае, если на пин 2 будет по- дан высокий уровень напряжения 5 В. Для того чтобы подать его, необходимо запрограммировать Arduino. Подробнее о зуммере вы можете узнать в книге Чарльза Платта «Энциклопе- дия электронных компонентов. Том 1. Резисторы, конденсаторы, катушки индук- тивности». ПРОГРАММИРОВАНИЕ ARDUINO Соедините Arduino с компьютером, запустите Snap4Arduino и подключитесь к Arduino через СОМ порт. рдключиться к Arduino select a port эчиться от Аг< СОМ1 COM3
Сначала создадим два собственных блока. Блок будет издавать корот- кой писк, а блок - длинный. Выберите раздел Прочее в палитре бло- ков и нажмите кнопку Новый блок. Выберите тип блока Arduino, введите имя блока Точка, выберите тип блока Команда и нажмите кнопку ОК. Создавать пере- менную в этом блоке не нужно. Соберите следующий скрипт для блока + t. О* Приммить Опжппъ Теперь создайте собственный блок + +. У него будет вот такой скрипт: ОК Пряшшль Отькиггъ /7 Сигнал SOS означает Save Our Souls, что в переводе с ан- глийского означает «Спасите наши души». SOS передаётся аз- букой Морзе следующим образом: сначала передаются три точки (короткие сигналы), обозначающие букву S, потом три тире (длинные сигналы), обозначающие букву О, а затем снова три точки. Для того чтобы запрограммировать сигнал SOS, соберите спрайту стрелки следующий скрипт с использованием новых блоков. Сохраните проект и протестируйте его работу.
Задания При выполнении заданий используйте таблииу с колами Морзе. Создайте проекты которые передадут азбукой Морзе следующие фразы. Вместо пробелов используйте блок ждать ** секунду 1 Привет. 2 С днем рождения. 3 . Проект готов.
ГЛАВА 4 ЦИФРОВЫЕ ВХОДЫ. УПРАВЛЕНИЕ ЗУММЕРОМ с помощью кнопки ЗНАКОМСТВО С ЦИФРОВЫМИ ВХОДАМИ Вы уже знаете, на плате Arduino есть 14 цифровых пинов, которые работают в двух режимах. 14 цифровых пинов могут работать в режиме цифрового /Ч ОВ входа yj 5В или цифрового выхода С режимом цифровых выходов вы познакомились в главе 1, а сейчас позна- комитесь с режимом цифровых входов. В режиме цифровых входов плата Arduino способна измерять уровень напря- жения на пинах, различая только высокий (5 В) и низкии (О В) уровни напряже- ния. Изменяя напряжение на пинах, мы сообщаем плате Arduino о том, что про- исходит в окружающем мире, о нажатии на кнопки и о срабатывании различных датчиков Другого способа «почувствовать» то, что происходит вокруг, у платы Arduino нет.
Напомню ещё раз: если подать на вывод 2 напряжение 5 В, то плата поймёт, что это высокий уровень напряжения. При этом блок digital reading нёт значение истина digital reading Если податьна вывод 2 напряженнее В, подключивегокпинубМО, то плата пой- мёт, что подан низкий уровень напряжения. При этом блок digital reading вернёт значение ложь digital reading Подавать высокий и низкий уровень напряжения на пины мы будем с по- мощью кнопок и цифровых датчиков. ЗНАКОМСТВО С КНОПКОЙ Кнопка - это электронный компонент, который позволяет замыкать и размы- кать электрическую цепь. При нажатой кнопке цепь замыкается, и ток свободно протекает через кнопку к тем элементам, которые установ- лены после неё. На электрической схеме кнопка изображается вот так: Проверить исправность кнопки можно с помощью мультиметра. Переключи- те его в режим прозвонки и коснитесь выводов кнопки. Если в мультиметре нет режима прозвонки, то прозванивайте в режиме тестирования диодов
Если кнопка не нажата, то будет тишина, а если вы нажмёте на неё, то мульти- метр запищит, ведь у него внутри установлен зуммер! Подробнее о кнопках вы можете узнать в книге Чарльза Платта «Энциклопе- дия электронных компонентов Том 1. Резисторы, конденсаторы, катушки индук- тивности». ТЕСТ СХЕМЫ С КНОПКОЙ Для того чтобы протестировать ввод цифро- _____________ 1 ___।__ 2 вых сигналов, соберите на макетной плате вот та- Pin2 У—• S1 •---------Q кую схему: На следующем рисунке приведена наглядная схема соединении. Запустите Snap4Arduino и соедините Arduino со спрайтом стрелки через СОМ- порт.
Соберите следующий скрипт. Цифровой пин 2 будет работать как вход. при нажатии на непргрыпио 18 При нажатии на кнопку спрайт будет говорить значение, считанное платой с цифрового пина (ложь или истина). Нажмите на кнопку - спрайт скажет истина, так как через нажатую кнопку на пин 2 будет подано напряжение 5 В Отпустите кнопку. Спрайт не скажет ложь, его будет «колба- сить», и он будет непрерывно изменять свое значение. Это происходит из-за того, что провод, подключенный к пину 2, при ненажа- той кнопке превращается в антенну, которая торчит из второго пина и не соединя- ется ни с каким напряжением - ни с О В, ни с 5 В. Эта антенна не подает на второй вывод никакого полезного сигнала. Из-за большого количества электроприборов в наших квартирах появляется повышен- ный уровень электромагнитного поля, которое «наводит» на антенне напряжение, хаотически изменяющееся от 0 до 5 В. Именно поэтому значение аналогового пина 2 непрерывно изменяется с истина на ложь и обратно, а наш спрайт так «кол- басит», и он путается в показаниях. Для получения устойчивого значения ложь при отпущенной кнопке необходи- мо соединить пин 2 с напряжением О В (с GND), когда кнопка не нажата. +5В Q R1
Соберите следующую схему. Посмотрите на неё очень внимательно: провод не висит в воздухе, как антенна, а нием О В (с GND). Теперь при отпущенной и спрайт будет «говорить» ложь. если кнопка не нажата, то теперь жёлтый через резистор соединяется с напряже- кнопке на пине 2 будет напряжение О В, УПРАВЛЕНИЕ ЗУММЕРОМ С ПОМОЩЬЮ ОДНОЙ КНОПКИ Давайте соберём схему с зуммером и кнопкой и запрограммируем Arduino так, чтобы зуммер пищал при нажатой кнопке и молчал при отпущенной.
Соберите следующую схему. +5В© При сборке схемы используйте резистор номиналом 10 кОм. Запустите Snap4Ardumo и соедините Arduino со спрайтом стрелки через СОМ- порт. Соберите следующий скрипт. Обратите внимание, цифровой пин 12 работает как вход, а цифровой пин 7 как выход.
При запуске проекта будет непрерывно считываться цифровое значение пина 12. Для этого используется блок digital reading 1 Если кнопка не нажата, то на пине 12 низкий уровень напряжения и блок digital reading вернёт значение ложь Соответственно статус цифрового разъ- ёма 7 изменится на ложь, и на нем будет низкий уровень напряжения, зуммер будет молчать. digital reading л Если нажать на кнопку, то на пине 12 появится высокий уровень напряжения вернёт значение истина. Соответственно статус цифрового разъема 7 изменится на истина, на нем будет высокий уровень напряжения (5 В), и зуммер запищит. Сохраните проект и протестируйте его работу. Задания 1. Подключите кнопку к пину 11 и внесите соответствующее изме- нение в скрипт. 2. Подключите зуммер к пину 5 и внесите соответствующее изме- нение в скрипт 3. Сделайте так, чтобы при нажатой кнопке изменялся цвет спрайта стрелки.
ГЛАВА 5 ИГРА «КЛИПЕР» Давайте создадим игру «Кликер», в которой надо постараться за 10 секунд на- жать на кнопку максимальное количество раз. СБОРКА СХЕМЫ Соберите следующую схему с кноп- кой и резистором Как обычно, используйте резистор номиналом 10 кОм. +5В0
ПРОГРАММИРОВАНИЕ ARDUINO Запустите 5nap4Arduino и соедините Arduino со спрайтом стрелки через СОМ- порт Создайте переменные Счет и Результат. Перо Прочее Переменные Arduino Объявить переменную Удалить переменную Результат^ Гсчет д|И111 Соберите программу из двух скриптов. Обратите внимание, в первом скрипте цифровой пин 12 работает как вход. при нажатии на Щ установить Счет знач. переустановить таймер >< г .... I При запуске проекта переменная Счет будет обнулена, а таймер перезапущен. Затем скрипт непрерывно будет ожидать нажатия на кнопку, то есть будет ждать, когда напряжение на пине 12 станет равно 5 В, и блок digital reading 1 вернет зна- чение истина После нажатия на кнопку переменная Счет увеличит своё значение на 1, затем скрипт будет ждать, когда кнопку отпустят. Если второй блок ждать до
не использовать, то после однократного нажатия на кнопку значение переменной Счет увеличится гораздо больше чем на 1. Нам же необходимо точно подсчитать количество нажатии. Соберите второй скрипт. При запуске проекта этот скрипт будет ждать того момента, когда значение таймера станет больше 10. Это будет означать, что прошло 10 секунд с момента запуска проекта, и можно подводить результат. Переменной Результат будет при- своено значение переменной Счет, а затем блок говорить сообщит о результате игрока, и выполнение проекта завершится. Сохраните проект и протестируйте. Постарайтесь нащелкать как можно боль- ше! Мой рекорд 55! Задания Увеличьте время игры до 1Б секунд. Подключите кнопку к пину 10 и внесите соответствующие изме- нения в скрипты. 3. Сделайте так, чтобы при наборе игроком более 30 очков скрипт говорил бы ему, что это отличный результат.
ГЛАВА 6 ИГРА «КЛИКЕР» С ЗАПРЕЩАЮЩИМ СВЕТОДИОДОМ Давайте усложним игру «Кликер»: добавим запрещающий светодиод. Когда он светится, на кнопку нажимать нельзя! За каждое ошибочное нажатие - штраф -5 очков. СБОРКА СХЕМЫ Соберите следующую схему с кнопкой и светодиодом. Резистор кнопки по-прежнему имеет номинал 10 кОм. Резистор светодиода, как обычно, 220 Ом. +5В О LED1
ПРОГРАММИРУЕМ ARDUINO Загрузите проект из прошлой главы. Нам будет нужно изменить первый скрипт, добавить скрипт управления светодиодом. Скрипт объявления результата оста- нется без изменений. Не забудьте соединить Arduino со спрайтом стрелки через СОМ -порт. Измените первый скрипт, он должен стать вот таким. при нажатии на установить Счет знач. Q М установить Запрещение знач. Нет При запуске проекта обнулится пе- ременная Счет, а переменной Запре- щение будет присвоено значение Нет. Затем статус цифрового разъема 4 из- set digitalр.п<В-о» переустановить таймер непрерывно менится на ложь, светодиод светиться ждать до не будет. Таймер будет перезапущен. Скрипт непрерывно будет ожидать нажатия на кнопку, т. е. будет ждать, если Запрещение когда напряжение на пине 12 станет иначе изменить Счет на ждать до Есть f ► изменить Счет равно 5 В, и блок [digital reading j вер- нёт значение истина После нажатия на кнопку запустится блок если иначе проверит, есть ли запрещение? Если значение переменной Запрещение рав- но Есть, то счёт уменьшится на 5 очков, а если запрещения нет, то счет увеличится на 1 очко. Затем скрипт будет ждать, когда кнопку отпустят. Второй скрипт стрелки, управляющий светодиодами: при нажатии на непрерывно ждать 1.1 до 3.1 сек. установить Запрещение знач. Есть ю от 1.1 3.1 сек. установить Запрещение знач. Нет
При запуске проекта светодиод, подключённый к пину 4, будет включаться и выключаться через случайные промежутки времени. Одновременно с вклю- чением светодиода переменной Запрещение будет присваиваться значение Есть, а одновременно с выключением - значение Нет. Светодиод будет включаться на время от 1,1 до 3,1 секунд и выключаться на такое же время. В третьем скрипте измените только значение в блоке ждать до , теперь игра бу- дет продолжаться 20 секунд. Проект готов! Сохраните его и протестируйте. Будьте очень внимательны, пом- ните, что раньше чем через секунду выключенный светодиод не включится! Задания 1. Увеличьте штраф на ошибку с S до 7 очков. 2 Добавьте печальный звук, который просигнализирует о совер- шении ошибки. 3. Изменяйте диапазоны включения и выключения светодиода на наше усмотрение и посмотрите, как изменится геймплей. 4. Увеличьте продолжительность игры до 30 секунд
ГЛАВА 7 ЦИФРОВЫЕ входы. УПРАВЛЕНИЕ с помощью одной кнопки. ИГРА «УСПЕЙ В БДРБЕРШОП» Жизни 54 В прошлых главах мы познакомились с цифровыми выводами платы Arduino, научились управлять зуммером и свето- диодами. В этой главе мы познакомимся с вводом цифровых сигналов и сделаем простейшую игру-раннер «Успей в бар- бершоп». Валера должен успеть попасть в барбершоп (парикмахерскую для мужчин) до закрытия, чтобы привести бороду в порядок. СБОРКА СХЕМЫ Используйте резистор номиналом 10 кОм.
ПРОГРАММИРОВАНИЕ ИГРЫ «УСПЕЙ В БАРБЕРШОП» Создайте новый проект и импортируйте 7 костюмов Валеры. В О # Безымянный •у Notes..._______ Новый проект Открыть... Сохранить Сохранить как... AN т ЛО кммый AS Импорт.. Экспортировать проект Сводка экспортируемых данных. - сгрузить экспортированный проект или библиотеку блоков. костюм или звук j Экспортировать блоки... Неиспользуемые блоки... Hide blocks... New category... Generate puzzle New scene Add scene...___________________ Библиотеки... Костюмы... Звуки..._______________________ Open from URL... Save, share and get URL... New Arduino translatable project Start a Snap Jr. session Вы можете перемести и бросить с*сдв изображение со своего компьютера Бег 1 Бег 3 Бег 5 jump Бег 2 Бег 4 Бег 6 Создайте ещё два спрайта, 2. раза нажмите кнопку add a new Turtle sprite. создать новый стандартный спрайт i >'^7—ТГ~------------- ® Спрайт Выберите новый спрайт и импортируйте ему костюм камня. Установите центр костюма камня в его левый нижний угол. Set the rotation centerj
Выберите инструмент Set the rotation center и щёлкните в левом нижнем углу камня. Выберите второй спрайт и импортируйте ему костюм Барбершоп.рпд Барбершоп Теперь у нас есть три спрайта. Валера Камень Барберш Теперь выберите спрайт Валеры и соедините с ним плату Arduino через СОМ- порт. Arduino [одключиться к Arduino 1иться от Ап | select a port СОМ1 arduino connect! COM3 Выберите спрайт Валеры и создайте две переменные. [ВремяJ [Жизни^ Затем соберите два собственных пользовательских блока - Прыжок Бег Выберите серый раздел Прочее и нажмите кнопку Новый блок.
Откроется редактор блоков. Новый блок | Движение | Внешность Звук Перо Примет Arduino Управление Сенсоры Операторы | Переменные | С писки Команда отптдт <еее» • для всех спраитоа только для текущего спрайта ОК Отменить Выберите синие блоки т Движение Дпнжошг введите имя блока и нажмите кноп- ку ОК. | Внешность |3вуе |(1ерь Л Прочее Arduino | Управление | Сенсор» Операторы | Переменны* | Списан Команда * для всех слраитов только для текущего спрайта ОК Отменить Соберите скрипт нового блока Бег и нажмите кнопку ОК ОК.. Применить Отменить
Теперь создадим новый блок Прыжок упрммии* ЧС*чсоры O"»S»tpflw | Пво*м«»ма>«- | С"иски Выберите серый раздел Прочее и на- жмите кнопку Новый блок, в редакторе |Лм>е |Пьс-*« Агоило блоков выберите синие блоки 17 Движение введите имя блока и нажмите кнопку ОК Команда > Соберите скрипт нового блока и нажмите кнопку ОК Прыжок • СГ »«<♦» crf4.no« T0CWXC аг»’tK,U»'O сгр»*14 ОК ОТМЕНЯТЬ пот оря 1ь О изменить у на I Этот блок переключит костюм Валеры на jump, а затем 10 раз поднимет его, изменяя координату Y на 2, и опустит на землю, 10 раз изменяя Yна -2. Новые блоки появятся в разделе с синими бло- ок. Поженить Отменить ками I? Движение установить у на границе развернуться [position j хпозиция J у позицияJ направлениеJ Новый 6по« Теперь можно приступать к созданию скриптов. Прыжок Всего у Валеры будет пять скриптов. Вот первый скрипт. нри не переустановить таймер перейти в точку х СО у С установить размер в о h перейти на передний слой I изменить костюм на Бег 2 | При запуске проекта первым делом будет пе- резапущен таймер, который станет отсчитывать время, прошедшее с начала игры. Затем Валера переместится в левый нижний угол сцены, уменьшит размер до 30%, переместит- ся на слой вперёд, сменит свой костюм на Бег-2 и покажется. показаться Примечание В зависимости от расположения центра костюма Валеры может по- требоваться уточнение координат.
Соберите второй скрипт Валеры, который будет считать количество остав- шихся жизней. При запуске проекта переменная Жизни бу- дет установлена в значение 3. Затем непрерыв- но скрипт будет ждать, пока Валера не коснётся камня, при этом значение переменной Жизни будет уменьшено на 1. После этого выполне- ние скрипта будет приостановлено на 1 секунду, чтобы переменная не уменьшилась второй раз. ждать 1 сек. Задание После завершения проекта удалите блок ждать, и вы увидите, как будет уменьшаться переменная Жизни при касании камня. Третий скрипт Валеры сообщит о том, сколько времени продержался игрок. при нажатии на ждать до Жизни о установить Время знач. таймер говорить Я продержался Время секунд * * в течение о сек При запуске проекта скрипт будет ждать до тех пор, пока значение перемен- ной Жизни не станет равно 0. После этого в переменной Время будет сохранено значение встроенной переменной таймер, которая хранит количество секунд, про- шедших с момента обнуления таймера (с момента запуска проекта). Затем скрипт скажет сложную фразу, собранную из трёх частей, например, такую: «Я продержа- лась 10 секунд». После этого выполнение проекта будет остановлено. Четвёртый скрипт Валеры соберите с исполь- зованием собственных блоков Прыжок Бег При запуске проекта этот скрипт непрерывно будет следить за цифровым значением, считанным с пина 2. Если кнопка будет нажата, то цифровое значение будет равно истина, и Валера выполнит
блок Прыжок . Пока кнопка не нажата, цифровое значение, считанное с пина 2, будет равно ложь, и Валера выполнит блок Бег Пятый скрипт нашего бородача непрерывно ждёт, пока он не добежит до барбершопа. Когда это произойдет, то Валера просто спрячется. ' *1 ””" ждать до касается барбершоп ? спрятаться Теперь соберите два скрипта для Камня. Он будет непрерывно создавать сво- их клонов и запускать их в сторону Валеры, который должен перепрыгивать их, чтобы не терять жизни. Первый скрипт Камня уменьшит его раз- мер, спрячет его, повернёт его в направлении 90 градусов и переместит в точку (240; -170). Затем непрерывно будут создаваться клоны Кам- ня с интервалом 2 секунды. при .« 1ИЧ НИИ и,» - усыновить р.пмер II I 1.рм! И Ц указывать в направлении CiJu перейти в точку х у ДНФ С Э I клонировать я* ждать 2 сек. Второй скрипт Камня служит для управления его клонами. когда я создан как клон J и. М.|ГЬ< ч перейти точку х €2> У ....... ♦ I ‘-«'Л ............. удалить лого илома Когда появится новый клон, то он будет перемещён в точку с координатами (240; -170), и затем 240 раз изменит координату X на -2 (поплывёт влево). После этого клон будет удалён. Совет Не забывайте удалять клонов, которые не используются. Snap4Arduino, как и Scratch, будет «тормозить», если количество клонов будет больше 100.
Осталось запрограммировать спрайт Барбершопа, соберите ему вот такой скрипт. при нажатии на установить размер в спрятаться перейти в точку х ждать до таймер -по 20 О указывать в направлении показаться изменить х на говорить Ц? повторять пока ие касается Валера ? :пел'| 1 в течение сек стоп все П При запуске проекта барбершоп изменит свой размер, спрячется, перейдёт в правую часть сцены и повернётся в направлении 90 градусов. Потом Барбершоп будет ждать, пока не пройдёт 20 секунд, после этого он покажется и поплывёт вле- во навстречу счастливому Валере. Затем Барбершоп произнесёт фразу «Успел!» и остановит выполнение проекта. Проект готов, сохраните его и протестируйте. Задания 1. Переключите на плате Arduino сигнал от кнопки с пина 2 на пин 10 и соответствующим образом измените скрипты проекта. 2 Сделайте случайным интервал времени, через которое появля- ется новый клон Камня. 3. Увеличьте в 2 раза скорость перемещения Камня. 4. Добавьте в проект фоновую музыку. Б. Добавьте звук, который будет играть при касании Камня. 6. Добавьте звук, который будет играть при касании Валерой Бар- бершопа.
ГЛАВА 8 ДАТЧИК ИНФРАКРАСНОГО ИЗЛУЧЕНИЯ. ВАЛЕРА С УПРАВЛЕНИЕМ ОТ ТЕЛЕВИЗИОННОГО ПУЛЬТА А теперь давайте немного изменим предыдущий проект и сделаем управле- ние прыжками Валеры от телевизионного пульта. На торце телевизионного пульта установлен инфракрасный светодиод, кото- рый посылает невидимый сигнал телевизору и позволяет управлять им. Телевизор расшифровывает сигнал и «понимает», какая кнопка была нажата. Для управле- ния игровым персонажем мы не будем расшифровывать сигнал пульта, Валера подпрыгнет при получении любого сигнала, управлять им можно будет любой кнопкой на пульте. Совет △ля того чтобы убедиться в работоспособности пульта, посмотри- те на него через фотокамеру мобильного телефона. Инфракрасное излучение не воспринимается глазами, но хорошо воспринимает- ся матрицей телефона. Нажимайте на кнопки пульта, и вы увидите моргание инфракрасного светодиода пульта. ЗНАКОМСТВО С ДАТЧИКОМ ИНФРАКРАСНОГО ИЗЛУЧЕНИЯ Для приема инфракрасного сигнала, переданного пуль- том телевизора, существует специальный электронный ком- понент- датчик инфракрасного излучения. Для удобства использования его обычно устанавлива- ют на маленькой плате с резистором и светодиодом. У этой
маленькой платы три вывода: GND, питание +5 В и сигналь- ный вывод (обычно обозначается S). Датчик инфракрасного излучения является цифровым. Если на него не попадает инфракрасное излучение, то он вы- даёт на сигнальный вывод высокий уровень сигнала + 5 В, а если на него попадёт сигнал от пульта, то на сигнальном выводе будет низкий уровень сигнала О В. СБОРКА СХЕМЫ Установите модуль с датчиком инфра- красного излучения на макетную плату, как показано на рисунке, Соедините со- ответствующие контакты с GND и питани- ем. Выходной сигнал модуля подайте на цифровой пин 2 платы Arduino. ДОРАБОТКА ИГРЫ «УСПЕЙ В БАРБЕРШОП» Загрузите проект из предыдущей главы и внесите в него всего одно измене- ние - поменяйте местами собственные блоки Бег Прыжок и Теперь четвёртый скрипт Валеры должен выглядеть вот так. Прыжок иначе
При запуске проекта, если не нажимать на кнопки пульта, на цифровой пин 2 будет непрерывно поступать высокий уровень сигнала от датчика инфракрас- ного излучения, блок digital reading 2 v будет возвращать значение истина, и Валера будет бежать. Как только вы нажмёте на кнопку пульта, на пин 2 поступит низкии уровень сигнала, блок digital reading 2 ▼ вернёт значение ложь, и Ва- лера подпрыгнет. Проект готов, сохраните его и протестируйте. Задания 1. Переключите на плате Arduino сигнал от кнопки с пина 2 на пин 3 и соответствующим образом измените скрипты проекта. 2. Увеличьте время игры до 40 секунд. 3. Увеличьте количество жизней Валеры до 5.
ГЛАВА 9 ЦИФРОВЫЕ ВХОДЫ. УПРАВЛЕНИЕ С ПОМОЩЬЮ ДВУХ КНОПОК. ИГРА «УСПЕЙ В БАРБЕРШОП» ДЛЯ ДВОИХ Давайте доработаем игру про боро- датого Валеру и сделаем возможность играть в нее вдвоем. Для этого первым делом нужно доработать схему и устано- вить на макетной плате ещё одну кнопку, соединённую с пином 8. ПРОГРАММИРОВАНИЕ ИГРЫ НА ДВОИХ Загрузите игру «Успей в барбершоп» из главы 7. Для того чтобы сделать игру на двоих, следует дублировать все спраи- ты и немного изменить их скрипты. Дублируйте все спрайты проекта, для этого щёлкайте на них правой кнопкой мыши и выбирайте команду продублировать редактировать переименовать продублировать удалить экспорт
У вас должно получиться 6 спрайтов. Валера Камень Барберш Валера(2) Камень® Барберш Теперь нужно изменить фон сцены. Выберите сцену, перейдите на вкладку Backgrounds и удалите старый фон. blue sky редактировать переименовать продублировать удалить экспорт Нажмите на кнопку Нарисовать новый костюм (Paint a new costume). Скрипты Фомы Звуки Пусто / /"п"—’—- бы можете перемести и Ороап» аада итобрмемые со своего wunwiгер» Выберите инструмент Fill a region Выберите зелёный цвет и закрасьте им фон. Затем выберите инструмент Заливка (Filled Rectangle), коричневый цвет
Снизу будет бежать первый Валера, а сверху - его брат-близнец. Скрипты Валеры и камня останутся без изменений. Необходимо внести небольшие изменения в скрипты спрайтов: Барбершоп, Валера (2), Камень (2) и Барбершоп (2). Следует создать новые переменные Жизни 2 и Время 2, а также изменить коор- динаты новых спрайтов, чтобы они находились посередине сцены. Измените скрипт Барбершопа, теперь он должен стать вот таким. установить размер в указывать в направлении спрятаться Перейти в Точку х у -110 90 20 I* ждать до таймер 2 стоп вс* говорить ME ЧП в течение сек Скрипты Валеры (2) должны быть вот такими. Первый скрипт Валеры (2). Изменена координата У и добавлен блок измене- ния эффекта color. при Иа*<»1ии ми nepeyi танонить таймер ЦЦ перейти в точку х ДН-Ь у | установить эффект цвет в установить размер в | перейти на передний слой изменить костюм на Ьет? показаться ИЙИНИИИ 40 140 Второй скрипт Валеры (2). Изменены переменная и имя спрайта.
Третий скрипт Валеры (2). Изменены переменные и последние блоки скрипта. при нажатии на ждать до Жизни 2 установить Время 2 знач. таймер говорить объединить продержался Время 2 секунд 4 ► в течение сек 2 спрятаться стоп все другие мои скрипты Четвёртый скрипт Валеры (2). Изменён номер пина. Пятый скрипт Валеры (2). Изменено имя спрайта. при нажатии на ждать до касается барбершоп ? с п ря т а т ьс я Добавьте новый шестой скрипт Валеры (2). при нажатии на ждать о сек. стол все НИ
Этот скрипт необходим для завершения работы проекта, если количество жиз- ней бородатых друзей станет меньше 1. Если этот скрипт не добавить, то по сце- не будут бегать ребята с количеством жизней менее 1. По-моему, таких называют зомби... Теперь измените скрипты Камня (2). Первый скрипт Камня (2). Изменена только координата Y. при мажа 1 ии на установить размер в Е® cnpuiaii.i я |г: ' \ :, <; указывать в направлении i перейти в точку х фЛф у I • ЮН I оря It, CD I-. клонировать я v ждать 2 сек. Обратите внимание! Скорее всего, вам потребуется изменить координату /спрайта Ка- мень (2), чтобы он не летел по воздуху, а находился на коричневой полосе, обозначающей землю. Второй скрипт Камня (2). когда я создан как клон J о ок а кн ьс я перейти в точку х СМЪ у noiMopwTt, I I изменить x на о О удалить этого клона Изменена только координата У. Сейчас измените скрипт Барбершопа (2).
при нажатии ни 50 установить эффект цвет установить размер в спрятаться 180 75 20 <► перейти в точку х указывать в направлении ждать до таймер показаться повторять пока не касается Валера (2) ? От скрипта Барбершопа он отличается только координатой Y, именем пере- менной и именем спрайта. Также добавлен блок установить эффект color , чтобы барбершоп немного отличался по цвету от конкурентов. Проект готов, сохраните его и протестируйте Позовите друзей и устройте со- ревнования! Задания I. Подключите кнопки к пинам 3 и 9. Внесите соответствующие из- менения в скрипты проекта. 2. Измените игру так, чтобы в ней не использовались переменные Жизни При касании Камня скорость персонажа должна умень- шаться на 10%. Совет Создайте переменные Скорость и Скорость 2.
ГЛАВА 10 АНАЛОГОВЫЕ ВЫХОДЫ. ПЛАВНО ИЗМЕНЯЕМ ЯРКОСТЬ СВЕТОДИОДОВ. НОВОГОДНЯЯ ГИРЛЯНДА В прошлых главах мы познакомились с цифровыми выходами Arduino, кото- рые могут выдавать либо высокий (5 В), либо низкий (О В) уровень напряжения. В этой главе мы познакомимся с аналоговыми пинами Arduino, которые могут из- менять своё напряжение плавно от 0 до 5 В В специальной литературе их называ - ют ШИМ-пинами, мы будем использовать это сокращение для удобства. С помощью ШИМ-пинов можно плавно изменять яркость светодиодов или, например, управлять скоростью вращения электродвигателей. Напряжение на ШИМ-пинах изменяется с помощью to value ске можно выбрать один из шести ШИМ-пинов. раскрывающемся спи- Величина изменения находится в диапазоне от Одо 255. to value 3 напряжение на пине 3 будет установлено в О В. будет установлено в 5 В. г pm св to value 255 pin СВ to value 128 будет установлено в 2,5 В. Таким образом, на любом ШИМ-пине можно установить любое напряжение из диапазона от 0 до 5 В.
Подробнее о ШИМ-пинах вы можете прочитать в книге Юрия Винницкого и Александра Григорьева «Scratch и Arduino для юных программистов и конструк- торов». Обратите внимание! Если установить статус разъема а значение ?ББ, то напряжение на пине снова станет равно О В и достигнет напряжения Б 6 при значении БИ. СБОРКА СХЕМЫ Используя ШИМ-пины, мы сделаем гирлянду, которая будет плавно изме- нять яркость светодиодов. Посмотрите внимательно на плату Arduino, ШИМ-пины помечены симво- лом Соберите следующую схему, под- ключив светодиоды к пинам 3, 5, 6, 9, 10, 11 Используйте резисторы номина- лом 220 Ом. ПРОГРАММИРОВАНИЕ ARDUINO Соедините Arduino с компьютером, запустите Snap4Arduino и подключитесь к Arduino через СОМ порт. Arduino рдключиться к Arduino иться от Arc l| selecta port arduino connect* СОМ1 COM3
Сначала соберём два собственных блока: один - для плавного включения, а другой - для плавного выключения светодиодов. Выберите раздел Прочее в палитре блоков и нажмите кнопку Новый блок. Р Выберите тип блока Arduino, введите имя блока Плавное включение, выбери- те тип блока Команда и нажмите кнопку ОК. Нажмите на плюсик и создайте переменную Пин, которая будет сообщать блоку, каким пином управлять. Плавное включение г Введите имя переменной и нажмите кнопку ОК. Определить ИМЯ ВВОДИМЫ! данных ПиЦ Заголовок текста S Имя вводимых данных В Едатывлв» иод. Эмим по умопшио | Ыного*рап»а| иод (слксох) Н Сдгла>ь awyiptmoto п»р»м»тгую аодамей шан» К ОК Отменить
Ещё раз нажмите на плюсик и создайте переменную Время, с помощью кото- рой можно будет регулировать скорость увеличения яркости светодиодов. Вг>*мя Заголовок I Имя вводимых данных Я ОК Отменить Соберите скрипт блока <Ж Пр ИМ » ЦП > Обратите внимание! Наряду с переменными блока Пин и Время мы используем перемен- ную скрипта а, которая видна только блокам этого скрипта.
При исполнении скрипта блока значение переменной а будет установлено равным 0, затем 32 раза будет изменён статус соответствующего разъема PWM на величину переменной а. При каждом проходе цикла значение переменной а станет увеличиваться на 8, и будет происходить задержка выполнения на величи- ну, заданную переменной Время, делённой на 100. Таким образом, при первом проходе цикла значение переменной а будет равно 0, при втором 8 и далее 16, 24, 32,... до 248. После завершения выполнения цикла статус соответствующего разъёма PWM будет установлен в 255 для получения на ШИМ-пине максималь- ного напряжения, равного 5 В.. Благодаря тому что напряжение на пине плавно увеличивается, светодиод, подключенный к нему, будет плавно увеличивать свою яркость. Для плавного выключения светодиода соберите следующий собственный блок, очень похожий на блок включения. (Ж OTWWT* При исполнении скрипта блока значение переменной а будет установлено равным 255, затем 32 раза будет изменен статус соответствующего разъема PWM на величину переменной а. При каждом проходе цикла значение переменной а станет уменьшаться на 8, и будет происходить задержка выполнения на величину, заданную переменной Время, делённой на 100. Таким образом, при первом про- ходе цикла значение переменной а будет равно 255, при втором 247 и далее 239, 231, 223,... до 7. После завершения выполнения цикла статус соответствующего разъема PWM будет установлен в 0 для получения на ШИМ-пине минимального напряжения, равного 0 В. Благодаря тому что напряжение на пине плавно уменьшается, светодиод, под- ключенный к нему, будет плавно уменьшать свою яркость, пока совсем не погас- нет.
Для того чтобы получилась гирлянда, соберите спрайту стрелки вот такой скрипт. при нажатии на Плавное включение0D | Плавное выключение00 Плавное включение 0 0 Плавное выключение 0 D Плавное включение Э D I Плавное выключение 0 0 Плавное включение □ о | Плавное выключениеап Плавное включение ДД Д Плавное выключениеran Плавное включениешп| Плавное выключение Ш D При запуске скрипта сначала будет включен светодиод, подключённый к пину 3. После того как он достигнет максимальной яркости, он плавно погас- нет. Затем так же включатся и погаснут следующие 5 светодиодов, подключённых к пинам 5, 6, 9, 10 и 11. Сохраните проект и протестируйте его работу. Задания 1. Замедлите в 2 раза скорость включения и выключения свето- диодов. 2. Сделайте так, чтобы одновременно включались светодиоды. подключённые к пинам 3 и 9, затем подключённые к 5 и 10, и на- последок к 6 и 11. 3. Сделайте так, чтобы сначала включились поочередно все свето- диоды от 3 до 11, а затем поочерёдно выключились в том же по- рядке.
ГЛАВА 11 УПРАВЛЕНИЕ ЯРКОСТЬЮ СВЕТОДИОДА с помощью ПОТЕНЦИОМЕТРА Перед тем как собрать схему на макетной плате, познакомимся с новым элек- тронным компонентом - с потенциометром. ПОТЕНЦИОМЕТР Потенциометр - это электронный компонент, который может изменять своё сопротивление при вращении ручки, его ещё называют переменным резис- тором. На электрической принципиальной схеме потенциометр обозначается вот так. Сопротивление между крайними контактами 1 и 3 не изменяется, оно равно номинальному. При вращении ручки потенциометра сопротивление между выво- дами 1 и 2, а также между выводами 2 и 3 будет изменяться. Причём если сопро- тивление между выводами 1 и 2 будет увеличиваться, то сопротивление между выводами 2 и 3 будет уменьшаться. Установите потенциометр на макетную плату, как показа- но на рисунке.
Задание Установите ручку потенциометра при- мерно посередине и измерьте сопротив- ления между выводами I и 3,1 и 2,1 и 3 с помошью мультиметра. Подробнее о потенциометре можно прочитать в книге Юрия Винницкого и Александра Григорьева «Scratch и Arduino для юных программистов и кон- структоров». СБОРКА СХЕМЫ Используйте резистор номиналом 220 Ом. Номинальное сопротивление по- тенциометра может быть любым из диапазона 10-100 кОм.
ПРОГРАММИРОВАНИЕ ARDUINO Соедините Arduino с компьютером, запустите Snap4Arduino и подключитесь к Arduino через СОМ-порт. Создайте переменную Яркость Она будет хранить значение, которое потребу- ется для управления яркостью светодиода. В этом проекте будет всего один простой скрипт, соберите его. при нажатии на непрерывно установить Яркость знач 128 При запуске проекта переменной Яркость будет постоянно присваивать- ся значение, считанное с аналогового пина АО, делённое на 4. Затем блок to value установит соответствующий уровень напряжения на пине 10, к которому подключён светодиод. Яркость светодиода будет изменяться в зависимости от уровня напряжения на пине 10. Для того чтобы понять, зачем мы разделили значение, считанное с аналого- вого пина АО, на 4, следует вспомнить, в каком диапазоне изменяется значение, считанное с аналоговых пинов - от 0 до 1023. Также не будем забывать, что диа- пазон значений ШИМ-пина изменяется от 0 до 255. Не сложно заметить, что эти диапазоны отличаются ровно в 4 раза. Поэтому, разделив значение, считанное с пина АО, на 4, мы получим точное соответствие из диапазона ШИМ-пина. Сохраните проект и протестируйте его работу. Вращайте ручку потенцио- метра - яркость светодиода будет изменяться. Обратите внимание на неравномерное (нелинейное) изменение яркости све- тодиода. Многие электронные компоненты ведут себя подобным образом.
Задания 1. Подключите светодиод к пину 3 и соответствующим образом измените скрипт. 2. Подключите потенциометр к пину А2 и соответствующим обра- зом измените скрипт. 3. Сделайте так, чтобы спрайт стрелки сообщал о том, что свето- диод выключен. 4. Сделайте так, чтобы светодиод мигал с интервалом 0,3 секунд а его яркость задавалась ручкой потенциометра. Б. Сделайте так, чтобы яркость светодиода изменялась в диапазо- не от нуля до половины максимальной яркости. 6. Сделайте так, чтобы яркость светодиода изменялась в диапа- зоне от 1/4 до 3/4 максимальной яркости.
ГЛАВА 12 АНАЛОГОВЫЕ ВХОДЫ. УПРАВЛЕНИЕ С ПОМОЩЬЮ ОДНОГО ПОТЕНЦИОМЕТРА. ИГРА «АРКАНОИД» Все вы прекрасно знакомы с игрой «Арканоид». Давайте сделаем такую игру с управлением от потенциометра. СБОРКА СХЕМЫ Соберите следующую схему. Край- ние выводы потенциометра соедините с GND и с питанием 5 В, а средний вы- вод соедините с аналоговым пином АО. fritznng
СОЗДАНИЕ ИГРЫ «АРКАНОИД» Соедините Arduino с компьютером, запустите Snap4Ardumo и подключитесь к Arduino через СОМ-порт. Aiduiho дключиться к Arduino иться от Аг< select a port СОМ1 COM3 Добавьте в проект шесть новых спрайтов, для этого шесть раз нажмите кнопку add a new Turtle sprite. add a new Turtle spritej W • о Выберите первый спрайт, перейдите на вкладку Костюмы и нарисуйте платформу, от которой будет отскакивать шарик. Переименуйте спрайт. Платформа Затем выберите второй спрайт и нарисуйте ему костюм в виде шарика. Не забудьте переименовать его. Шар Выберите третий спрайт и нарисуйте горизонтальный узкий прямоугольник желтого цвета шириной во всю сцену. Низ Четвёртый спрайт будет горизонтальным узким прямо- угольником оранжевого цвета. Верх
Лево Право Пятый спрайт будет узким вертикальным прямоуголь- ником светло-зеленого цвета. Шестой спрайт будет узким вертикальным прямоуголь- ником темно-зеленого цвета. Блок Седьмой спрайт будет небольшим прямоугольным блоком. Расположите четыре узких прямоугольных спрайта у соответствующих границ сцены. От них будет отскакивать шарик. блока Совет Поворачивайте спрайты с помошью указывать в направлении Все спрайты готовы, можно программировать! ПРОГРАММИРОВАНИЕ ARDUINO Первым делом создайте переменную Очки. Arduino Перо Прочее Объявить переменную
Затем выберите спрайт платформы и соберите ему программу из двух скрип- тов. Первый скрипт будет управлять перемещением платформы с помощью ручки потенциометра. при нажатии на НРПрРрЫПМО При запуске проекта координата /платформы будет изменяться в зависимости от уровня напряжения, поданного на пин АО. При повороте ручки до конца, когда напряжение на пине АО будет равно О В и блок [analog reading вернёт значение О, координата Xплатформы будет равна -240: X = (0:1023) • 480 - 240 = -240. Платформа будет слева. При повороте ручки до конца в другую сторону, когда напряжение на пине АО будет равно 5 В и блок [analog reading [ вернёт значение 1023, координата /плат- формы будет равна 240: / = (1023 : 1023) • 480 - 240 = 240. Платформа будет справа. Теперь соберите второй скрипт платформы. при нЛЖсНИИ н.| , , ' установить Очки знач. Э ждать до Очки = 23 НИИ говорить в течение о сек ( I о 11 Этот скрипт будет обнулять переменную Очки и ждать, пока она не достигнет значения 40, при этом спрайт скажет торжественную речь и завершит выполнение программы. Теперь запрограммируем блок. Выберите его и соберите ему программу из двух скриптов.
Первый скрипт блока будет создавать 40 клонов. При запуске проекта блок покажется и на всякий случай удалит всех клонов, соз- данных ранее. Затем блок перейдет в левый верхний угол сцены и приступит к созданию клонов. Он создаст 4 ряда клонов по 10 штук в каждом ряду. После создания клона коор- дината X блока будет изменяться на 40, и новый клон будет расположен правее. После того как будет создано 10 клонов, координата Y будет изменена на -40, а ко- ордината X - на -400, и будет создан сле- дующий ряд из 10 клонов. После того как все клоны будут созданы, блок спрячется и передаст сообщение Старт, которое запустит шарик. при нажатии на показаться повторять удалить этого клона перейти в точку х повторять о повторять 10 изменить у на изменить х на клонировать я изменить у на 4G 400 спрятаться иНВИниН разослать Старт адреса У * О Теперь выберите шарик и создайте ему программу из семи скриптов. Первый скрипт шарика. при нажатии на перейти в точку х Оу -12С указывать в направлении При запуске проекта этот скрипт разместит шарик в середине сцены и повернёт его в случайно выбранное направление в диапазоне от 50 до 70 градусов. Второй скрипт шарика. Скрипт ждет, пока не будет передано сообщение Старт. После получения этого сообщения шарик полетит.
Третий скрипт шарика. при нажатии на непрерывно Н Скрипт непрерывно ждёт, пока шарик не коснётся спрайта Лево, при этом ша- рик изменит направление полёта на противоположное. Четвёртый скрипт шарика. при нажатии на непрерывно К ждать до касается Пра указывать в направлении касается Право ? Скрипт непрерывно ждет, пока шарик не коснётся спрайта Право, при этом ша- рик изменит направление полета на противоположное. Пятый скрипт шарика. при нажатии на непрерывно К Скрипт непрерывно ждёт, пока шарик не коснется спрайта Верх, при этом ша- рик отскочит от него и полетит дальше.
Шестой скрипт шарика. стоп все^ сек Скрипт непрерывно ждёт, пока шарик не коснётся спрайта Низ, при этом ша- рик скажет, что вы проиграли, и остановит выполнение программы. Седьмой скрипт шарика. при нажатии на непрерывно Ю Скрипт непрерывно ждет, пока шарик не коснётся спрайта Платформа, при этом шарик отскочит от нее и полетит дальше. Проект готов, сохраните его и протестируйте. Задания 1. Ускорьте полет шарика. 2. Уменьшите размер шарика в 2 раза. 3. Добавьте в проект красивый фон. 4. Добавьте в проект звуки касания шарика.
ГЛАВА 13 НАЛОГОВЫЕ ВХОДЫ. ИГРА «АРКАНОИД» ВЕРСИЯ 2 УПРАВЛЕНИЕ С ПОМОЩЬЮ ДАТЧИКА ОСВЕЩЁННОСТИ В прошлой главе описано создание игры «Арканоид» с управлением от по- тенциометра. Однако есть другие способы управлять спрайтами с помощью из- менения напряжения на аналоговых пинах Arduino. Один из них - использование датчика освещённости. ДАТЧИК ОСВЕЩЕННОСТИ Датчик освещённости - это фоторезистор. Он изменяет своё сопротивление в зависимости от яркости света, падающего на него. Чем ярче падающий свет, тем меньше сопротивление фоторезистора. Подключите фоторезистор к мультиметру с помощью «крокодилов» и измерьте его сопротивление.
Направьте на фоторезистор свет от фонарика и посмотрите, как бу- дет изменяться его сопротивление. Изменяйте световой поток, прибли- жая и удаляя фонарик от фоторези- стора, понаблюдайте за изменени- ем его сопротивления. Сопротивление фоторезистора должно изменяться в диапазоне от 2 до 20 кОм (в полной темноте ме- нее 200 кОм). Подробнее о фото резисторах вы можете узнать в книге Чарльза Платта «Энциклопедия электрон- ных компонентов. Том 1. Резисторы, конденсаторы, катушки индуктив- ности». СБОРКА СХЕМЫ Соберите следующую схему. Используйте резистор R1 номи- налом 10 кОм.
ДОРАБОТКА ИГРЫ «АРКАНОИД» Загрузите проект «Арканоид». Для управления платформой с помощью фото- резистора необходимо изменить только один скрипт. Выберите спрайт платфор- мы, измените управляющий скрипт, как показано на рисунке. при нажатии на непрерывно установить х I analog reading 400 Закрывайте рукой фоторезистор, и вы увидите, как платформа перемещается вправо и влево в зависимости от количества света, падающего на фоторезистор. Сохраните проект и протестируйте его работу. При необходимости измените число 400 в формуле. Задания I. Направьте на фоторезистор свет от фонарика. Измените фор- мулу, чтобы можно было управлять платформой с помощью фо- нарика. 2. Сделайте так, чтобы шарик немного изменял цвет в момент ка- сания блоков 3. Сделайте так, чтобы платформа изменяла эффект comic при ка- сании шарика.
ГЛАВА Я АНАЛОГОВЫЕ ВХОДЫ. ЦВЕТОМУЗЫКА. УПРАВЛЕНИЕ С ПОМОЩЬЮ ДАТЧИКА ГРОМКОСТИ ЗВУКА Датчик громкости звука используется для того, чтобы сообщать плате Arduino об уровне окружающего шума. Основным чувствительным элементом датчика звука является микрофон, ко- торый преобразует звук в электрическое напряжение. Дополнительные элементы, установленные на плате датчика, преобразуют напряжение микрофона таким об- разом, что при тишине на сигнальном выводе напряжение около О В, а при очень громком звуке - 5 В. Таким образом, подключив сигнальный вывод датчика гром- кости к аналоговому пину Arduino, мы сможем включать светодиоды в зависимо- сти от уровня громкости. Существует множество датчиков звука. Я советую использовать вот такой дат- чик от компании YwRobot.
СБОРКА СХЕМЫ Соберите схему, показанную на ри- сунке. Используйте резисторы номиналом 220 Ом. Датчик громкости подключите в соответствии с обозначениями его выво- дов. У датчиков различных производите- лей выводы расположены по-разному. ПРОГРАММИРОВАНИЕ ARDUINO Сначала создайте две переменные Громкость и Чувствительность В этом проекте нам потребуется только один спрайт, соединённый с Arduino, кото- рый будет управлять включением свето- диодов. Подключитесь к Arduino через СОМ-порт. Заключиться к Arduinv читься от Ан select a port СОМ1 Соберите для единственного спрайта стрелки программу из пяти скриптов. Первый скрипт стрелки. при нажатии на set digital pin CD to • set digital pm CD to ф Д||И set digital pm <DD (О#ХЗД установить Чувствительность знач. непрерывно установить Громкость знач. ап*| При запуске проекта этот скрипт установит низкий уровень напряжения на цифровых пинах 8, 9, 10 и 11. Значение пере- менной Чувствительность будет установлена в значение 10, за- тем непрерывно в переменной Громкость будет сохраняться значение, считанное с аналого- вого пина АО.
Следующие четыре скрипта очень похожи, поэтому соберите один, а затем дублируйте его 3 раза и внесите необходимые изменения. Второй скрипт стрелки. При запуске проекта этот скрипт непрерывно сравниваетзначение переменной Громкость со значением переменной Чувствительность, и если громкость выше порога, то включится светодиод, подключённый к пину 8. Третий скрипт стрелки. при нажатии на если Громкость > (чувствительность иначе При запуске проекта этот скрипт непрерывно сравнивает значение перемен- ной Громкость с утроенным значением переменной Чувствительность, и если громкость выше этого порога, то включится светодиод, подключенный к пину 9. Четвёртый скрипт стрелки. при мии н.1 если Громкость > (Чувствительность set digital рю to ] иначе set digital pm to ф
При запуске проекта этот скрипт непрерывно сравнивает значение переменной Громкость со значением переменной Чувствительность, увеличенным в 5 раз, и если громкость выше этого порога, то включится светодиод, подключённый к пину 10. Пятый скрипт стрелки. х 7 О 0 При запуске проекта этот скрипт непрерывно сравнивает значение пере- менной Громкость со значением переменной Чувствительность, увеличенным в 7 раз, и если громкость выше этого порога, то включится светодиод, подключён- ный к пину 11. Таким образом, чем громче звук, тем больше светодиодов будет включено. Обратите внимание! Значение переменной Чувствительность подобрано мною для дат- чика звука YwRobot, изображённого на рисунке в начале главы. Если вы используете датчик другого производителя, то, скорее всего, по- требуется произвести подбор значения переменной Чувствитель- ность Также может потребоваться настройка датчика звука с по- мощью переменного резистора, установленного на нем Задания 1 Добавьте еше два светодиода и внесите необходимые измене- ния в программу. 2. Добавьте задержку, чтобы включённые светодиоды светились не менее 0,3 секунды. 3. Сделайте так, чтобы спрайт стрелки изменял размер в соответ- ствии с уровнем громкости.
ГЛАВА 15 АНАЛОГОВЫЕ ВХОДЫ. ДАТЧИК ТЕМПЕРАТУРЫ. КОМНАТА С ОБОГРЕВОМ И КОНДИЦИОНЕРОМ ДАТЧИК ТЕМПЕРАТУРЫ Датчик температуры служит для того, чтобы сообщать плате Arduino информацию об окружающей температуре. Датчик имееттри вывода: питание (+5 В), земля (GND) и сиг- нальный аналоговый выход. При изменении температуры датчика напряжение на его сигнальном выходе будет изменяться от 0,1 В при-40 °C до 2,0 В при+150 °C. +5В GND Сигнальным выход Для преобразования напряжения в температуру используется формула, где АО - значение, считанное с аналогового пина АО: Температура (в °C) = (((АО: 1024) • 5) • 0,5) • 100. То есть, например, если с аналогового пина АО считано значение 150, то тем- пература равна: Температура (в °C) = (((150:1024) • 5) • 0,5) 100 = 24,2 °C. Если у вас датчик температуры LM35 или подобный ему, используйте формулу: Температура (в °C) = АО • 0,488.
КОМНАТА С БЫТОВЫМИ ПРИБОРАМИ СБОРКА СХЕМЫ Давайте сделаем проект, в ко- тором у нас будет комната с не- сколькими бытовыми приборами: с кондиционером, вентилятором и обогревателем. При повышении температуры до 26 градусов будет включаться вен- тилятор, при повышении до 32 гра- дусов - кондиционер, а при 18 гра- дусах должен будет включиться обогреватель. Соедините Arduino с компьюте- ром, запустите Snap4Arduino и под- ключите спрайт стрелки к Arduino че- рез СОМ-порт. Anluino । 1одключиться k Arduino 1| select a port очиться от Аг СОМ1 COM3 ПОДГОТОВКА СПРАИТОВ Перед началом программиро- ; ”;; ;;;;; ;•;;; ;;;;; ;;;;; вания необходимо подготовить сце- ну и спрайты. Первым делом добавим на сцену фон с изображением комнаты.
Выберите сцену в области скриптов. > / в О Выберите команду Фоны из выпа- дающего меню. Сцена Спрайт I Внешность В Звук |Пчх» Stag*s«Kt*d nomotunpnm*»* Новым блок В # Безымянный Notes _ _____ ___ ____ Новый проект *N Открыть.. *0 Сохранить *S Сохранить как... 4 Импорт-,. Экспортировать проект Сводка экспортируемых данных Hide blocks New category...____________ New scene Acd scene^_________________ Библиотеки(s»om Фоны << Звуки...___________________ Open from URL Save share and g₽i URL New Ardumo translatable project Start a Snap Jr session Выберем комнату Bedroom 1. Import Отменить Теперь сцена выглядит вот так.
Трижды щёлкните на кнопке создания новых спрайтов. Спрайт Слрайт(2} Спрайт(3) Спрайт(4) Выберите первый спрайт и импортируйте ему два костюма кондиционера - Кондей 1 и Кондей 2. io# Notes... Новыи проект Открыть.. Сохранить Сохранить как. AN АО *S Импорт Экспортировать проект Костюмы появятся на вкладке Костюмы. Кондеи 1 Кондеи 2 Переименуйте спрайт, введите новое имя Кондей. Кондей У движимый Далее необходимо удалить белый фон, окру- жающий изображение кондиционера. Щёлкните правой кнопкой мыши на костюме кондиционера и выберите команду редактировать. кондеи редактировать переименовать продублировать удалить экспорт
Выберите инструмент заливки и прозрачный цвет. Удалите белый фон, окружающий кондиционер. Аналогичным образом удалите белый фон второго костюма. Теперь выберите второй спрайт, импортируйте стойку вентилятора и переиме- нуйте спрайт. Установите центр костюма стойки, для этого щелкните правой кноп- кой мыши на костюме стойки и выберите команду редактировать. Черепашка ма-ортгруйте с другого ееб-сайга или со скво соип»огеоэ сгопнэоела во седа Fan * редактировать^ переименовать*) продублировать удалить________ экспорт Выберите команду установки центра костюма и устано- вите ее в верхней точке стойки. Set the rotation center)
Скрипты Костюмы Черегишка мг'ортаруйте изображение с друтхо веб-сайта или со своего tcu-'ью-^еса ссо'лоовы ел ссдз Третьему спрайту импортируйте пропеллер и дай- те соответствующее имя. Затем необходимо устано- вить центр костюма. Щёлкните правой кнопкой мыши на костюме пропеллера и выберите команду редак- тировать. Рал 2 редактировать переименовать продублировать удалить_________ экспорт Установите центр костюма в самый центр пропеллера. Четвёртый спрайт будет обогревателем, импортируйте ему два костюма и переименуйте. Теперь сцена выглядит вот так. Не обращайте внимания на огромный размер спрайтов и неаккуратное расположение. Пора навести в комнате порядок, начинаем программировать!
ПРОГРАММИРОВАНИЕ ARDUINO Сначала создайте переменную Температура. Выберите оранжевые блоки и нажмите кнопку Объявить переменную. Перо Прочее Arduino Объявить переменную Переменные < Введите имя переменной. Температура • для всех спрайтов только для текущего спрайта ОК Отменить Измените способ отображения переменной на сцене. Щёлкните на ярлычке переменной правой кнопкой мыши и выберите масштабированный стиль изо- бражения. Температура о 1 • стандартный масштабированный бегунок бегумой mm бегуч э-к шах „ импорт. 'сырые' данные экспорт Выберите спрайт кондиционера и соберите ему программу из трёх скриптов. Первый скрипт кондиционера. «три нажатии на установить размер в IЧН изменить костюм на Кондей 1 | указывать в направлении CSD перейти в точку х Cfofc у СЕЕЭ
При запуске проекта кондиционер уменьшится в размере, переключится на выключенный костюм, повернется в направлении 90 градусов и повиснет на сте- не, переместившись в точку (-140; 100). Второй скрипт кондиционера. при нажа'ии HJ и е п р е рывмо установить Температура знач. округлить analog reading С 1024 х 5 О 0.5 Этот скрипт всегда передаёт переменной Температура текущую температуру датчика, определяемую по считанному аналоговому значению АО. Температура вычисляется по формуле: Температура (в °C) = (((АО: 1024) • 5) • 0,5) • 100. Формулу соберите следующим образом: Третий скрипт кондиционера. Этот скрипт постоянно следит за зна- чением переменной Температура Если оно выше 32, то кондиционер «вклю- чится» и сменит костюм на Кондей 2, а если меньше 32, то кондиционер «выключится» и сменит костюм на Кон- дей 1.
Выберите спрайт стойки и соберите ей вот такой скрипт. при нажатии на установить размер в СБЭ указывать в направлении перейти в точку х ЛКЛ у ( При запуске проекта стойка уменьшится в размере, повернётся в направлении 90 градусов и встанет около стола, переместившись в точку (-50; 50). Теперь выберите спрайт пропеллера и соберите ему программу из двух скриптов. Первый скрипт пропеллера. при нажатии на установить размер в МФЬ указывать в направлении перейти в точку Вентилятор При запуске проекта пропеллер уменьшится в размере, повернётся в направ- лении 90 градусов и прикрепится к стойке, совместив свой центр костюма с цен- тром костюма стойки вентилятора. Второй скрипт пропеллера. при нажатии на непрерывно Йй Этот скрипт постоянно следит за значением переменной Температура. Если оно выше 26, то пропеллер «включится» и будет вращаться, поворачиваясь на 15 гра- дусов.
Выберите спрайт обогревателя и соберите ему программу из двух скриптов. Первый скрипт обогревателя. При запуске проекта обогреватель уменьшится в размере, переключится на выключенный костюм, повернётся в направлении 90 градусов и встанет ря- дом со столом, переместившись в точ- ку (180;-100). Второй скрип обогревателя. Этот скрипт постоянно следит за значением переменной Температура Если оно меньше 18, то обогреватель «включится» и сменит костюм на Обо- греватель 2, а если больше 18, то обо- греватель «выключится» и сменит ко- стюм на Обогреватель 1. Сохраните проект и протестируйте его работу.
Задания I Добавьте в проект спрайт Alonzo, который будет говорить сле- дующие фразы: • при температуре меньше 19 градусов: «Прохладно», • при температуре меньше 14 градусов: «Холодно!»; • при температуре больше 27 градусов: «Тепло»; • при температуре больше 33 градусов. «Жарко1». 2. Измените уровень температуры, при котором включится конди- ционер, на 34 градуса. 3. Измените уровень температуры, при котором включится венти- лятор, на 28 градусов. 4. Измените уровень температуры, при котором включится обо- греватель, на 16 градусов. 5. Ускорьте врашение вентилятора.
ГЛАВА 16 УПРАВЛЕНИЕ ПОТЕНЦИОМЕТРОМ И ДВУМЯ КНОПКАМИ. ИГРА «КОЛЬЦЕВАЯ АВТОГОНКА» СБОРКА СХЕМЫ Давайте сделаем игру «Кольцевая автогон- ка», в которой необходимо как можно быстрее проехать один круг по трассе. Соберите следующую схему. Исполь- зуйте резисторы номиналом 10 кОм.
ПОДГОТОВКА СПРАЙТОВ И ФОНОВ Выберите сцену. Перейдите на вкладку Backgrounds и нажмите кнопку Paint a new costume Скрипты Фоны Звуки Пусто Нарисовать новый костюм Нарисуйте на сцене трассу для автогонки. Сначала залейте всю сцену зелёным цветом, а затем нарисуйте серую трассу. Выберите инструмент Fill a region. Выберите темно-зеленый цвет. Залейте фон.
Теперь выберите серый цвет и нарисуйте асфальтовую трассу. Выберите инструмент Paintbrush tool Задайте максимальную толщину кисти 20. Размер кисти: 20 Нарисуйте замкнутую трассу.
Теперь выберите спрайт стрелки и импортируйте изображение Автомобиль 2.png. AО ые Записки... Новый проект Открыть... Open from URL... Сохранить Сохранить как... Save and share New Arduino translatab Переименуйте спрайт. Импорт.. Экспорт xjen.. U Автомобиль 7 движимый add d new Turtle sprite >^y / й— Импортируйте изображение Финиш.png и переименуйте спрайт. Финиш / движимый ПРОГРАММИРОВАНИЕ ARDUINO Первым делом создайте переменные Скорость, Время и АО Перо Прочее Arduino Объявить переменную Затем выберите спрайт Финиш и соберите ему вот такой скрипт. при нажатии на установить размер в указывать в направлении перейти в точку х оу С -140
Спрайт должен расположиться в нижней части сцены поперёк трассы. Если у вас он расположен не так, то измените координаты X и Y в блоке перейти в точку Теперь выберите спрайт автомо- биля и подключите плату Arduino че- рез СОМ-порт. Arduino |рдключиться к Arduino !иться от Ап select a port arduino connect! СОМ1 COM3 Соберите автомобилю программу из пяти скриптов. Первый скрипт автомобиля. При запуске проекта этот скрипт сначала переустановит таймер, и он начнёт от- счёт секунд. Переменная Скорость будет обнулена, размер спрайта будетуменьшен до 30%. Автомобиль переместится в точку (40; -140) и повернётся в направлении -140 при нажатии на переустановить таймер установить Скорость знач. 0 установить размер в перейти в точку х t Д у 90 градусов. Затем непрерывно будет ис- полняться бесконечный цикл, в котором автомобиль будет перемещаться на величину, равную значению пере- менной Скорость, поделённому на 10. Переменной АО при каждом проходе цикла будет передвинуть на ('Скорость / ДВ шагов установить АО знач. if О 610 <:► присваиваться значение, считанное с аналогово- го пина АО. Затем, в со- ответствии со значением повернуть 5)на С£КВ<®> градусов ► if ЛЭ 410 1 повернуть 4 h )на 1 510 100 градусов ► переменной АО, автомо- биль повернется по часо- вой стрелке или против нее на соответствующую величину. Угол поворота против часовой стрелки вычисляется по формуле
(АО - 510) : 100 и изменяется от 1 до 5 градусов при изменении АО от 610 до 1023. Угол поворота по часовой стрелке вычисляется по формуле (510 - АО): 100 и изменяется от 5 до 1 градуса при изменении АО от 0 до 410. То есть, чем сильнее выкручена ручка потенциометра, тем сильнее повора- чивает автомобиль. При этом в центральном положении ручки при значении АО от 410 до 610 автомобиль не поворачивает и едет по прямой. Следующие два скрипта нужны для управления разгоном и торможением ав- томобиля с помощью кнопок. Второй скрипт автомобиля. Этот скрипт выполняется, если нажата правая кнопка (спина 7 счи- тано true), при этом значение пере- менной Скорость изменится на 5. Затем скрипт будет ждать, пока кнопка не будет отпущена, чтобы значение переменной не увеличилось несколько раз подряд. Третий скрипт автомобиля. Этот скрипт выполняется, если нажата левая кнопка (с пина 8 счи- тано true), при этом значение пере- менной Скорость изменится на -5. Затем скрипт будет ждать, пока кнопка не будет отпущена, чтобы когда digital reading изменить ► • на ffr ждать до не digital reading CD значение переменной не уменьшилось несколько раз подряд. Четвёртый скрипт автомобиля нужен для того, чтобы автомобиль приторма- живал при съезде с трассы в траву. Этот скрипт постоянно следит, не касается ли спрайт автомобиля зелёного цвета, и, как только это произойдет, значение переменной Скорость будет уменьшено на -1. Задержка в одну пятую секунды (0,2 = 1/5) нужна для того, чтобы ав- томобиль притормаживал не очень быстро, всё- таки это трава, а не сугроб.
Пятый скрипт автомобиля завершает выполнение программы. 1 - • < ..... ждд>ь до касается :. •• ? установить Н мч знач таймер Он ждёт до того момента, пока автомобиль не коснётся спрайта Финиш, при этом переменная Время запомнит значение таймера, а блок говорить сообщит о том, за какое время вы проехали круг. После этого работа программы будет оста- новлена. Сохраните проект и прогеаируйте его работу. Устройте соревнования, кто быстрее проедет круг. Задания Сделайте так, чтобы рулевое управление было не таким «резким», уменьшите скорость поворота автомобиля в 2 раза 2. Сделайте так, чтобы автомобиль разгонялся в 2 раза быстрее. 3. Сделайте так, чтобы автомобиль тормозил в 2 раза быстрее. 4. Перекрасьте зелёную траву в белый снег и сделайте так, чтобы при попадании в снег автомобиль тормозил в 3 раза быстрее, чем в траве. 5. Добавьте звук мотора, который должен урчать при увеличении скорости.
ГЛАВА 17 УПРАВЛЕНИЕ ДВУМЯ ПОТЕНЦИОМЕТРАМИ. ИГРА «ГОНКА В ПУСТЫНЕ» ДЛЯ ДВОИХ В игре «Гонка в пустыне» два автомобиля будут ехать по пустыне с одинаковой скоростью. Задача игроков в том, чтобы объехать все препятствия, которые попа- даются на пути, и не столкнуться со скалами, расположенными по краям трассы. Проиграет тот, кто допустит три столкновения с препятствиями или столкнется со скалой. S S СБОРКА СХЕМЫ Соберите следующую схему.
114 Глава 17. Управление двумя потенциометрами. Игра «Гонка в пустыне» для двоих ПОДГОТОВКА СПРАЙТОВ Notes..._______________________ Новый проект AN Открыть... ЛО Сохранить AS Сохранить как.,________________ Импорт.. Экспортировать проект... Добавьте первому спрайту костюм старта, для этого выберите его и импортируйте изобра- жение Старт.рпд. СТАРТ Старт Переименуйте спрайт. О „ СТАРТ Старт У движимый Добавьте ещё один спрайт и импортируйте ему изображение зелёного автомобиля Авто- мобиль 1. png. Переименуйте спрайт. К Создайте третий спрайт, ему импортируйте изображение Автомобиль 2.png. Автомобиль 1 Зеленая / движимый Автомобиль 2 Переименуйте спрайт. О ЙМ Синяя “ а J движимый
Четвёртому спрайту импортируйте два костюма - Скала 1 .png и Скала 2.png. « Скала 1 * Скала 2 Переименуйте спрайт. О Скала левая V ДВИЖИМЫЙ Дублируйте спрайт левой скалы, для этого щелкните правой кнопкой мыши на ярлыке спрайта и выберите команду про- дублировать. Скал редактировать переименовать продублировать удалить экспорт Переименуйте новый спрайт. Скала правая У ДВИЖИМЫЙ Шестому спрайту импортируйте пять костюмов из файлов: • Кактус 1.png, • Кактус 2.png, • Камень 1.png, • Камень 2.png, • Камень 3.png. Кактус 2 Камень! Камень 3
Переименуйте спрайт. Препятствие! 7 движимый Создайте три переменные Первые две, Направление Зеленой и Направление.Синей, будут хранить направ- ления движения автомобилей, переменная Скорость нужна для запоминания ско- рости движения автомобилей. ПРОГРАММИРОВАНИЕ ARDUINO Сначала выберите скрипт старта и соеди- ните его с Arduino. Соберите ему программу из трех скриптов. Первый скрипт Старта. рдключиться к Arduino читься от Аге select a port СОМ1 COM3 при нажатии на установить Скорость знач. 0 указывать в направлении 90 ▼ перейти в точку х ДЬ у -160 говорить 0 в течение о сек I говорить 0 в течение о сек I говорить П в течение о сек I говорить FBI в течение о сек * ► разослать Старт повторять 100 изменить у на Скорость L J При запуске проекта скрипт обнулит значение переменной Скорость, переме- стит спрайт в точку (0; -160), повернет его в направлении 90 градусов, а затем скажет: «3, 2,1, Go!» После этого скрипт отправит всем спрайтам сообщение Старт и плавно уплывет вниз, изменив 100 раз координату Уна величину-1 • Скорость.
Второй скрипт Старта непрерывно изменяет значения переменных Направле- ние.Зеленой и Направление.Синей Значение переменной Направление_3еленой вычисляется по формуле ((АО: 1024)-2)-1 и изменяется от -1 до 1 при вращении ручки потенциометра. Значение переменной Направление. Синей вычисляется по формуле ((А2:1024). 2)-1 и изменяется в том же диапазоне. Как видите, потенциометр, подключённый к пину АО, управляет зелёной ма- шинкой, а подключённый к пину А2 - синей. Третий скрипт Старта отвечает за изменение скорости. при нажатии на pg® повторять О I „ ' _ изменить Скорость на ждать 0 2 сек. Этот скрипт начинает выполняться после получения сообщения Старт Он из- менит значение переменной Скорость 10 раз на 0,1, и значение переменной ста нет равно 1. Вы увидите, как машинки плавно разогнались. Далее запрограммируем автомобили, у каждого из них будет по 4 скрипта. Скрипты очень похожи, и после создания скриптов для зеленого автомобиля вы сможете скопировать их синему. В скриптах автомобилей будем использовать локальные переменные Жизни Создайте локальную переменную зелёному автомобилю. Обязательно переклю- чите кружочек на применительно только к данному Образу, чтобы перемен- ная была локальной и видимой лишь этому спрайту.
для всех спраитов • только для текущего спрайта ОК Отменить Перо Прочее Arduino Объявить переменную Переменные < Выберите синии автомобиль и создайте ему аналогичную локальную переменную. Убедитесь, что переменные Жизни по- лучились локальными. Перейдите в раздел Переменные. Выбирайте по очереди все спрайты. Во всех спрайтах должно быть по три пе- ременных, и только в спрайтах автомобилей по четыре. Несмотря на то что переменные имеют одинаковые имена, они разные, каж- дая из них хранит собственное значение. Значения никак не связаны между собой и могут изменяться независимо друг от друга. Например, у зелёной машинки мо- жет быть 3 жизни (её переменная Жизни хранит значение 3), а у синей машинки после столкновении с препятствиями уже 1 жизнь (её переменная Жизни хранит значение 1). Теперь выберите зелёную машинку и соберите ей первый скрипт. При запуске проекта скрипт установит значение переменной Жизни в 3 и пере- местит спрайт в точку (-80; -100). при нажатии на установить Жизни знач. 0 Щ перейти в точку х €2> у СЕВ Второй скрипт зелёного автомобиля. при нажатии на непрерывно М| если касается установить Направление Зеленой знач. х Направление.Синей изменить х на Направление_3еленой жжщмммщ иначе изменить х на Направление_Синей
Этот скрипт запустится после получения сообщения Старт. Он служит для того, чтобы зеленая машинка перемещалась вправо и влево в соответствии со значени- ем переменной Направление.Зеленой, если она не касается соперника. Если же она коснётся синей машинки, то значение переменной резко изменится, не давая проехать сквозь соперника. Третий скрипт зелёного автомобиля ждёт наступления условия проигрыша. когда я получу ста. ждать до касается Скала левая ▼ ? Жизни о <► говорить Проиграл! в течение сек 1 стоп во После получения сообщения Старт скрипт ждет столкновения елевой или пра- вой скалой либо ждёт обнуления переменной Жизни Если хотя бы одно из трёх условий выполнится, то спрайт признает поражение и остановит выполнение про- екта. Четвёртый скрипт зелёного автомобиля отвечает за взаимодействие с пре- пятствиями. когда я получу Стар! непрерывно касается ПрепятствиеЯ ? После получения сообщения Старт скрипт непрерывно ждёт касания препят- ствия, и если это произойдёт, то он уменьшает значение переменной Жизни на 1. Второй блок ждать не позволяет при касании препятствия измениться значению переменной больше 1 раза. Скопируйте скрипты зелёного автомобиля синему и немного измените их. Принцип работы скриптов вы уже знаете.
Первый скрипт синего автомобиля. при нажатии на установить Жизни знач. перейти в точку х У 100 Второй скрипт синего автомобиля. иначе изменить х на Направление_Синей Этот скрипт запустится после получения сообщения Старт Он служит для того, чтобы синяя машинка перемещалась вправо и влево в соответствии со значени- ем переменной Направление.Синей, если она не касается соперника. Если же она коснётся зелёной машинки, то значение переменной резко изменится, не давая проехать сквозь соперника. Третий скрипт синего автомобиля. когда я получу Старт ждать до Проиграл Жизни говорить в течение сек касается Скала правая
Четвёртый скрипт синего автомобиля. KOI да я получу Старт непрерывно Т касается Препятствие ? ждать до изменить Жизни на I не касается Препятствие ? Теперь запрограммируем левую скалу, у неё будет всего 3 скрипта. Скрипты правой скалы будут очень похожи на скрипты левой, поэтому после создания скриптов левой скалы просто скопируйте их на правую и немного измените. Первый скрипт левой скалы. при нажатии на перейти в точку х спрятаться У удалить этого клона повторять При запуске проекта скрипт переместит спрайт в точку (-240; 180) и спрячет его. Далее скрипт на всякий случай удалит всех клонов, которые могли остаться от предыдущих запусков проекта. Второй скрипт левой скалы. когда я получу Старт непрерывно ]ИНМ ждать клонировать я ▼ 1.2 2 2 сек. Этот скрипт будет непрерывно, с интервалом от 1,2 до 2,2 секунд, создавать клоны скалы.
122 Глава 17. Управление двумя потенциометрами. Игра «Гонка в пустыне» для двоих Третий скрипт левой скалы описывает поведение нового клона. когда я создан как клон перейти в точку х случайное число от до изменить костюм на случайное число от Q до указывать в направлении случайное числи от 360 <20 установить размер в случайное число от 0 Д° показаться повторять пока не изменить у на удалить этого клона -180 О у позиция х Скорость Сразу же при создании клона он переместится в точку с координатой Y, рав- ной 180 (на верх сцены), и координатой X, случайно выбранной из диапазона от -240 до -140. Затем спрайт выберет один из двух своих костюмов и повернётся в случайном направлении. Размер клона также будет изменён случайным обра- зом от 80 до 120%. Это сделано для того, чтобы каждый следующий клон не был похож на предыдущий, и цепь скал казалась непредсказуемой. После изменения внешнего вида клон покажется и плавно проплывёт сверху донизу. Так как значение переменной Скорость не будет изменяться на протяже- нии всей игры, то изменяться координата Y будет на -1. Клон будет плыть вниз, пока его координата Yне станет менее -180, затем клон будет удален. Скопируйте скрипты левой скалы правой скале и немного измените их. Первый скрипт правой скалы должен стать вот таким. при нажатии на перейти в точку х€5>у спрятаться и OR Г О р ч т
Второй скрипт правой скалы. Третий скрипт правой скалы. и когда я создан как клон перейти в точку х случайное число от до изменить костюм на случайное число от Q до указывать в направлении случайное число от 240 0 360 120 установить размер в случайное число от до показаться повторять пока не изменить у на -180 О у позиция ДЬ х Скорость удалить этого клона Скрипты препятствия будут похожи на скрипты скал: скопируйте скрипты пра* вой скалы препятствию и немного измените их. Первый скрипт препятствия. при нажатии на И перейти в точку х о спрятаться повторять 'СО ОЧ? У
Второй скрипт препятствия. Третий скрипт препятствия. когда я создан как клон | переместиться на СВ слоёв назад 180 изменить костюм на указывать в направлении случайное число от о до установить размер в случайное число от до О показаться повторять пока не изменить у на удалить этого клона -180 О у позиция х Скорость Четвёртый скрипт препятствия нужно создать с нуля. ни< ДЛ I» СОЗДЛн кЛн и/1Он | ' . ждать до касается Зеленая ? или касается Синяя ? I । >3 *" * удалить этого клона Скрипт будет постоянно ждать касания с одной из машинок, и если это про- изойдёт, то клон препятствия будет удалён Сохраните проект и протестируйте его работу. Постарайтесь не врезаться в пре- пятствия.
Задания I Замедлите скорость движения автомобилей в 2 раза 2 Уменьшите размер всех клонов скал в 2 раза. 3. Сделайте так, чтобы препятствия появлялись в 2 раза реже. 4. Увеличьте начальное количество жизней до 5. 5. Добавьте звук удара о скалу и о препятствие. Совет Если программа работает некорректно, это значит, что при созда- нии локальных переменных Жизни вы неправильно установили пе- реключатель типа переменной, Удалите переменные и создайте их еше раз.
ГЛАВА 18 ЗУММЕР АЗБУКА МОРЗЕ Давайте сделаем проект, который будет переводить введённый с клавиатуры текст в сигналы азбуки Морзе. Проект достаточно сложный, в нем будут использо- ваться списки и вложенные циклы для (for). ЗНАКОМСТВО С ЦИКЛОМ FOR В этом проекте мы впервые будем использовать цикл со счётчиком for Счётчик - это переменная, которая используется только внутри этого цикла и не видна другим блокам скрипта. При первом проходе цикла значение счётчика равно 1, при втором 2 и так далее. Если мы введём начальное значение счётчика больше конечного, то значение счётчика будет уменьшаться. При первом проходе цикла значение счетчика будет равно 10, при втором 9 и так далее.
СБОРКА СХЕМЫ Подключите зуммер к плате Arduino, как описано в главе 3. ПРОГРАММИРОВАНИЕ ARDUINO Вначале, как обычно, необходимо создать четыре переменные: Азбука, Морзе, Текст, Сообщение Азбука J Д Морзе Сообщение Текс^Ъш Переменная Азбука будет содержать список букв русского алфавита, перемен- ная Морзе будет хранить соответствующие коды букв, переменная Текст - вве- денный с клавиатуры текст, а переменная Сообщение - введенный текст, пере- веденный в код Морзе.
В проекте будут использованы два собственных блока - и из главы 3. Соберите их. ОК Применить Отменить //. Блок Точка будет издавать писк длительностью 0,2 секунды при подключе- нии зуммера к пину А2. ОК Применить Отменить Блок будет издавать писк длительностью 0,6 секунды при подключе- нии зуммера к пину А2. В проекте будет только один спрайт - стрелка, и у неё будет лишь один скрипт. Соберите его.
Обратите внимание! На картинке переменной Азбука присваивается значение списка только с первыми шестью буквами алфавита. Вам необходимо вне- сти в список весь алфавит. Переменной Морзе также присваивает- ся значение списка только с первыми шестью кодами. Вам необхо- димо внести в список все коды Морзе, воспользуйтесь таблицей из главы В. и(,.и ~ ,|ии . ;•> установить < ... ни. знач | установить Азбука знач. список 0 0 0 0 0 0] установить Морзе знач. списокепвавя * ИИ. к ". '1LWL1” И Ж/1.111 \ Г установить • знач ответ для i от о до длина of text Текст установить Сообщение знач. if Q буква слова Сообщение - О ►
При запуске проекта всем переменным будут присвоены начальные значения. Затем появится вопрос, а введённый ответ будет помещён в переменную Текст. Далее начнут работу два вложенных цикла со счётчиками. Внешний цикл будет поочерёдно перебирать буквы переменной Текст, счётчик внешнего цикла - пе- ременная i. Внутренний цикл будет искать соответствие очередной буквы в списке Азбука, счётчик внутреннего цикла - переменная к. Как только соответствие будет найдено, из переменной Сообщение будет добавлен соответствующий элемент списка Морзе, а также наклонная черта, разделяющая одну букву от другой. Таким образом, если, например, введён текст «абба», то после завершения работы ци- клов значение переменной Сообщение будет равно Следующий цикл for «проиграет» переменную Сообщение на зуммере с ис- пользованием собственных блоков Точка И из главы 3. Он будет пооче- редно перебирать символы переменной Сообщение, и если встретит символ«.», то пропищит 0,2 секунды, если встретит символ «-», то пропищит 0,6 секунд, а если встретит «/», то сделает паузу в 0,6 секунд. Сохраните проект и протестируйте. Задания 1. Увеличьте в 2 раза скорость звучания сигналов азбуки Морзе. 2. Сделайте так, чтобы стрелка отображала при помощи блока говорить ту букву, которую ищет в списке Азбука 3. Добавьте проверку введённого текста. Если будет введён сим- вол, отсутствующий в списке Азбука, то программа должна по- просить ввести текст заново.
ГЛАВА 19 МНОГОФУНКЦИОНАЛЬНЫЕ ПЛАТЫ ARDUINO Сердцем и мозгом платы Arduino Uno является 16-разрядный микроконтрол- лер АТМеда328. На базе этого контроллера разработаны и другие специальные платы, которые расширяют возможности платы Arduino Uno. На таких платах инте- грированы дополнительные датчики и модули, зуммер, RGB-светодиоды, кнопки и другие устройства. Также многие из подобных плат оборудованы драйверами двигателей для подключения моторов и серводвигателей. На некоторых платах установлены «телефонные» разъемы (типа RJ25, RJ11) для простого, быстрого и надежного подключения внешних устройств. Такие разъемы удобны при само- стоятельном обучении юными конструкторами и при проведении занятий с деть- ми в школах и кружках робототехники. Существует не менее десятка подобных плат. Наиболее известны и доступны в России mCore, Lafvin, Romeo, ELF Mainboard, SPBot и др. ПЛАТА SPBOT На примере SPBot, покажем, какие преимущества предоставляют специа- лизированные платы при выполнении экспериментов. Плата SPBot показана на рисунке. Она подключается к ПК с помощью кабеля USB Туре-С, имеет размеры -80-90 мм (немного больше Arduino Uno) и весит около 100 грамм.
В отличие от платы Arduino Uno на плате интегрированы: • два адресных RGB-светодиода; • датчик освещенности; • два ИК-приемника; • ИК-передатчик; • зуммер; • тактовая кнопка; • драйвер двигателя для подключения двух редукторных моторов.
А также в отличие от Arduino Uno на плате размещены дополнительные разъ- ёмы, для более удобного подключения внешних устройств: • разъёмы RJ25 для простого, быстрого и надёжного подключения внешних устройств; • разъём для подключения модуля Bluetooth; • разьём для удобного подключения серводвигателя в передней части платы; • разъём для подключения гироскопа; • разъём для подключения светодиодной матрицы 8x8, ЖК-дисплея и др. Кнопка ИК-приемник (02) управления (А7) Кнопка перезагрузки Reset 3QOW Светодиод RGB левый (D13) Датчик освещенности (Аб) GND5VO12 GN0 5VD11 GND5VO10 GN0WM SPBot Цифровые пины для J подключения] гироскопа, матрицы 8x8 и др. ою 011 D12 GN0 VIN1 SDA SDA SCI SCI GND VIN? 5V | Аналоговый пин (АЗ) для подключения ' серводвигателя ""И Ж: А)Ц| ИК-передатчик (D3) Зуммер (D8) ЦиФ> Моторы о тт DC3 Светодиод RGB правый (D13) Аналоговые пины для подключения внешних датчиков и модулей (А0.А1.А2.АЗ) внешних датчиков и модулей (D2, D3) DC3 7 A05VGND A15VGND A25VGND к
Питание платы осуществляется либо от кабеля USB, либо от одного аккумуля- тора 18650 3,7 В (в плату интегрировано зарядное устройство), либо от 4 бата- реек/аккумуляторов ДА (запасной вариант). ЗАГРУЗКА ПРОШИВКИ FIRMWARE Как и для платы Arduino Uno на плату SPBot необходимо загрузить прошив- ку Firmware. Однако, если загрузить стандартную рекомендованную (прошивку FirmataSAS tone), которую мы загружали в Arduino Uno, то часть функционала платы SPBot будет недоступна (не будет работать RGB-светодиоды, датчик осве- щения и кнопка управления). Для платы SPBot «стандартная» прошивка была рас- ширена с учётом особенностей её конфигурации. Для загрузки расширенной про- шивки (SA5Firmata_tone_neopixel.zip) выполните следующее. Скачайте по ссылке https://bhv.ru/bhv zip/ 9785977539821 .zip дистрибутив прошивки SA5Firmata_tone_neopixel.zip и разархивируйте его в любое место на диске libraries L Папка с файлами SA5Firmata_tone_neopixel Папка с файлами SA5Firmata.tone_neopwel.xml Докуменг XML = 20.4 КБ Разархивируйте библиотеки из архива Libraris.zip в папку, в которую вы устано- вили Arduino IDE. Например, C:\Users\acer\Docupients\ Arduino\Ubraries Q > — Документы > Arduino > libraries > J AdafruitGFX Ц AdafruitNeoMatrix AdafruitNeoPixel ArduinoNunchuk .Firnnata IRremote LiquidCrystal_l2C Servo Запустите Arduino IDE и укажи- те, к какому СОМ-порту подключена плата Arduino. Выберите раздел меню Инструменты, затем Порт, укажите порт or newer. Плата: 'Arduino Nano“ ► (^Пррт -COM4^) ► Serial ports Получить информацию о подключенной плате СОМ20 Processor *АТтеда328Рв ► глк/z
Загрузка прошивки Firmware 135 Выберите раздел меню Инструменты, затем Платы и выберите плату Arduino Nano. Обратите внимание: Nano, Загрузка корневого сертификат SSL Ги а ta ’AfOuir-j Nano порт. -COM2Q- Менеджер плат™ • Arowno AVR Boards ► Atcuinc Duemiano V Агашпс Nano Arduino Неда ск М Arduino Меда АОк получить инфосмац/ю о подключенной esp32 Aroumc Leonardo ► а не Uno! Теперь необходимо загру- зить в Arduino специальный скетч, с помощью которого плаза SPBot будет общаться coSnap4Arduino. Выберите раздел меню Файл, затем Открыть и затем скетч SA5Firnata_tone neopixel.ino, который мы скачали и разархивировали на первом 2 sketch_may23a | Ardumo ЮЕ 232 Файл Изменить Скетч Инструменты Справка Mew Sketch rduino Nano Mew Cloud Sketch Открыть предыдущий Альбом tup() { t your setup codA here, to run one шаге. После того как вы выберете скетч SA5Firnata_tone_neopixel.ino, он появится в окне Arduino IDE. Теперь необходимо загрузить его в плату SPBot - прошить ее. Для этого нажмите кнопку Загрузить на плату Начнется процесс загрузки, сопровождаемый пояснениями. По окончании загрузки появится информационное сообщение. Вывод £ Скетч использует 18714 байт (<>0Х) памяти устройстпя. Всего доступно 30720 байт. Шобалыше переменные используют 1122 байт (54%) динамической памяти, оставляя 926 байт для локалышх переменных. "С:\Users\acer\AppDdt.a\local\Ar-duinol5\packdges\drduino\tools\dvrdude\b. З.о arduinoiz/bin/dvrdude" " CC:\Users\dc. avrdiide: Version 6.3-20190619 1 | I I Copyright (c) 2000-2005 Brian Dean, http://vMM.bdniicro.cor/ | Copyright (с) 2007-2014 Joerg Wunsch _________________________________________________________________________Строка 1. столбец 1 Aiduino Nano вкл COM4 £? 2 В
ДОБАВЛЕНИЕ НОВЫХ БЛОКОВ В SNAP4 ARDUINO По умолчанию в разделе Arduino в приложении Snap4Ardumo размещены стан- дартные блоки взаимодействия платы Arduino Uno и приложения (см. стр. 11). Если вы хотите использовать RGB-светодиоды или пассивный зуммер, вам надо установить дополнительные блоки. Для этого нажмите пиктограмму и затем Импорт... # Неозаглавленный | Движение . Внешность к Звук Перо Notes..._______ Новый проект Открыть Сохранить Сохранить как AN ЛО AS Скрипты Spnte У ДВИЖИМЫЙ КОСТЮМЫ Звуки О Подключиться к Ai Отключиться от Ai 73Г:тлпгг7Г>о0ать проект Сводка экспортируемых данных Hide blocks New category.. Выберите файлы описания блоков SA4Firmate_tone_neopixel.xnL и нажмите Открыть libraries Папка с файлами SA5FirmataJone_neopixel Папка с файлами SA5Firmatajone.neopixel.xml Докуменг XML 204 КБ Новые блоки появятся на вкладке Arduino в разделе Новый блок 'Д* Топе pinоюHz СЭ ms
Цифровые выходы. Моргаем цветными светодиодами 137 Теперь выполним несколько экспериментов. Обратите внимание! Нозые блоки привязываются не к приложению, а к конкретному про- екту. Поэтому нужные блоки необходимо импортировать каждый раз, если вы хотите их использовать в проекте. ЦИФРОВЫЕ ВЫХОДЫ. МОРГАЕМ ЦВЕТНЫМИ СВЕТОДИОДАМИ В главе 1 показано, как подключить к плате Arduino Uno светодиод и управ- лять им. На плате SPBot установлен один обычный светодиод и два адресных RGB-светодиод. В отличие от обычного светодиода, RGB-светодиод может излу- чать цвет, который задаётся сочетанием красного (R), зелёного (G) и синего (В) цвета. Адресные светодиоды имеют «на борту» небольшую микросхему, которая позволяет обращаться к конкретному светодиоду. Такие светодиоды используются на светодиодных лентах. Рассмотрим, как управлять RGB-светодиодами, установ- ленными на плате. 1. Подключитесь к плате SPBot, как делали ра- нее для подключения к плате Arduino. 2. Установите галочку JavaScript extention Если эту галочку не установить, то импортиро- ванные блоки, написанные на языке JavaScript, работать не будут! О \ Неозаглавленный <е Э Язык Масштаб блоков кода Обесцвечивание блоков si Размер сцены ые Разрешение микрофона... 3 JavaScript extensions □ Extension blocks □ Использование бегунков ввода пгы 3. Импортируйте блок SA4Firnate_tone_neopixel.xnl, (если не импортирова- ли его ранее). 4. Создайтескрипт, показанный на рисунке. При нажатии на флажок светодио- ды будут мигать синим и красным цветом
при HdMdirtn на лпагь I г I» NfMtPUtEl stripe to pm непрерывно ^НМННИНННМ Э «Подключаем» — 2 адресных светодиода клину 13 Ждём 1 Ждём 0,1 Ждём 1 G: 2ЬЬ 0 сек ждать 1 сек. ----Левый светодиод (0) не горит — Правый светодиод (1) «синий» сек. Сек —— ждать 1 сек. Правый светодиод (1) не горит ЦИФРОВЫЕ ВЫХОДЫ. ЗУММЕР В главе 3 рассмотрено подключение к плате Arduino Uno активного зуммера. На плате SPBot установлен пассивный зуммер, который в отличие от активного, может не только издавать звук «бип», но и воспроизводить ноты, которые задают- ся частотой звука (в Гц) и продолжительностью воспроизведения (в мс). Как и в предыдущем эксперименте, подключитесь к плате SPBot, устано- вите галочку на опции JavaScript extentions и импортируйте в проект блок SA4Ftrmate_tone_neopixel.xni‘l. На рисунке ниже приведен скрипт проекта, который имитирует вой сирены. при нажатии на знач Присвоили переменной val значение "‘0’ непрерывно установить val
Датчик инфракрасного излучения. Управление светодиодом от телевизионного пульта 139 ДАТЧИК ИНФРАКРАСНОГО ИЗЛУЧЕНИЯ УПРАВЛЕНИЕ СВЕТОДИОДОМ ОТ ТЕЛЕВИЗИОННОГО ПУЛЬТА В главе 8 мы подключали к плате Arduino Uno датчик инфракрасного излуче- ния и использовали ТВ-пульт для управления персонажем. На плате SPBot два та- ких датчика интегрированы на плате и оба подключены к пин 2. На рисунке ниже показан скрипт, который включает RGB- светодиод на плате SPBot, когда вы нажи- маете любую кнопку на ТВ-пульте. Если кнопка ИК-приемник принимает сигнал, — то цифровое значение пина 2 равно Ждем 0.1 сек — при нажатии на atta< h Q L t D NeoPbtel stripe to pm непрерывно 1‘ «Подключаем» 13 — 2 адресных светодиода клину 13 не горит Ждем 0.5 сек — иначе Левый светодиод (0) «красный» Генерация звука с частотой 2000 Г ц и длительностью 100 мс Между прочим Чтобы определить кнопку, которую вы нажали на пульте, сигнал надо расшифровать. Для этого потребуется загрузить специальную про- шивку SA5Firmata_ir.ino и установить блоки SA5Firmata_ir.xml, которые можно найти на сайте программы [https://snap4arduino. rocks/). АНАЛОГОВЫЙ ВХОД. УПРАВЛЯЕМ СВЕТОДИОДОМ И ЗУММЕРОМ С ПОМОЩЬЮ кнопки В главе 4 мы подключали к пину 2 платы Arduino Uno тактовую кнопку. На плате SPBot тактовая кнопка уже установлена, только подключена не к цифровому, а к аналоговому пину (А7). Ни рисунке ниже показан простой скрипт, который при нажатии кнопки включает красный светодиод и генерирует звуковой сигнал. Если кнопка не нажата, то значение пина А7 равно 1023, а если нажата, то 0.
Между прочим Аналоговые пины Аб и А7 недоступны на плате Arduino Uno, хотя имеются на микроконтроллере АТМеда328, на базе которого соз- дана Arduino Uno. Таким образом, на плате SPBot имеются два до- полнительных аналогового выхода. Если кнопка нажата, то «аналоговое •ttach I f D NaoPivsI «tripe to pu H*npep».• MG «Подключаем» — 2 адресных светодиода клину 13 значение» = 0, а если отпущена — 1023. Ждем 0.1 сек Ждём 0 5 сек — иначе 0 — Левый светодиод (0) «красный» (255.0.0) —— Генерация звука с частотой 2000 Гц и длительностью 100 мс АНАЛОГОВЫЕ ВХОДЫ. ИЗМЕРЯЕМ ОСВЕЩЁННОСТЬ В главе 8 для демонстрации работы аналогового входа показано управление платой Arduino Uno с помощью фоторезистора, который подключается к плате. На плате SPBot фоторезистор интегрирован на плате к пину Аб. Воспользуемся де- монстрационным примером «Pressure sensor force meter», который имеется в кол- лекции примеров Snap4Ardumo. О # S4A - fore Hide blocks Сохранить как . New category.. Generate puzzle Nev/ scene Add scene... Библиотеки vupiet Count Change Импорт... Экспортировать проект Сводка экспортируемыхданных icecream Visual jSfunctions LED-tnggertng virtual cat Line tracer robot Etch a Sketch Live Tree МеДдр rnl¥itir arm example Pressure sensor force mete? Computer
Приближая и удаляя ладонь от платы SPBot, вы изменяете освещённость фото- резистора. Значения освещённости выводятся на сцене около переменной light и визуализируются чёрной полоской «силомера» на сцене проекта. Для данного примера установка дополнительных блоков не требуется. Sprue J fltMSVMelA Cbp.irrm Когтимы Злу<г I установить kgnt внач «налоговое установить у light <kjb Присвоили значение координаты y=Hght-125 на сцене справа для спрайта Присвоили переменной ина значение аналогового пина 6 1U.J Между прочим Скрипты этой главы можно скачать по ссылке: httpsjL' zjp.bhv.CU/ 9785977519984 .zip В ЭТОЙ ГЛАВЕ В этой главе мы показали, что с помощью приложения Snap4Arduino можно разрабатывать скрипты не только для платы Arduino Uno. Snap4Arduino поддер- живает работу с другим платами (например, mCore, Lafvm, SPBot, Picaxe, micro:bit, Lego WeDo и рядом других). Применение специализированных плат упрощает процесс обучения, отлад- ки и создания скриптов игр и электронных устройств. Это связано с тем, что ряд компонентов уже интегрирован на плату и вам не надо тратить время на их под- ключения и обеспечивать надежные соединения. Кроме того, на некоторых пла- тах разъемы сконфигурированы для удобного подключения внешних датчиков и модулей.
К сожалению, Snap4Arduino не имеет режима офлайн, как например, mBIock или MindPlus, т. е. плата должна быть «привязана» к компьютеру кабелем USB. Однако для удалённого управления ва- шим устройством можно использовать модуль Bluetooth (типа НС-05). На ри- сунке ниже показан мобильный робот на базе SPBot. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА Голиков Д. Scratch 3 для юных программистов. - СПб.: БХВ- Петербург, 2024. - 168 с. Голиков Д. 42 проекта на Scratch 3 для юных программиаов. - СПб.: БХВ- Петербург, 2024. - 184 с. Голиков Д. Знакомьтесь, это Snap! - Екатеринбург: Издательские решения, 2017.- 330 с. Блум Дж. Изучаем Arduino: инструменты и методы технического волшебства, 2-е изд.: пер. с англ. - СПб.: БХВ- Петербург, 2024. - 544 с. Платт Ч. Электроника для начинающих: пер., с англ. - 3-е изд. - СПб.: БХВ- Петербург, 2024. - 352 с. Винницкий Ю., Григорьев A. Scratch и Arduino для юных программистов и кон- структоров, 2-е изд. - СПб.: БХВ-Петербург, 2022. - 232 с. Григорьев А., Винницкий Ю. Робототехника в школе и дома. Книга проектов. - СПб.: БХВ-Петербург, 2022. - 240 с.
SPBot МНОГОФУНКЦИОНАЛЬНЫЙ ARDUINO-СОВМЕСТИМЫЙ КОНТРОЛЛЕР ДЛЯ ШКОЛ, КРУЖКОВ И САМОСТОЯТЕЛЬНОГО КОНСТРУИРОВАНИЯ ЭЛЕКТРОННЫХ УСТРОЙСТВ Светодиод RGBm Кнопка ИК-приемник Разъем USB Туре-С Фотпрезистор (! г ик-приемник ик-передатчик Разъемы питания Разъемы мотооов Зуммер g ДАТЧИКОВ И МОДУЛЕЙ, ИНТЕГРИРОВАННЫХ НА ПЛАТЕ кнопка внешнее управление программой зуммер звуковой сигнал RGB светодиод (2): юрят разными цветами а фоторезистор реагирует на освещение а ИК-приемник (2) принимает сигнал ИК-пулы а а ИК-передатчик передает ИК-сигнал а драйвер двигателя для подключения двух двигателей а разъем для подключения светодиодной матрицы SPI разъем для подключения модуля Bluetooth • разъем для подключения серводвигателя 3 ВАРИАНТА ПИТАНИЯ разъем USB Туре-С (5 В) а разъем ХН (3.7 В. аккумулятор 18650) разъем DC 2.1x5 5 (6 В. 4 АА 1„5 В) ~7 СПЕЦИАЛИЗИРОВАННЫХ РАЗЪЕМОВ / ДЛЯ ПОДКЛЮЧЕНИЯ ВНЕШНИХ УСТРОЙСТВ а разъемы для подключения гироскопа I2C (2) а разъемы для подключения двигателей (2) ~7 ШТЫРЕВЫХ РАЗЪЕМОВ GVS / ДЛЯ ПОДКЛЮЧЕНИЯ ВНЕШНИХ УСТРОЙСТВ а цифровые разъемы (4) а аналоговые разъемы (3) /. РАЗЪЕМА ТИПА RJ25 Ч ДЛЯ ПОДКЛЮЧЕНИЯ УСТРОЙСТВ https://bhv.ru/praduct/spbot
ИНТЕРНЕТ-МАГАЗИН BHV.RU Интернет-магазин издательства «БХВ-1 Более 30 лет на российском рынке Книги и наборы по электронике и робототехнике по издательским ценам КНИГИ, РОБОТЫ, ЭЛЕКТРОНИКА Электронные архивы книг и компакт-дисков • Ответы на вопросы читателей БХВ-Электроника bhv.ru/elements Электронные компоненты для мейкеров fl "Ж