DRAKON.SU

Текущее время: Четверг, 13 Декабрь, 2018 19:37

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 11 Декабрь, 2017 14:09 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Настоящая тема предназначена для обсуждения способов скрещивания драконовских схем со средой программирования Arduino IDE. Начну её с рассказа о наших экспериментах с обучением детей младшего школьного возраста основам программирования микроконтроллеров.

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

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

В итоге, мы пришли к следующим функциям генератора:
- конвертация русских букв в латинские; (это позволило задавать имена переменных и названия функций на понятном детям языке)
- генерация стандартных имен и названий; (типы переменных, главные функции loop и setup мы тоже переименовывали автоматически)
- создание файла со стандартным расширением ino;
- создание корректного заголовка программы;

Параллельно пришлось несколько поправить логику работы основной программы редактора, разрешив обработку отдельных блоков, например ПАУЗА.

Процесс написания программы сводился к следующему: рисовалась общая диаграмма работы программы, с последующими уточнениями, затем создавались примитивы с низкоуровневыми командами для исполнения на языке Wiring. В дальнейшем эти блоки служили строительным материалом для наполнения более сложных примитивов и силуэтов. В процессе отладки диаграмм разработчик просто регулярно использует пункт меню "Генерировать код", и открывает результат с помощью Arduino IDE. После код загружается в микроконтроллер.

Основной положительный момент такой технологии в постепенном наращивании сложности программы, когда начав с описания алгоритма мы приходили к работающей программе.
Прилагаю изображения проекта плоттера, который собирал школьник. Обратите внимание на блок "Рисовать", который ссылается на соответствующий примитив в списке. Механизм работы с такими блоками аналогичен работе с функциями: вызывать на исполнение можно иконой ВСТАВКА или ВЫВОД, принимать результат иконой ВВОД или ПОЛКА. Типы переменных мы использовали сначала в русском сокращении, но постепенно работа дрейфовала к устоявшимся вариантам.

Если тема интересна, то могу привести пример программирования, например, можно написать программу BLINK.

Список примитивов, использованных в проекте

Вложение:
Комментарий к файлу: Список примитивов, использованных в проекте
image (1).png
image (1).png [ 37.08 КБ | Просмотров: 1161 ]
Вложение:
Комментарий к файлу: Список примитивов, использованных в проекте
image (1).png
image (1).png [ 37.08 КБ | Просмотров: 1161 ]


Вложения:
Комментарий к файлу: Блок "Линия", использующий два параметра
image.png
image.png [ 39.96 КБ | Просмотров: 1161 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Декабрь, 2017 14:25 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
На данный момент подобным образом работаем редко, т.к. моей квалификации как программиста явно не достаточно для качественной переработки кода редактора. Автор, к сожалению, не проявил интереса к развитию программы по нашим предложениям, поэтому, если найдутся желающие довести технологию до презентабельного вида, то буду всячески содействовать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Декабрь, 2017 15:26 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3891
Откуда: Москва
Дмитрий Бардынин писал(а):
Автор, к сожалению, не проявил интереса к развитию программы по нашим предложениям

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Декабрь, 2017 15:46 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Пару лет назад мы довольно обстоятельно обсудили тему, я выслал ему файлы со своими правками. Описал технологию. У меня существует список 2DO, чтобы довести до беспроблемной работы с технологией неподготовленного пользователя. В последнем письме от 30/11/2015 я предложил ему дополнить программу опцией перетаскивания блоков ВСТАВКА прямо из контекстного меню или из списка примитивов. К сожалению, больше на связь Степан не выходил, и я предположил, что он человек занятой, и ему пока не до того. Если он подключится к проекту, то я очень даже ЗА!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 24 Август, 2018 13:53 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Проект неспешно развивается. Из дополнительных опций появилась возможность автоматически запускать Arduino IDE после генерации кода.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 04 Ноябрь, 2018 15:48 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Завершили со школьниками очередной образовательный недельный марафон. Силами учеников с самыми базовыми компетенциями построили достаточно умный звуковой сенсор.

Длительность проекта: примерно 20 часов, работали перемежаясь с общеразвивающими занятиями.
Проект развивался двумя группами в общем составе 12 человек, условно: "программистами" и "инженерами".

"Инженеры" проектировали физический стенд в программе 3D-проектирования SolidWorks, изготовили детали на различных станках, смонтировали электронную плату,
произвели сборку и наладку. Стенд представляет собой негерметичную емкость с подключенным источником сжатого воздуха.
При повышении давления подаваемого воздуха емкость издает характерный звук: "свист". Руководил работой Олег Вартанов, заведующий мастерской прототипирования.

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

Все программы были написаны с применением алгоритмического языка "Дракон", в программных средах Arduino IDE и Processing IDE.

Следует отметить, что изменения в программах вносились исключительно в редакторе "Дракон". Как пояснили мне сами дети: "так понятнее".


Опыта программирования Arduino, Processing, до наших занятий, у них не было. Теоретически знали, что такое: цикл, процедура, типы данных, ветвления.
Знакомились в школе с ЯП PASCAL.

Основой для создания программ послужили заготовки типовых схем, подготовленные мною в редакторе языка "Дракон" Степана Митькина.

В ходе занятий "программистами" рассмотрены вопросы анализа звука на базе библиотек преобразований Фурье и Хартли.
Изучен механизм определения и обработки массивов, в т.ч. отсева максимумов значений и т.п.

Рассмотрен механизм построения нейронных сетей (перцептрона), реализован программный искусственный нейрон.
Создана программа для вывода результатов контроля.

В результате реализации проекта создан прибор, регистрирующий изменение звукового фона в окружающем пространстве,
и сообщающий о ситуации в информационном приложении для ОС "Windows'10".

Кратко в новостях: https://sochisirius.ru/news/2267


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 04 Ноябрь, 2018 19:52 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3891
Откуда: Москва
Дмитрий Бардынин писал(а):
Кратко в новостях: https://sochisirius.ru/news/2267

Дмитрий, я не понял, куда смотреть.
Там про какого-то Фило Амброзини, а не про вас.

Пожалуйста, дайте точную наводку.
А еще лучше, дайте точную цитату и выложите фото


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 05 Ноябрь, 2018 20:05 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Немного подробностей:
Образовательный центр «Сириус» в городе Сочи создан Образовательным Фондом «Талант и успех» на базе олимпийской инфраструктуры по инициативе Президента Российской Федерации В.В. Путина. Фонд учрежден 24 декабря 2014 г. выдающимися российскими деятелями науки, спорта и искусства. https://sochisirius.ru/o-siriuse/obschaja-informatsija

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

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

Поскольку в рамках образовательного процесса мне потребовался понятный инструмент обучения детей навыкам алгоритмизации, я стал использовать "Дракон" Степана Митькина, как хорошо подходящий. С ним я могу показать примеры реализации одного алгоритма на разных языках, запрограммировать довольно развитые программы на Arduino, или Processing. Также прекрасно получается формировать задачи/загадки/головоломки, силами того же редактора "Дракон". Ребята с удовольствием их решают.

К слову сказать, Дракон не забыт и в Астрахани. Там его используют на занятиях мои бывшие коллеги в Региональном Школьном Технопарке, с которыми мы активно общаемся.
https://vk.com/schooltech

На фото: преподаватель Образовательного центра «Сириус» в городе Сочи Дмитрий Бардынин проводит занятия
Вложение:
сибур-программисты.jpg
сибур-программисты.jpg [ 237.46 КБ | Просмотров: 493 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 08 Ноябрь, 2018 12:18 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3891
Откуда: Москва
https://sochisirius.ru/news/2267
Цитата:
«Я в составе своей команды работала над звуковым анализатором, который распознает тончайшие колебательные движения и в дальнейшем сможет самообучаться благодаря нейронной сети. Иными словами, писала программу, которая распознает звук, анализирует его и направляет данные на компьютер», – рассказала Лидия Смирнова (17 лет, Краснодар).

При написании комплекта программ для датчика и обслуживающей его информационной системы школьники использовали визуальный алгоритмический язык программирования и моделирования «Дракон» – по сути, язык технических символов, который был разработан учеными в рамках знаменитой космической программы «Буран-Энергия».

«Молодые программисты настроили анализ звуков с помощью библиотек преобразований Фурье и Хартли, изучили механизмы определения и обработки массивов, в том числе отсева максимумов значений; познакомились с механизмом построения нейронных сетей и смогли самостоятельно реализовать программный искусственный нейрон.

Также ребята выступили дизайнерами программы для вывода результатов контроля», – отметил специалист мастерской «Прототипирование» Дмитрий Бардынин.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 08 Ноябрь, 2018 12:24 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3891
Откуда: Москва
Изображение


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 14:04 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
В Сириусе проходят не только тематические смены, но и просто научные, культурные, спортивные смены, на которых ребята параллельно могут знакомиться, например с современными технологиями цифрового производства (в нашей мастерской).
В рамках подобных занятий необходимо порою создавать короткие программы для Arduino, не сильно перегружая детей новым лексиконом, но давая почувствовать мощь информационных технологий.

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

Вот пример простейшей программы "Blink". Рассказываю про виды икон, и про их наполнение. Ребятам нужно правильно составить алгоритм работы простого маячка. После проверки на правильность схему можно уже использовать. Редактор языка "Дракон" с генератором программ для Arduino позволяет загружать эту схему практически "в четыре клика". "Генерировать код (два клика)" - "Подтвердить открытие проекта" - "Загрузить в плату".


Вложения:
Снимок4.PNG
Снимок4.PNG [ 60.47 КБ | Просмотров: 406 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 25 Ноябрь, 2018 16:14 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Пример использования редактора "DRAKON" и интерактивной доски для демонстрации программирования мигающего маячка на базе платформы Arduino.
https://www.youtube.com/watch?v=He1NyZVQiZ8


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Ноябрь, 2018 15:19 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
На страницах Робофорума http://roboforum.ru/forum102/topic14168.html мне справедливо указали, что предложенная схема маячка с т.з. логики не работает, т.к. выполнится всего один раз.
В связи с этим вопросом поясню: мы на занятиях отдельно оговариваем логику исполнения базовых схем, в том числе использование понятия "Диспетчер".
Это схема верхнего уровня, которая запускает схемы "Настройка" и "Программа", аналоги "Loop" и "Setup" в Arduino IDE. Поскольку диспетчер не предусматривает правки (в рамках создания программы он определяется генератором языка), то его регулярное явное указание тоже не предусматривается. Мы говорим о нем один раз, а затем используем сложившуюся логику построения программ.

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


Вложения:
Комментарий к файлу: Схема "Диспетчер".
Диспетчер.PNG
Диспетчер.PNG [ 8.71 КБ | Просмотров: 282 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Ноябрь, 2018 17:02 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3891
Откуда: Москва
Дмитрий, ваш силуэт не работает, так как нет иконы Адрес с надписью "Завершение"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Ноябрь, 2018 20:17 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Согласен, не по канону. Думаю, второй вариант корректнее.
Вложение:
Диспетчер2.PNG
Диспетчер2.PNG [ 10.92 КБ | Просмотров: 273 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Декабрь, 2018 17:45 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Добавлено нововведение:
теперь икона "Цикл" не привязана к единственному варианту цикла. Можно задавать собственный цикл, хотя, конечно, возможность ошибки слегка повысилась, т.к. правильность создания заголовка не проверяется.
Вложение:
Снимок.PNG
Снимок.PNG [ 1.93 КБ | Просмотров: 203 ]


В генераторе С.Митькина данная возможность уже существует для цикла "Foreach" в генераторе TCL. Теперь можно использовать произвольный вариант цикла.
Например, для скриптового языка OpenSCAD возможен такой вариант:
Вложение:
Снимок2.PNG
Снимок2.PNG [ 2.82 КБ | Просмотров: 203 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Декабрь, 2018 22:45 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3891
Откуда: Москва
Дмитрий Бардынин писал(а):
Добавлено нововведение:
теперь икона "Цикл" не привязана к единственному варианту цикла.

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

Дмитрий, существует ли решение, при котором возможность ошибки НЕ повышается?

Если существует, просьба его показать


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 03 Декабрь, 2018 13:47 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Конечно, требуется решение данной проблемы. Необходимо проверять допустимые комбинации команд средствами генератора, работаю над этим.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 03 Декабрь, 2018 20:49 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
Собственно, проблема решена. Теперь разрешенные операторы цикла задаются в генераторе.

Выяснился еще один интересный эффект. С помощью иконы "Цикл" удобно задавать команды для групповой отработки икон. Например, в скриптовом языке OpenSCAD есть много операторов как для циклической (см. "intersection_for()" ), так и просто для групповой обработки, например (см. "difference()").

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 08 Декабрь, 2018 10:11 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 36
Откуда: Астрахань
На Хабре вышел перевод интересной статьи http://mikehadlow.blogspot.com/2018/10/ ... -idea.html
"Визуальное программирование — почему это плохая идея"
https://habr.com/company/edison/blog/432334/

Поскольку Дракон относиться к визуальным средствам, предлагаю использовать тезисы из статьи для поиска вариантов улучшения ПО.
К статье много претензий можно предъявить, но полезные мысли там есть.

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

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

1. Можно ли пользоваться справочниками, например: подсматривать тысячи API-интерфейсов, доступных в библиотеке какого-либо базового класса?
2. Можно ли организовать контроль над версиями кода?
3. Можно ли найти коммит и ответственного за изменения конкретной строки?
4. Разрешено ли разделять структурные блоки кода на отдельные исходные файлы?

Список остается открытым, предлагаю сообществу озвучить собственные вопросы. Я же, по мере сил, попробую первые четыре проработать применительно к Ардуино-Дракону.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2018, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB