Скетчи для Arduino
Скетчи для Arduino – важный элемент программирования, без которого невозможно функционирование и запуск цифровых процессов в среде разработки Arduino IDE. Новичкам и начинающим пользователям приложения бывает сложно разобраться с прошивкой, хотя создатели ПО вложили в нее много готовых примеров и подсказок.
Давайте поговорим об основных нюансах, которые связаны с библиотеками и прошивкой – и вы поймете, насколько это интересно и увлекательно. Последний этап можно разделить на 2 основные шага:
Первый вариант является наиболее простым и самым распространенным. Ничего искать и скачивать из сети не нужно. Просто открываем среду Arduino IDE, заходим в меню, выбираем Файл, затем пункт Примеры, иподпункт Basics. Кликаем на один из самых простых примеров:
Запускаем его и работаем.
Обратите внимание на Панель управления софта (мы незаслуженно обходили ее стороной, исправляемся). Она имеет несколько клавиш.
Напомним их предназначение:
Выбранный ранее скетч загружается в особую область памяти микроконтроллера. При дальнейшем постоянном использовании запускается в автоматическом режиме уже без вашего вмешательства и правок.
Ну и поговорим немного о сторонних скетчах, которые вы наверняка заметили в каждом нашем материале и схеме подключения на конкретных проектах. Если описывать наглядно, как выглядит методология их применения, то получится так. Сначала вы копируете скетч, вставляете его в соответствующее окно в утилите, кликаете на кнопку Компиляция, дожидаетесь ее окончания. Просто, не так ли?
Ну и напоследок отметим, скачать скетчи для Arduino можно на нашем веб-сайте в данном разделе. Выбирайте тот файл, что вам нужен и дерзайте!
Scratch — язык программирования для детей
Применения визуального языка программирования Scratch и возможности его использования.
Тенденция на повышение компьютерной грамотности и освоение технологий с самого раннего возраста привела к тому, что все больше родителей хотят обучать детей основам программирования с раннего возраста. Создание сайтов или своих проектов в привычных средах разработки вряд ли заинтересует 7-летнего ребенка, и для решения этой проблемы в 2003 году в MIT появился первый прототип языка Scratch, специально предназначенного для обучения школьников младших и средних классов основам создания собственных игр, анимаций и совместной работы над проектами.
Что такое Scratch
Скретч создан как продолжение идей языка Лого и конструктора Лего. Скретч 1.4 был написан на языке Squeak, Скретч 2.0 и 3.0 ориентированы на работу онлайн. Скретч 2.0 был переписан на Flash и ActionScript. Скретч 3.0 (текущая версия) является улучшенной версией Скретч 2.0 и сделана на HTML5, используя движок WebGL, что даёт ему возможность работать на мобильных устройствах и планшетах. Скретч разрабатывается небольшой командой программистов для детей в Массачусетском технологическом институте. Текущая версия — Скретч 3.0, выпущена в январе 2019 года.
Scratch — это визуальная объектно-ориентированная среда программирования. В ней ученики управляют объектами-спрайтами. Для них задается графическое представление, которое может быть импортировано из любого источника изображения, и скрипт действий, который составляется из блоков по принципу drag-and-drop. Эти блоки бывают нескольких видов:
Самое распространенное применение Scratch — это обучение детей программированию в форме создания мультфильмов или игр. Помимо этих применений, Scratch можно использовать для образовательных целей и создавать в программе иллюстративные материалы для уроков не только по программированию, но и по истории, биологии, физике и другим предметам. С версии 2.0 была добавлена функция звукового редактора, что расширяет возможности работы с разными видами данных.
Примеры приложений
Вот несколько примеров проектов, созданных при помощи платформы:
Как начать разработку на Скретч
Пользоваться Scratch можно полностью бесплатно как в онлайн-версии, так и в офлайн-редакторе. В 2014 году также вышла версия Scratch для детей младшего возраста под названием ScratchJr. Это мобильное приложение для Android и iOS, в котором дети так же управляют спрайтами, только в более упрощенной форме. В блоках не используется текст, поэтому дети могут учиться программировать до того, как научатся читать, и им доступен ограниченный набор действий: простые движения спрайтов и работа со звуками и изображениями.
Как написать скетч?
Послесловие к базовым урокам
Вот и закончился базовый курс уроков программирования Arduino. Мы с вами изучили самые базовые понятия, вспомнили (или изучили) часть школьной программы по информатике, изучили большую часть синтаксиса и инструментов языка C++, и вроде бы весь набор Ардуино-функций, который предлагает нам платформа. Подчеркну – мы изучили C++ и функции Ардуино, потому что никакого “языка Arduino” нет, это ложное понятие. Arduino программируется на C или ассемблере, а платформа предоставляет нам всего лишь несколько десятков удобных функций для работы с микроконтроллером, именно функций, а не язык. Теперь перед нами чистый лист блокнота Arduino IDE и желание творить и программировать, давайте попробуем!
Структура программы
Прежде, чем переходить к реальным задачам, нужно поговорить о некоторых фундаментальных вещах. Микроконтроллер, как мы обсуждали в самом начале пути, это комплексное устройство, состоящее из вычислительного ядра, постоянной и оперативной памяти и различных периферийных устройств (таймеры/счётчики, АЦП и проч.). Обработкой нашего с вами кода занимается именно ядро микроконтроллера, оно раздаёт команды остальным “железкам”, которые в дальнейшем могут работать самостоятельно. Ядро выполняет различные команды, подгоняемое тактовым генератором: на большинстве плат Arduino стоит генератор с частотой 16 МГц. Каждый толчок тактового генератора заставляет вычислительное ядро выполнить следующую команду, таким образом Ардуино выполняет 16 миллионов операций в секунду. Много ли это? Для большинства задач более чем достаточно, главное использовать эту скорость с умом. Зачем я об этом рассказываю: микроконтроллер может выполнить только одну задачу в один момент времени, так как у него только одно вычислительное ядро, поэтому реальной “многозадачности” нет и быть не может, но за счёт большой скорости выполнения ядро может выполнять задачи по очереди, и для человека это будет казаться многозадачностью, ведь что для нас “раз Миссисипи“, для микроконтроллера – 16 миллионов действий! Есть всего два варианта организации кода:
“Многозадачность” с yield()
Таким же образом можно опрашивать энкодер или другие датчики, которые требуют максимально частого опроса. Не менее жизненным будет пример со сценарием движения шагового мотора или плавного движения сервопривода, которые требуют максимально частого вызова функций опроса. Рассмотрим абстрактный пример движения мотора по нескольким заданным точкам, функция вращения мотора должна вызываться как можно чаще (так сделано почти во всех библиотеках для шаговых моторов):
Таким образом мы быстро и просто расписали “траекторию” движения для шагового мотора по времени, не используя какие-то таймеры или библиотеки таймеров. Для более сложных программ, например с движением двух моторов, такой фокус уже может не пройти и проще работать с таймером.
“Многозадачность” с millis()
Первым делом внесём такую оптимизацию: сократим код вдвое и избавимся от одной задержки, используя флаг:
Хитрый ход, запомните его! Такой алгоритм позволяет переключать состояние при каждом вызове. Сейчас наш код всё ещё заторможен задержкой в 1 секунду, давайте от неё избавимся:
Что здесь происходит: цикл loop() выполняется несколько сотен тысяч раз в секунду, как ему и положено, потому что мы убрали задержку. Каждую свою итерацию мы проверяем, не настало ли время переключить светодиод, не прошла ли секунда? При помощи этой конструкции и создаётся нужная многозадачность, которой хватит для 99% всех мыслимых проектов, ведь таких “таймеров” можно создать очень много!
Данный код всё ещё мигает светодиодом раз в секунду, но помимо этого он с разными промежутками времени отправляет сообщения в последовательный порт. Если открыть его, можно увидеть следующий текст:
Это означает, что у нас спокойно работают 4 таймера с разным периодом срабатывания, работают “параллельно”, обеспечивая нам многозадачность: мы можем выводить данные на дисплей раз в секунду, и заодно опрашивать датчик 10 раз в секунду и усреднять его показания. Хороший пример для первого проекта! Обязательно вернитесь к уроку о функциях времени, там мы разобрали несколько конструкций на таймере аптайма!
“Многозадачность” с прерываниями таймера
Для критичных по времени задач можно использовать выполнение по прерыванию таймера. Какие это могут быть задачи:
Настройка таймера на нужную частоту и режим работы – непосильная для новичка задача, хоть и решается в 2-3 строчки кода, поэтому предлагаю использовать библиотеки. Для настройки прерываний по таймеру 1 и 2 есть библиотеки TimerOne и TimerTwo. Мы сделали свою библиотеку, GyverTimers, в которой есть также таймер 0 (для программирования без использования Arduino.h), а также все таймеры на Arduino MEGA, а их там целых 6 штук. Ознакомиться с документацией и примерами можно на странице библиотеки. Сейчас рассмотрим простой пример, в котором “параллельно” выполняющемуся Blink будут отправляться данные в порт. Пример оторван от реальности, так делать нельзя, но он важен для понимания самой сути: код в прерывании выполнится в любом случае, ему безразличны задержки и мёртвые циклы в основном коде.
Переключение задач
Важнейшим инструментом по организации логики работы программы является так называемый конечный автомат (англ. State Machine) – значение, которое имеет заранее известный набор состояний. Звучит сложно, но на самом деле речь идёт об операторе swith и переменной, которая переключается кнопкой или по таймеру. Например:
Таким образом организуется выбор и выполнение выбранных участков кода. Переключение переменной mode тоже должно быть сделано не просто так, как в примере выше, тут есть варианты:
Ограничить диапазон при увеличении можно несколькими способами. Способы абсолютно одинаковые по своей сути, но записать можно по разному:
Аналогично при уменьшении:
Переключение с первой на последнюю и обратно делается точно так же:
Рассмотрим несколько готовых примеров на базе библиотеки GyverButton:
Флаги
Логические переменные, или флаги, являются очень важным инструментом организации логики работы программы. В глобальном флаге можно хранить “состояние” составляющих программы, и они будут известны во всей программе, и во всей же программе могут быть изменены. Немного утрированный пример:
Состояние глобального флага может быть прочитано в любых других функциях и местах программы, таким образом можно сильно упростить код и избавиться от лишних вызовов. При помощи флага можно организовать однократное выполнение блока кода по какому-то событию:
Также флаг можно инвертировать, что позволяет генерировать последовательность 10101010 для переключения каких-то двух состояний:
Флаги – очень мощный инструмент, не забывайте о них!
Избавляемся от циклов и задержек
Как мигать светодиодом без задержки мы обсуждали выше. А как избавиться от цикла? Очень просто – цикл заменяется на счётчик и условие. Пусть у нас есть цикл for, выводящий значение счётчика:
Для избавления от цикла нам нужно сделать свою переменную-счётчик, поместить всё это дело в другой цикл (например, в loop) и самостоятельно увеличивать переменную и проверять условие:
И всё. А как быть, если в цикле была задержка? Вот пример
Как соединить несколько скетчей?
Чтобы соединить несколько проектов в один, нужно разобраться со всеми возможными конфликтами:
Можно внести все правки в схемы и программы объединяемых проектов, чтобы они не конфликтовали. Далее приступаем к сборке общей программы:
Раньше у нас было два (или больше) отдельно работающих проекта. Теперь наша задача как программиста – продумать и запрограммировать работу этих нескольких проектов в одном, и тут ситуаций уже бесконечное множество:
В большинстве случаев нельзя просто так взять и объединить содержимое loop() из разных программ, я надеюсь все это понимают. Даже мигалку и пищалку таким образом объединить не получится, если изначально код был написан с задержками или замкнутыми циклами.
Пример “Метеостанция”
Сила Arduino как конструктора заключается в том, что абсолютно по любой железке вы сможете найти в Гугле подробное описание, библиотеку, схему подключения и пример работы: полностью готовый набор для интеграции в свой проект! Вернёмся к нашим метео-часам и попробуем “собрать” такой проект из скетчей-примеров, ведь именно для этого примеры и нужны! Нам понадобится:
Начинаем гуглить информацию по подключению и примеру для каждой железки:
Из уроков из Гугла мы узнаём такую важную информацию, как схемы подключения: дисплей и часы подключаются к шине i2c, а датчик ds18b20 можно подключить в любой другой пин. Схема нашего проекта: 
Scratch – дверь в мир программирования
Scratch – это язык программирования, который используется для знакомства детей с данной сферой деятельности. Многие родители считают, что Scratch не нужен, так как это, якобы, ненастоящий язык и лучше ребенку начинать с Python или JavaScript. Увы, такой подход скорее вреден, чем полезен, ведь Scratch как раз и разработан, чтобы в понятной ребенку форме донести основы программирования и дать ему возможность воплотить свои идеи в жизнь.
Не менее важным будет вопрос о том, как постигать данный язык – самостоятельно или воспользоваться курсами. В нашей статье мы расскажем, чем полезен Scratch для детей, что в нем можно сделать, а также как лучше ребенку его осваивать.
Описание языка Scratch
Scratch — это универсальный язык программирования, позволяющий помимо прочего, например, рисовать картины и создавать музыку. Данная особенность является весомой причиной обучать ему детей. К тому же, это еще и полноценный инструмент для программистов.
Среда разработки дает возможность детям редактировать аудиофайлы и монтировать небольшие, но полноценные видеоролики. В новые версии языка создатели обещают добавить функционал для создания собственных мобильных приложений.

Таким образом, Scratch сможет заменить собой сразу несколько программ, ориентированных исключительно на диджитал-разработку. Облачная технология позволяет большому числу пользователей взаимодействовать друг с другом, непрерывно обмениваться знаниями.
Механика программирования на Scratch
Данная среда разработки изначально ориентирована на изучение детьми, поэтому она отличается интуитивной понятностью и дружелюбностью.
Интерфейс условно поделен на 3 функциональных блока:
Перед детьми, начавшими изучать язык, сперва стоит задача перемещать Скрэтча по экрану, обучать его различным навыкам. В процессе этого кот постепенно начинает разговаривать и выполнять некоторые команды. Дети в итоге могут создать целый анимационный фильм с участием Скрэтча и его друзей.
В дальнейшем ребенок уже самостоятельно программирует игры, придумывая для них истории и выбирая героев. Готовая программа будет служить предметом гордости перед одноклассниками и друзьями.
Преимущества занятий Scratch для детей
Эта среда разработки предназначена исключительно для учебных целей и настоящими программистами не используется. Тем не менее, она служит базой для изучения уже профессиональных языков, прививает детям навыки составления алгоритмов в игровой форме.
Сложность на самом первом этапе обучения не нужна — в конце концов, существуют учебники по программированию, позволяющие изучать язык и без наличия компьютера. Взрослый человек осилит синтаксис нового для него языка за 2-3 дня упорной умственной работы. Ребенку же для этого может потребоваться несколько месяцев. Причем, не факт, что он твердо решит стать программистом.
Ваш Путь в IT начинается здесь
Именно для того, чтобы ребенок почувствовал себя в роли программиста, проверил свои интересы, существуют учебные среды разработки, каковой является в том числе и Scratch. Программирование для детей в них подается в виде увлекательной игры. Научившись создавать простейшие программы и имея дальнейшую мотивацию обучаться в этом направлении, ребенок уже захочет переходить на взрослый уровень разработки.
Нюансы ScratchJr
Scratch Junior является ответвлением от основной среды разработки, ориентированным на детей от 5 лет. Сначала разработчики создали соответствующее приложение для iPhone, Android и Kindle, а затем и программу для персональных компьютеров. В первом случае роль главного героя играл кот, во втором же случае взамен появился инопланетянин Тик.
Принцип работы в Scratch Jr подобен сборке конструктора Lego. Ребенок перемещает блоки, соединяя их в требуемом порядке. Правильно размещенные элементы примагничиваются друг к другу.
Все элементы приложения сгруппированы в функциональные блоки: движения, управления, внешнего вида, окончания и запуска. Каждый блок имеет вид иконки, обозначающей конкретную функцию и понятной каждому ребенку.

При использовании среды разработки детям даже необязательно уметь читать и считать. Однако эти навыки помогут создавать, например, программу для отправки сообщений или для перемещения объекта на определенное число клеток.
Спрайты для программирования можно выбирать из весьма обширной встроенной библиотеки. Коллекция также содержит большой выбор ландшафтов.
Добавление собственных изображений здесь не доступно, однако имеется встроенный простейший графический редактор, позволяющий с нуля создать нового персонажа.
Формально Scratch Jr объектно-ориентированным языком программирования не является. Тем не менее, здесь дети сталкиваются именно с объектной моделью. То есть, программа состоит из неких объектов (спрайтов), взаимодействующих друг с другом. Для этого необходимо давать спрайтам соответствующие команды.
Варианты проектов на Scratch
Множество начинающих программистов пользуются данной средой в домашних условиях, в школьных учреждениях, в музеях и библиотеках. Так, Гарвард предлагает к изучению обширный банк онлайн-ресурсов, позволяющий создавать проекты как на детском, так и на профессиональном уровнях. В сети также имеется русскоязычное сообщество любителей Scratch.
Ниже перечислим студии, на которые рекомендуется обратить внимание всем желающим изучить этот язык.
Мы в GeekBrains каждый день обучаем людей новым профессиям и точно знаем, с какими трудностями они сталкиваются. Вместе с экспертами по построению карьеры поможем определиться с новой профессией, узнать, с чего начать, и преодолеть страх изменений.
Карьерная мастерская это:
Уже 50 000 человек прошли мастерскую и сделали шаг к новой профессии!
Запишитесь на бесплатный курс и станьте ближе к новой карьере:
Зарегистрироваться и получить подарки
Помимо этого среда включает в себя множество других возможностей и студий. Ссылки на них можно находить в открытом доступе.
Топ-5 книг для изучения Scratch
Обучение Scratch для детей
Для начала изучения этого языка существуют специальные базовые курсы. Они позволяют детям попробовать себя в роли программиста и, возможно, сделать первый шаг на пути к востребованной профессии.
Чтобы работа приносила удовольствие, нужно сначала найти правильную профессию.
Мы подготовили документы, которые помогут не ошибиться с выбором и определить, какая профессия в IT подходит именно тебе.
Благодаря этим гайдам 76% наших студентов смогли найти востребованную профессию своей мечты.
Обычно эти документы доступны только нашим студентам, мы какое-то время будем раздавать их бесплатно, но очень скоро уберем их из открытого доступа.
Скачивай и используй уже сегодня:
Гайд по профессиям в IT
5 профессий с данными о навыках и средней заработной плате
Чек-лист эффективного обучения от Geekbrains
6 правил, которым необходимо следовать для облегчения обучения
Все профессии, которые есть в IT-сфере
63 профессии и необходимые для них навыки
Рекомендации по книгам для востребованных специалистов
6 направлений деятельности и полезная литература по каждому из них
План программы обычно полностью состоит из практических занятий с домашними заданиями после каждого урока и постоянным взаимодействием с преподавателями. По завершению обучения ученики должны оформить и защитить финальный проект.
Такие курсы подходят детям:
Курс по программированию на Scratch будет полезен по нескольким причинам.
Для примера возьмем курсы GeekSchool. Их отличительные особенности:
Процесс обучения языкам программирования в наше время становится все более простым и увлекательным. Помимо традиционных средств и инструментов, используются также ресурсы Интернета, исключением здесь не является и среда Scratch. Программирование на этом языке будет легким и увлекательным для вашего ребенка, а в будущем станет фундаментом для новой профессии, если вы последуете всем советам и рекомендациям из этой статьи.











