Но самым забавным был результат выполнения задания, как раз которое я решил проверить. Несмотря на некорректный код, сортер действительно отправлял по три детали на переплавку в одну сторону и три детали в другую сторону, как требовалось в условиях. И хотя происходило это в том числе по счастливому стечению обстоятельств (срабатывая не на всех выборках), проверка была такой, что пропускала и этот вариант.
У меня в коллекции электронных книг для детей есть несколько по языку программирования Scratch, а также по работе с отладочной платой Ардуино. Последняя меня заинтересовала в том числе благодаря проектам с гирляндами на окно и ёлку, но руки никак не доходили.
Купил набор Geekcreit UNO R3 Basic Starter Kits No Battery Version Geekcreit for Arduino на Bangood. Помимо отладочной платы он содержит множество других элементов, включая макетную плату, соединительные провода, резисторы, кнопки, дисплей, пульт дистанционного управления, пищалка, фоторезистор, потенциометр, джамперы, ...

Вполне возможно, что многие вещи из этого набора вообще не понадобятся. Наверное можно приобрести только действительно нужные элементы у разных продавцов. Но для старта меня больше устраивал именно набор.
А вот чего нет в этом наборе, так это инструкции. И это может оказаться проблемой.
Первой мне в руки попала книга Эрик Шернич "Arduino для детей". Первые проекты с подключением светодиода через резистор, а также гирлянды из 5 светодиодов показали, что в книге пропущены некоторые элементы для новичка. А мне начинать приходилось с нуля.
Первым вопросом стало, нужно ли соединять какие-то элементе вместе и как запитать плату Uno R3. Саму отладочную плату хотя бы легко найти благодаря надписи Uno. Но для питания есть USB Type B разъём (как у принтера и сканера). Также есть разъём питания, к которому можно подключить провод из набора, на другой стороне которого разъём для батарейки крона. Самым простым оказался вариант подключения к компьютеру через USB, тем более, что программы с компьютера можно заливать по этому же кабелю.
В книге Шернича пара страниц уделяется установке среды разработки (IDE) и драйверов на Windows. Решил конечно же выяснить, что делать в Ubuntu. Оказалось, что для установки и настройки достаточно выполнить в терминале пару строчек:
sudo usermod -a -G dialout имя_пользователя
sudo apt-get install arduino

Вторая строчка конечно же просто устанавливает нужное программное обеспечение.
Первая строчка позволит добавить вас, как пользователя, к группе dialout, что позволит отправлять написанную программу на отладочную плату по USB кабелю (на самом деле эта строчка даёт доступ к COM портам, несмотря на использование USB кабеля). И даже если вы забудете выполнить эту строчку, то при первом запуске среды разработки Arduino вам об этом напомнят:

Всего этого уже достаточно для создания первого проекта. Шернич предлагает взять макетную плату, установить на неё светодиод через резистор и взять питание с Arduino Uno. Через резистор подключать диод приходится, чтобы последний не сгорел. А вот почему провода подключается именно так, как на схеме в книге, мне было не понятно по одной простой причине - макетную плату я видел в первый раз в жизни. Автор же видимо решил, что соединения на макетной платы очевидны и не нуждаются в пояснении или приведении схемы:

Шернич предлагает подключить красный провод к выводу VCC, а черный к GND. Оказалось, что на Uno R3 нет вывода с надписью VCC. Для меня было совсем не очевидно, что можно использовать вывод с надписью 5V.
Далее встал вопрос, какой выбрать резистор. Один диод подключили через резистор 220R (220Ом), а второй - через резистор 1K (1 кОм). Конечно же резистор с бОльшим сопротивлением приводит к меньшему свечению светодиода.
[ Анимированное GIF изображение проекта гирлянды]

Схему из книги Шернича немного упростили, т.к. использовать лишние провода нет никакого смысла. Зато, благодаря автору узнал, что резисторы имеют цветные кольца, позволяющие узнать маркировку. Также наверняка для многих будет не очевидным, что резистор можно установить с любой стороны от светодиода.
Следующим проектом было заставить мигать светодиод на плате, который соответствует 13 выводу. Код простой, но уже позволяет начать работать со средой разработки, а также отправлять корректно откомпилированный код на плату по USB

Кстати, программы (для Ардуино называются скетчами) можно писать и в онлайн редакторе Arduino Web Editor, но мне показалось для начала проще запитать плату по USB и скидывать приложение по нему же.
Макетная плата, судя по всему, имеет липкую ленту с обратной стороны, так что её можно и подвесить куда-нибудь. Но мне также показалось, что эта лента мешает иногда создать хороший контакт. Самая большая проблема возникла со светодиодами, т.к. лапки у всех из них были разной длины. Как проще с этим справиться? Кусачками выровнять длину лапок?
Третьим проектом стало создание подобия гирлянды из 5 светодиодов, каждый из которых подключался через резистор, к конкретному выводу на плате. Благодаря подаче напряжения на конкретный вывод, задержке после этого и отключению напряжения, можно легко заставить светодиоды включаться по очереди.
Привожу свой код, в котором добавил массив, вычисление длины массива, а также оператор цикла.
int myPins[] = {9, 10, 11, 12, 13}; //массив с номерами используемых выводов
int nPins = sizeof(myPins); //размер массива
int nDelay = 100; //задержка в мс
void setup() {
for (int i=0; i < nPins; i++) //цикл для перебора всех выводов
pinMode(myPins[i],OUTPUT);
}
void loop() {
for (int i=0; i < nPins; i++) //цикл для перебора всех выводов
{
digitalWrite(myPins[i],HIGH); //подаём напряжение на вывод, соответствующий i-му элементу массива
delay(nDelay); //задержка nDelay милисекунд
digitalWrite(myPins[i],LOW); //отключаем напряжение на выводе, соответствующем i-му элементу массива
delay(nDelay);
}
}
Ребёнку конечно сложно понять. Надо поискать простые способы объяснения азов.

[ Анимированное изображение проекта гирлянды, управляемой Arduino Uno]

Ещё одной из проблем с книгой Шернича стал некорректный код во втором проекте. Вроде бы пропущены только точки с запятой, но для неопытного ученика это может стать серьёзным препятствием.
Вместо книги Шернича можно начать и с бесплатного пособия Uno Starter Kit (PDF), которое обнаружил позднее. Также вместе со средой разработки идёт множество полезных примеров скетчей. Тем более, что вполне возможно, что часть проектов Шернич позаимствовал именно оттуда.
В целом же, меня приводит в щенячий восторг возможность лёгкого управления при помощи Arduino, пусть даже дело касается незатейливых вещей. И это при цене менее 1500 рублей. Ребёнку пока конечно интереснее электронный конструктор Знаток. Особого интереса к Ардуино и программированию пока не наблюдаю. Возможно, нужно начать с более простого языка Scratch и разобраться с основами. А, может, нужно собрать своими руками какую-нибудь завораживающую гирлянду. Xiaomi Mitu Mi Builder Rover оказался довольно отвратительным вариантом для программирования и исправлять недостатки Сяоми вовсе не собирается. Вероятно с хорошим набором Лего для робототехники было бы интереснее. Но в то же время мне всё чаще кажется, что для нынешнего поколения детей слишком многие вещи даются слишком легко, что приводит к тому, что они начинают лениться, не приучены работать, и всё время недовольны количеством развлечений.
Чем посоветуете заинтересовать ребёнка?
Journal information