ScratchDuino. Робоплатформа и ArduBlock


.

ScratchDuino - новые горизонты с ArduBlock

Добрый день. Сегодня я несколько изменю порядок своих публикаций по использованию робоплатформы ScratchDuino и сейчас объясню почему... Дело в том, что несколько дней я обдумывал вопрос, как использовать ScratchDuino в качестве переходной платформы между модульно-визуальным программированием (Lego, Scratch) и непосредственно Arduino. Этот вопрос был озвучен при обсуждении возможностей создания УМК по роботехнике и места ScratchDuino в цепочке преподавания. Попробовал несколько вариантов и получил результат, который меня порадовал. Напомню, я совсем не специалист по роботехнике и Arduino, поэтому не удивляйтесь радости от маленьких открытий.
Итак, не озвучивая неудачные эксперименты, перехожу к удачной серии. Соединяем возможности ScratchDuino и Arduino с помощью плагина ArduBlock.

Для начала несколько слов о ArduBlock: специальный плагин визуального программирования для Arduino, позволяющий "собирать" программу в виде блоков (подобно Scratch, хоть и несколько сложнее в понимании работы) и имеющий очень важный плюс: возможность собранную в виде блоков программу, закачать в Arduino в виде нормального скетч-кода. Причем, после закачки в платформу, исполнение кода будет происходить автономно, т.е. не требуется непосредственное управление с компьютера по проводной или беспроводной связи!!!!!

1. Где взять и как установить ArduBlock
Для начала у Вас должна быть установлена собственно программа Arduino (я уже писал в первом посте о платформе), если что - ссылка на страницу загрузки.

Теперь - плагин ArduBlock.
Можно просто взять с основного сайта - страница загрузки.
Причем, посмотрите на закачки: наиболее популярная версия от 2013-07-12, вот ее я и использовал для экспериментов. Возможно, кто-то присоединиться к исследованиям и попробует более новые версии, но по описаниям - там не полная русификация и т.д. Эта же вполне стабильно работает (на Windows точно, но и на Linux вроде как все в порядке, хотя последнее - пока по словам "очевидцев", сам не успел попробовать).
Как устанавливать. 
- Скачиваете файл со страницы загрузки, переименовываете в ardublock-all.jar. 
- Затем в папке «Мои документы» создаем следующую структуру папок:...\Мои документы\Arduino\tools\ArduBlockTool\tool и уже в tool закидываем наш переименованный файл.
Получается так:

Все, больше ничего не требуется) Можно работать.

Да, для "ленивых" сделал архив с файлом и структурой папок, можно скачать и прямо папку Arduino скопировать в Мои документы с заменой (там не заменится, там дополнится нужными элементами).

2. Как запустить ArduBlock
Для начала запускаем сам Arduino, заходим в меню Инструменты и там находим ArduBlock, его и выбираем.

Открывается окно ArduBlock дополнительно к окну Arduino.

Можем начинать программировать. Да, на всякий случай, в меню Arduino-Инструменты-Плата автоматом выбирается наш вариант Arduino Uno, а в Arduino-Инструменты-Порт можно посмотреть, к какому порту подключен робот.

3. Пробуем написать программу
По использованию ArduBlock, как уже говорил, довольно много материалов в сети. Грешен, был настолько увлечен идеей привинтить плагин к ScratchDuino, что просто покопался в блоках, немного фантазии и "научного тыка" и все начало складываться. Как минимум, это свидетельствует о довольно высокой дружественности интерфейса. Поигрался с блоками, понял, как управлять моторами... Ну, и начали программировать):
Для "преемственности" сформируем программу, решающую все ту же задачу с двумя световыми датчиками, реагирующими на освещение и разворачивающими робота к источнику света. Правда, несколько упростил, ну, да главное было проверить гипотезу.
Световые датчики. Решил считать, что они соответствуют своим положениям в предыдущем случае, поэтому занимают порты Аналог 0 и Аналог 4 (несколько экспериментов подтвердили гипотезу). Моторные порты - 5 и 6 (опять же, можно читать мануал разработчиков платформы, но мы ж легкими путями не идем, а потому - проверка и определение))))

Далее пришлось задуматься, как сравнивать данные с датчиков, нет привычных команд... Но зато есть переменные, которым можно присвоить значения с этих портов!

Что получилось в итоге:

В принципе там все понятно: присваиваем переменным svet1 и svet2 значения с датчиков. Далее проверяем, не падает ли на них световой поток (методом проб выяснил, что для текущего света в комнате подходит 500. В принципе, можно дополнить блоком, выводящим значения переменных, но это отдельная тема, на потом)))
По прежнему (платформа та же, датчики почти одинаковые показания показывают при освещенности одинаковым светом) сравниваем поток на один и другой датчик и включаем тот или иной мотор, подавая на порты 5 и 6 сигнал 200 (тоже методом проб, 100 - медленно). Если нужной освещенности нет, подаем на моторы 0.

А вот теперь самое главное!
4. Как посмотреть код и залить его на платформу?
Все очень просто. Для начала сохраним наше решение (кнопка Сохранить) в формате ArduBlock (это позволит потом запускать ее в модульном виде и продолжать работу с блоками).
На всякий случай - наш пример в этом виде:

Download
AB1.zip
Compressed Archive in ZIP Format 1.5 KB

Далее жмем кнопку Загрузить, система спрашивает, куда сохранить программу в виде скетча Arduino

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

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

Причем теперь мы можем просто сохранять файлы уже в виде скетчей. Обратите внимание - открыв файл формата ArduBlock (через плагин), мы получаем и модульную структуру, и код Arduino. Открыв скетч в Arduino - только код.
Пример нашей программы уже в виде скетча:

Download
proba2motorssvet1.zip
Compressed Archive in ZIP Format 554 Bytes

И, напоследок - гвоздь программы)))) Ведь мы "залили" на робота полнофункциональный скетч управления. Т.е. - отсоединяем от проводов, не включаем никаких блютусов, даже джамперы управления не трогаем. А он выполняет программу! Автономно.

Да, единственный минус - теперь для обычного использования платформы со ScratchDuino надо вернуть на место ее управляющий скетч. Я на всякий случай выкладываю универсальный, хотя стоит проверять ftp-сервер разработчиков на предмет обновлений.

Download
sduino_laboratory_robot.zip
Compressed Archive in ZIP Format 2.2 KB

Открываем его в Arduino и загружаем на платформу. Все, как было.

В заключение

Возможно, кто-то не разделит моей радости от найденных решений))) Но для меня это открывает совершенно другой уровень использования платформы. Автономность, переход к кодированию, совершенно другой уровень работы с портами... Вот теперь я вижу место платформы в образовательном процессе)


.

ScratchDuino и ArduBlock. Используем цифровые порты, добавляем "фары" - сигнализаторы.

Продолжим) В прошлый раз мы открывали новые горизонты использования робоплатформы ScratchDuino в образовательном процессе за счет использования плагина ArduBlock. В результате получили возможность переводить модульные конструкции программирования (наподобие Scratch) в полноценный код и скетчи Arduino, попутно сделав нашего робота автономным. Это открыло целый пласт возможностей использования робоплатформы в обучающем процессе, особенно на переходном этапе от визуально-модульного "детского" программирования к настоящему коду. Сегодня расскажу о следующем шаге, вновь значительно расширяющем диапазон применимости робоплатформы российских разработчиков в школе. 

Предпосылки идеи: 
1. Робоплатформа выполняет предложенные ей программы, но неспособна сообщать о каких-либо событиях. А хотелось бы.
2. У нас на борту Arduino Uno, а мы не можем ставить классические задачи для Arduino - помигать светодиодом, например... Непорядок!

Идея: разработчики ScratchDuino предусмотрительно положили в комплекты несколько "пустышек" - заготовок для создания новых датчиков самостоятельно. Так нельзя ли на основе этих пустышек создать светодиодные "фары"-индикаторы, которыми потом управлять, подавая сигналы на соответствующие порты? 

Вот только с портами.... Аналоговые, на которые подают сигнал входящие в комплект датчики, - не годятся.
И тут огромную помощь оказали разработчики (хорошая вещь социальная сеть и рабочие группы по проекту))) в лице Андрея Смирнова, подсказавшего, что есть еще незадействованные цифровые порты, в каждом гнезде датчиков это 4 контакта, на котором у датчиков нет магнита!
Ну, и ссылку на схему робоплатформы подкинули - можно посмотреть. Ужас, правда?))) Давно я схемотехникой не занимался. Кстати, приложу-ка я файл схемы, вдруг кому пытливому пригодится.

Download
sch.pdf
Adobe Acrobat Document 46.9 KB

Исходя из полученной информации, получилась такая реализация проекта:

1. Делаем светодиодную фару-индикатор.

1.1 Покупаем дополнительные компоненты в ближайшем магазине близкой направленности. В моем варианте это оказался светодиод красный, российский на 1,8 В и (поскольку напряжение у нас на клеммах будет 5В) резистор на 680 Ом. Вместе - 46 рублей.

1.2 Разбираем идущую в комплекте "пустышку".

1.3 Берем в руки паяльник и припаиваем ПОСЛЕДОВАТЕЛЬНО светодиод и резистор к следующим клеммам: к земле (клемма, расположенная у срезанного угла пустышки) и к клемме цифрового порта - клемма по диагонали от земли, как еще один ориентир - там снизу ножки-магнита нет. Прошу извинить за качество первой пайки (в распоряжении на тот момент оказался только огромный паяльник ужасающего вида))) Но все работает, последующие пайки оказались удачнее. Тут же сделал еще одну фару.

1.4 Собираем обратно бывшую пустышку, а ныне - фару-индикатор.

1.5 Теперь можно переставить магнитную ногу с более невостребованного места на нужное.
Было:

Стало:

Хорошо, ножка магнитная, просто отдираем и переставляем на новое место.
Фара-индикатор готова.

2. Разбираемся, где какие порты.
На самом деле, это, конечно, интересное занятие - разбираться по схеме, потом проверять... Но уж больно времени много тратится) Поэтому для последователей нарисовал схему разъемов (вид сверху) с указанием номеров цифровых портов (которые указываем, программируя в Arduino) под буквами D. Отметил также землю и подписал заодно, где какие по нумерации аналоговые порты были.

3. Программируем
Программировать будем в ArduBlock и Arduino. К сожалению, в Scratch эту возможность реализовать ... в общем пока не знаю как, разве что саму программу еще немного переделать.

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

Что первым делают изучающие Arduino? Естественно, классический пример Blink. А кто мешает нам сделать нечто подобное с использованием робоплатформы?
Ставим фару-индикатор на гнездо, например, D13 и в ArduBlock создаем простую программу мигания светодиодом с задержкой. Командуем загрузить, робоплатформа начинает выполнять задачу, весело подмигивая фарой, а мы рассматриваем полученный в Arduino код.

 Уменьшено: 87% от [ 1102 на 599 ] — нажмите для просмотра полного изображения

Обратите внимание, сколько возможностей появляется для учебных заданий на понимание структуры кода:
- Что надо изменить, перенеся фару на порт .....
- Что надо сделать, чтобы фара светила в два раза дольше, чем пауза между вспышками?
и т.д. 
И при этом ученики работают с кодом, понимают, что это несложно и быстрее, чем с тягомотным ArduBlock. 
Появляются возможности и для более "творческих" заданий, например - создание скетча (в коде, копируя и изменяя существующие конструкции) для передачи сигнала SOS. Вроде простое задание, но учащиеся должны подобрать удачное соотношение между паузами и вспышками, продумать длинную паузу между сигналами SOS и т.д. 

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

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

Пожалуйста

И опять же - море "учебных ситуаций". Пример: "Экспедиция на Марс" Вводная - экспедиция в опасности, надо подать сигнал SOS. Все, что есть в распоряжении - полурабочий робот, фары которого могут заметить только ночью. Задача - запрограммировать робота при понижении освещенности подавать сигнал бедствия. 

И т.д. и т.п. 
Естественно, тут же попробовал варианты с двумя фарами, классно)))

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


.

ScratchDuino, ArduBlock и Arduino. Управление моторами 1

В предыдущем материале (ScratchDuino, ArduBlock и Arduino. Снимаем показания с датчиков) мы рассмотрели варианты снятия показаний с датчиков, используя монитор последовательного порта. 

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

Напомню общую схему платформы ScratchDuino:

Пины D4 и D7 отвечают за направление вращения моторов.
Подавая сигналы «HIGH» и «LOW» мы можем руководить направлением движения платформы. При подаче сигнала «LOW»(«Низкий») направление вращения мотора обеспечит движение вперед, «HIGH» («Высокий») – назад. 

Цифровые пины D5 и D6 отвечают за подачу энергии к моторам на плате нашего робота. 

Подавая сигналы «HIGH» и «LOW» мы можем включать или выключать соответствующие моторы.

Обратите внимание! Теперь мы можем руководить работой каждого мотора отдельно, реализуя самые разные схемы поворотов.

Тот же поворот направо можно осуществить 3 способами: 

1. Включить только левый двигатель "Вперед".
2. Только правый двигатель "Назад".
3. Левый вперед, правый - назад.

Это дает значительную свободу при программировании движения робота в различных ситуациях.

Для тестовых работ в ArduBlock можно собрать следующую конструкцию:

Обратите внимание, что между подачей и остановкой питания поставлена пауза. В данном случае это не очень принципиально, но становится актуально при сменах направления движения. Имейте в виду, что при резкой (без паузы) смены направления движения платформа может остановится совсем, т.к. возникают большие индукционные токи и при слабом питании просто происходит остановка. При использовании "Кроны" можно и без паузы, но, насколько понимаю (поправьте, если что) - это вредно для системы.

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

Теперь можно попробовать самые разные варианты движения, меняя направления мотор-редукторов. При этом править программу можно как в блоках, так и в коде Arduino, заодно осваивая систему написания программ сразу в коде.

Для демонстрации смены направления движения можно показать такой вариант:

Здесь в конце использована длинная пауза, но опять же можно использовать пустой цикл.

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


.

ScratchDuino, ArduBlock и Arduino. Управление моторами 2 (ШИМ)

Продолжим тему работы с моторами. Ранее мы рассмотрели управление работой моторов с помощью подачи сигналов на цифровые порты, отвечающие за питание моторов и направление движения. Теперь можно задуматься над вопросом – как регулировать скорость движения робота. Ведь с помощью сигналов на цифровые порты можно только включать или выключать питание на моторе. А если надо двигаться медленно? Когда мы ставим такую проблему перед учащимися, освоившими первый способ управления моторами, они логично предлагают ввести в движение маленькие паузы между включением моторов. Величиной этих пауз можно регулировать общую скорость движения. Попробуем.
Используем ArduBlock для создания такой программы. 

Пример:
 программа, при выполнении которой робот едет вперед 1 секунду, но эта секунда складывается из 10 движений по 0,05 с и 10 пауз по 0,05 c. 

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

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

И вот уже после этой работы мы начинаем разговор о том, что в Ардуино существует уже готовый механизм ограничения скорости движения – ШИМ (широтно-импульсная модуляция). Принцип его работы похож на рассмотренный нами пример – команды на мотор-редуктор подаются с паузами, определяющими скорость вращения вала двигателя. Разумеется, все несколько сложнее, для желающих - хороший видеоурок по моторам и сервам в Ардуино, где не только про ШИМ рассказывается, но и про отличия моторов и сервов. 

Но суть та же: 

На рисунке видно, что при подаче сигнала в аналоговом виде, мы просто меняем энергию, подаваемую в единицу времени, регулируя ширину импульсов. По рисунку видно пределы управляющего сигнала, его величина может меняться от 0 до 255. 

При этом в случае ScratchDuino управление мотор-редукторами в этом режиме осуществляется через аналоговые порты А5 и А6 для левого и правого мотора соответственно.

Напомню схему:

Пример задачи: Робот должен двигаться вперед 2 секунды. Скорость движения зададим сигналом на порты А5 и А6 равным 90. 

Продолжая параллельно с использованием ArduBlock анализировать код Arduino, стоит акцентировать внимание на том, что в коде появилась новая функция analogWrite(), которая нужна тогда, когда необходимо передавать не двоичное цифровое значение (либо 1, либо 0), а 8-ми разрядное значение в диапазоне от 0 до 255. Эта функция, так же, как функция digitalWrite(), принимает в круглых скобках два параметра. Первый – это номер контакта. Вторым параметром будет являться значение от 0 до 255. 

Ну вот и почти все. Далее можно менять подаваемые значения, найти минимальное, при котором робот двигается (у меня с 4 пальчиковыми батареями это было около 70), дать 255 и убедиться, что это максимальная скорость робота. Далее интересны эксперименты с разными значениями, подаваемыми на два мотора. Например - 90 и 255, начинается движение по окружностям, можно исследовать, от чего зависит радиус. 


.

ScratchDuino, ArduBlock и Arduino. Снимаем показания с датчиков

Добрый день. Продолжим тему использования плагина визуального программирования ArduBlock для программирования устройств на Arduino. Напомню, что плагин дополняет возможности Arduino IDE и позволяет собирать программы в виде блоков, затем перекидывает их в виде кода в Arduino IDE, компилирует и загружает в устройство. С учебной точки зрения здесь есть очень важный аспект - при сохранении и загрузке программа из ArduBlock переводится в код и отображается уже в окне Arduino IDE. Вносить изменения можно и в блочном и в кодовом варианте. Через некоторое время использования ученики большей частью доводку и модификацию программы проводят в коде, так быстрее и удобнее.
Разумеется, здесь не обязательно использовать робоплатформу ScratchDuino, технология использования универсальна. Для данной же платформы она позволяет добавить возможность программировать автономное поведение робота и упростить переход с блочного программирования к коду. 
И даже хорошо, что пока разработчики не добавили свои блоки к плагину, значит, мы используем только стандартные операции, т.е. учимся работе с ЛЮБЫМ устройством на основе Arduino.

О том, как добавить плагин ArduBlock к Arduino IDE я писал ранее:
ScratchDuino - новые горизонты с ArduBlock
ScratchDuino и ArduBlock. Используем цифровые порты, добавляем "фары" - сигнализаторы.

По итогам - мы получили возможность управлять двумя моторами (питание и направление), отправлять управляющие сигналы на цифровые порты.

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

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

Расположим на площадке A3 любой датчик, например датчик света, и попробуем снять с него показания. 

Для этого используем функцию Serial.println
Функция Serial.println и в ArduBlock и в коде Arduino используется для вывода значений в последовательный порт. 

Соберем в ArduBlock следующую конструкцию (показана слева на рисунке, правее показан соответствующий код после загрузки программы).

В нашей конструкции функция Serial.println выводит «приклеенные» (glue) к ней значения с аналогового порта 3.
Здесь «glue» (клей, склеивать) – стыковочный узел из группы Числа/Константы с нужным вырезом для указания значения аналогового порта (для цифрового вырез другой, так что если будете задействовать цифровые пины - учитывайте). 

Загрузим программу в память робота. 

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

Перед вами откроется окно монитора, в котором и будет отображаться значение, снимаемое в данный момент с датчика на А3.

Попробуйте перекрыть световой поток к датчику, убедитесь, что показания меняются. 

Точно так же можно снять значения с любого другого порта, например, переставьте датчик на А2 и измените программу (можно сразу в коде) для получения новых данных. Загрузив ее в робота и открыв окно монитора последовательного порта, убедитесь, что все работает.

Работает, но несколько неудобно. Значения меняются слишком быстро.

Добавим паузу между отображением значений. Например, в 1 с (=1000 мс), добавив в программу блок «Пауза». 

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

Рассмотрим и реализацию функции в коде Arduino (правая часть предыдущего рисунка). В блоке Setup видно функцию Serrial.begin() с указанием в скобках скорости передачи данных в бодах, в нашем случае – 9600.

В блоке Loop добавилась конструкция, в которой указывается, что Serial.print принимает значения с аналогового порта А3, а затем функция Serial.println выводит эти данные в монитор последовательного порта. 

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

***


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

Например: вывод показаний датчиков с портов А0 и А4 (например, два датчика линии), причем с пробелами и надписями А0= и А4=. Русский язык не поддерживается ((( 

В коде это будет выглядеть так (обратите внимание на пробелы в кавычках, просто для удобства просмотра столбиков данных):


 

При использовании ArduBlock для той же цели есть небольшая проблема – отсутствие просто Serial.print без перевода строки. Поэтому получается так:



Решается легко, но только в коде. Т.е. собрали в ArduBlock, он перебросил в код, а там просто убираем лишний перевод строки и добавляем пробелы перед «А4=» ( « А4=»). 

Выделил убираемое:


И все работает!


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

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


.

ScratchDuino, ArduBlock и Arduino. Комментарии

Добрый день. Все больше убеждаюсь, что для учебных целей плагин ArduBlock - отличное решение, причем универсальное для всех решений на платформе Arduino. Жаль, что проект как-то прекратил развитие (по крайней мере особо новых версий не вижу), по сути, именно в этом духе ждешь решений для школ. Так, чтобы сначала из кирпичиков, как в Scratch собирать программу, а потом видеть ее в коде Arduino IDE и иметь возможность редактировать как блочно, так и в коде. Возможно, кто-то из наших разработчиков, тот же Тырнет, Амперка и другие команды, дополнят плагин своими блоками и вообще подчистят плагин, сделают новые версии более стабильными и быстрыми. 

А пока мы так и пользуемся стабильной версией от 2013-07-12 с хорошей русификацией. И не используем готовые блоки для конкретных устройств, что даже интересно, т.к. является действительно универсальным решением для Arduino устройств. 

Сегодня хотел показать еще один пример использования ArduBlock и заодно обсудить возможность комментирования.

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

Далее пишем комментарий. 

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

Пример несложной программы, написанной в ArduBlock с комментариями.
Движение по линии.
2 датчика цвета (линии)
2 датчика касания используются как кнопки:
- выставляем датчики линии над черной линией, нажатие левого (по ходу движения) датчика касания запускает "калибровку" по черному цвету. Затем ставим робота на основной путь и нажимаем правую "кнопку", поехали. Ей же - остановка.

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

Саму программу тоже пристегнул, в виде кода и ардублока

Download
prog.zip
Compressed Archive in ZIP Format 29.2 KB