Публикации сообщества

Ольга Тузова • 30 мая 2020

Микро:бит в руках папы-профессионала

Я долго думала над заголовком этой заметки, но смысл последующих строк, нюансы будущего рассказа всё время из него убегали. Не знаю, удалось ли, но мне хотелось соединить два одинаково важных момента.

Первое: опыты с микро:битом профессионального программиста, "не детский" подход к программированию устройства — на ином уровне, который открывает далёкие горизонты возможностей и для детей, и для взрослых.

Второе — поиск этих новых возможностей делается вместе с дочерью-пятиклассницей, которая  становится полноправным участником сложных проектов. 

Начало истории для меня было неожиданным и необычным. Карантин, дистанционное обучение. Мои 5-классники разрабатывают музыкальный автомат — простую программу, которая позволяет микро:биту проигрывать две различные мелодии. Ссылки на свои работы они выкладывают в Class Notebook (работаем в Office 365). Вечером, перелистывая страницы Class Notebook с домашним заданием и проверяя работы, я наталкиваюсь на страницу "Ольге Алексеевне от папы Софии". Честно признаюсь, не сразу открыла страницу, опасаясь, что настроение будет испорчено посланием родителя, недовольного  непривычной формой обучения. Но послание оказалось совсем иного рода. Папа Софии, Владимир, предлагал своё решение задачи, в котором микро:бит, действительно, превращался в автомат, проигрывая случайные мелодии, причём в большом количестве. И сделано это было легко и весело. Так у папы Софии появилось новое хобби, в котором дочь стала полноправным партнёром — всё делается вместе и сообща. Коллекция быстро пополняется новыми проектами, идеи записываются в список TODO, который динамично принимает новые идеи и расстаётся с реализованными. 

Примеры проектов:

1. Музыкальная шкатулка. https://makecode.microbit.org/_hTeKb1dU3fqr

При нажатии на кнопку A, играет случайную мелодию в случайной тональности) 
Можно использовать как "Угадай мелодию". Еще можно легко добавлять свои мелодии:  
Ля — 0     Си — 1      До — 2     Ре — 3    и т. д. до 9 
До# — '#2'   Си бемоль - 'b1'   Ре дубль бемоль 'bb3'    Фа дубль диез - '##5' 

2. Fire it! Игра-головоломка. https://makecode.microbit.org/_HU00cAgHx4VT

Есть поле 4x4 и случайно зажженные лампочки. 
Мигающий курсор (перемещение:  кнопка A — влево, B — вправо).
При нажатии на кнопку "A+B" лампочки меняют свое состояние в этом ряду и колонке.
ЦЕЛЬ: зажечь ВСЕ лампочки на поле! 
При решении, проигрывается мелодия победы или поражения.

Алгоритм решения: нажимать на кнопку, если сумма зажжённых ламп в строке и столбце четное

3. Найди звездуhttps://makecode.microbit.org/_8TRRwjYdp4bA

На своем корабле (мигающий в центре светодиод) вы исследуете другие планеты и звезды в поисках мерцающей звезды. Чтобы путешествовать — нажимай кнопку "A+B".  Для разворота корабля на 90 градусов используйте кнопки A и B (против и по часовой стрелке). С каждым уровнем увеличивается размер поля: от маленького 5x5 до самого большого 30x30). 

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

Это только несколько примеров из быстро растущей коллекции.

И вот недавно команда в составе папа и дочь выпустила бета-версию расширения RussianFont, позволяющего выводить на экран микро:бита сообщения, набранные кириллицей (в исходной версии редактора сообщения могут использовать только латиницу). Шрифт сообщений разработан Софией. Расширение RussianFont позволяет не только выводить строки на русском языке, но и добавлять к выводу визуальные эффекты. 
Для того, чтобы воспользоваться RussianFont, надо пройти в редакторе блочного кода по ссылкам: Расширенные => +Расширения и добавить расширение по URL — https://github.com/nenahov/microbit-russian-font
После этого становятся доступны новые блоки:

Расширение RussianFont

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

У этой истории есть начало, можно даже указать дату, но я надеюсь, что окончание её, если и произойдет, то очень нескоро.
 

Кол-во комментариев: (10)

Михаил Семионенков
Ольга, шикарная коллекция! Если дойдёт до книги, обязательно упомяну вывод на русском языке. С удовольствием сошлюсь и на всю коллекцию, если есть ссылка: сайт, соцсети? И с папой пообщался бы, если он не возражает.
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Владимир Ненахов
    Ольга Алексеевна, спасибо Вам за такой отзыв. Очень приятно видеть энтузиастов своего дела с горящими глазами! Именно такие учителя зажигают интерес у наших детей и это очень здорово. Спасибо вам! Мои проекты - это первые шаги в освоении мной микробита совместно с дочерью. Так что не судите строго. Пока в моем распоряжении только эмулятор на компьютере. Готов ответить на вопросы по проектам и буду развивать расширение с выводом русских букв :) Успехов всем вам!
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Александр Григорьев
    Ольга, большущее спасибо за такой интересный рассказ! Давно хотелось, чтобы хорошо подготовленные профессионалы оценили и возможности самой платы, и перспективы её использования для обучения детей! Это замечательно, что ваши детки с удовольствием занимаются, да ещё и родителей вовлекают! :) Идеи проектов изумительные! У меня есть просьба к Вашему папе... Дело в том, что при ближайшем рассмотрении оказывается, что у среды Makecode есть как неоценимые достоинства, так и чудовищные недостатки. И раз уж интересует создание проектов повышенной сложности ВМЕСТЕ с ребёнком, то очень советую переключиться на работу в другой визуальной среде программирования, в первую очередь Microblocks. Подробности здесь: http://novator.team/post/558 Если бы удалось к Microblocks "прикрутить" гироскоп!.. Не акселерометр, а именно гироскоп, например распространённый GY-521 на чипе MPU6050. Это было бы просто неоценимо и позволило бы реализовать массу интереснейших для детей (и взрослых) проектов. Но в любом случае свежий взгляд профессионального программиста на проблему обучения детей переоценить невозможно! :) Я присоединяюсь к Михаилу, я тоже на связи и готов общаться.
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Владимир Ненахов
    Спасибо за отзыв! Насчет Microblocks - я посмотрю на эту среду разработки. Насчет "прикрутить" - тут не уверен в своих силах. У меня практически нет опыта общения с микроконтроллерами и самих микроконтроллеров нет :) Чтобы прикрутить, нужны составляющие, опыт и время. Так что в этом направлении пока не помогу. Но что касается программ и алгоритмов - с удовольствием поделюсь своими знаниями и опытом (работаю программистом, пишу софт для крупных ритейлеров России и других стран). Мне нравятся публикации на этом портале. И хочется как-то привнести свой вклад в это сообщество.
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Михаил Семионенков
    Владимир Ненахов, среда, рекомендованная Александром, очень интересна, с использованием виртуальной машины (что программисту Java может быть интересно), хотя реально программирование зависит от платформы. Пока среда сыровата (альфа), к детям выходить, по-моему, рано, но само покрутить занятно.
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Александр Григорьев
    О, Владимир, здравствуйте! Очень приятно видеть, что Вы к нам присоединились! :))) Большое спасибо за Ваши проекты! И отдельное огромное спасибо за расширение для среды Makecode! :)
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Александр Григорьев
    Владимир, да, я прекрасно понимаю, что задача очень специфическая, но чем чёрт не шутит :) Кстати, что касается микроконтроллеров и всего сопутствующего... Если хотите, совершенно не проблема дать Вам на лето каких-нибудь железок, покрутите в руках, попробуете. Вроде как с 1 июня у нас в Питере снова можно будет попасть на работу. Присоединяйтесь к нашей "Лаборатории проектов 169", это сообщество учителей, учеников, родителей и вообще всех энтузиастов! www.lab169.ru И большое спасибо за предложение помощи, есть у нас задумки и не требующие работы с микроконтроллерами, может быть, мы к Вам обратимся :)
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Владимир Ненахов
    Вчера Ольга Алексеевна передала нам с дочкой на лето несколько экземпляров микробита! Огромное ей спасибо за это!
    И я, наконец, увидел, как работают программы на этих устройствах (а не только в эмуляторе).
    Устройства отличные. Мы с дочкой в восторге!

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

    Вот, что я нашел:

    1. Музыкальная шкатулка (см. описание в статье) на устройстве играла мелодии нотой одной высоты.
    Пришлось написать несколько строк кода, чтобы выяснить в чем причина.
    Оказывается, дело было в объявлении переменной k = 2 ** (1 / 12) - разность высоты между двумя соседними нотами.
    Выяснил, что реальный микробит неправильно возводит в вещественную степень (округляет до целых). Даже запись k = 2.0 ** (1.0 / 12.0) не исправила ситуацию.
    Пришлось вычислить это выражение на калькуляторе, а в программе заменить код константой: k = 1.059463
    После этого реальный микробит "запел"!
    Ссылка на исправленную версию: https://makecode.microbit.org/_88MMmyEmaTHK


    2. Расширение для отображения русских букв тоже вначале заработало не так, как надо!
    Тут у меня вызвало удивление поведение программы.
    Вместо строки "Мы ♥♥ информатику!!!" на экране отображалось "Мы ♥♥ 8нформ0тику!!!".
    Сначала я перепроверил результат на другом микробите. Но он оказался таким же.
    Потом подумал, что длина массива с буквами слишком большая и поэтому буквы в конце как-то не так работают. Тоже неверная гипотеза.
    И спустя несколько экспериментов с кодом я обнаружил, что на реальном микробите русские маленькие буквы "абв..." заменяются на символы цифр: "012...". Т.е. "б" == "1" на реальном микробите - ИСТИНА! Даже basic.showString("абв"), показывающий в эмуляторе пустоту, на микробите показывал заветные "012".
    Пришлось дописывать предупреждение в READ.ME проекта расширения и менять фразу "Мы ♥♥ информатику!!!" на "МЫ ♥♥ ИНФОРМАТИКУ!!!". С большими русскими буквами вроде все в порядке.


    3. Обновил FireIt - https://makecode.microbit.org/_Yi1Ty2792Kjy
    Яркость на эмуляторе и яркость на реальном устройстве - разые вещи. Пришлось и тут вносить коррективы (изменил разность яркости лампочек на поле и курсора)

    Реальное устройство вносит свои коррективы!
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии