Перо программа для программирования
Иногда нужно что то попроще или по визуальнее что ли, по интерактивнее, что бы глазам было приятно посмотреть и вообще программировать не думая (да знаю так не бывает, но хочется). А если серьезно, в самом деле, иногда нужно запрограммировать что-то, а разбираться в тонкостях языка времени нет и (или) нет желания. Или детей нужно учить программированию тут важен толчок, заинтересованность, первое впечатление, что бы сразу интересно и все понятно, а значит нужно по проще и визуальнее.
На самом деле, я купил в подарок на Новый год ребенку 12 лет вот такую машинку - робота: Hummer Bot 4.0
Статья про него еще пишется, а видео еще готовится (потом тут будет ссылка на статью). А еще у меня есть вот такая плата многофункциональная плата расширения для Ардуино (Arduino UNO R3, Mega 2560 R3)
Китайское название (вдруг кому надо): "Многофункциональная плата расширения на основе обучения для UNO r3 LENARDO mega 2560 Shield" Так же статья еще пишется, а виде еще будет сниматься (А что вы хотели? У меня в черновиках только 130 статьи на разных этапах написания). Но вернемся к теме разговора. Как объяснить ребенку азы программирования? Как рассказать что программирование это круто и жутко интересно? Как дать понятие что такое робототехника и программируют роботов живые, обычные люди, а не сверх человеки? Помогут в этом визуальные языки программирования, ну или мы так думаем что помогут, далее в статье, какие они бывают и что из этого у меня получилось.
Это статья не полная, есть ещё много визуальных языков программирования, расскажите о них в комментариях и я добавлю их в статью.
Ардуино IDE
ArduBloсk
Написан на Java, как мне показалось проект заброшен, последнее обновление 4 года назад, на GitHub версия свежее. Пишут, что последние версии "очень сложны, а вот версия от 2013-07-12 — самое то, этот файл там самый популярный". Эта программа встраивается в среду программирования Arduino IDE, т. е. это плагин, а значит вам нужно иметь установленный Arduino IDE (см. выше) Программа хороша тем что конвертирует свой визуальный код в стандартный код Arduino IDE.
Для того чтобы программа заработала нужно провести ряд манипуляций. Идете в настройки
Смотрите где у вас находится папка для скетчей.
По умолчанию в: "C:\Users\abu\Documents\Arduino"
Создаете в этой папке папки:“tools > ArduBlockTool > tool”
В последнюю кидаете скачанный файл переименованный в: “ardublock-all.jar” (см. выше)
Перезапустите Arduino IDE и у Вас должен появиться пункт “ArduBlock” в меню “Tool”
Визуально мне не понравилось, все мелкое ничего не видно! Но! Особо не разбирался, так как мне просто приятно программировать нормальным языком, а вот интерактивным нужно себя пересиливать.
Есть еще проект OpenBlocks
Но про него ничего толкового сказать не могу, просто даже не ставил.
Scratch
Для детей есть интересный язык Scratch (Скретч) это продолжение идей языка Лого и конструктора Лего (опять этот Лего ) это разработка массачусетского технологического института, оказал и оказывает активное влияние на визуальное программирование и обучения STEM*. Это визуальная событийно-ориентированная среда программирования, созданная для детей и подростков, состоит программа из блоков которые подходят к друг другу как кубики Лего. Вот кто хочет может почитать подробнее на Wikipedia .
*Что такое STEM
STEM (science, technology, engineering and mathematics) этот термин был предложен в 2001 году, используемый для объединения академических научных дисциплин в основном технологии, инженерия и математика, а на самом деле все кроме медицины. Также этим термином обычно обозначают подход к образовательному процессу, где основой приобретения знаний является простая и доступная визуализация научных явлений (обучение как праздник и шоу)
Есть Web версия с возможностью творить прямо в интернете, но можно скачать себе на компьютер.
Выводы
Прародитель кучи визуальных языков последователей, "отец - основатель". Есть версия 2.0 и 3.0 вроде не особо они совместимы, хотя может я ошибаюсь.
S4A (Scratch for Arduino)
Программа создана на базе Scratch, точнее, это модификация Scratch, которая позволяет программировать аппаратную платформу Arduino .
В установке ничего сложного нет так как это отдельная программа, так для Windows это файл с расширением "exe", берете устанавливаете и пользуйтесь
Snap4Arduino
Snap! (или BYOB) – это модификация Scratch выполненная Университетом Беркли.
Похожа на S4A (Scratch for Arduino) как две капли воды, но первое впечатление больше понравился чем S4A
mBlock
mBlock 5, основанный на Scratch 3.0, специально разработан для поддержки обучения STEM*. Поддерживая блочное и текстовое программирование, mBlock 5 позволяет создавать игры и анимации и программировать роботов. Не понял где базируется компания, но думаю что в Китае.
Много устройств, но нет моего работа-машинки.
Mixly
Mixly - это бесплатное программное обеспечение для программирования Arduino с открытым исходным кодом, основанное на платформе графического программирования Google Blockly и разработанное Mixly Team @ BNU. Mixly поддерживает Windows, Ubuntu, Mac. Я так понял что это изобретение сумрачного китайского гения, да опять.
FLProg
Писать ничего не буду, почитайте сами , все хорошо написана, тем более это наша, отечественная разработка.
Когда-то, года два назад я пытался написать или точнее создать действующую программу - не получилось, для меня легче оказалось написать программу, хотя я собственно и не программист вовсе, но возможно вам она зайдет, тем более наверное, она развивается и становится лучше.
Wokwi - симулятор Arduino
Это несколько иная программа, стоящая особняком, что делать если нет платы Arduino или ESP, а код проверить надо? Поможет Wokwi симулятора Arduino
Другие программы
Lightbot
Игрушка на андроиде про робота, которого надо программировать
Pocket Code
Визуальный язык программирования похожий на Scratch
Программирование в стиле Minecraft.
«Микробит» разработан корпорацией BBC специально для школ и научно-технических кружков как оптимальная платформа для STEM-образования.
XOD
Графический язык программирования XOD IDE заменяет код на наглядные визуальные объекты — ноды. Каждая нода — это функция или аппаратный модуль (датчик, кнопка и т. д.), представленные в виде блока с входными и выходными данными. Этот язык подходит для Ардуино подобных плат.
Другие ссылки
Сайт компании которая выпускает машинки роботы и разные модули:
Применения этих программ для программирования Ардуино.
Я использовал вот такую плату
И тестировал все программы кроме FLProg, с наскока я смог работать только в mBlock все остальные не захотели работать или я не разобрался как с ними работать
С Hummer Bot 4.0
- MagicBlock(64)(Scratch3.0)- работает криво, все кубики, блокли вперемешку, не могу открыть проекты и загрузить в робота.
- Scratch2.0 - вроде работает но не могу загрузить в робота.
- Mixly - хотя бы загружается, но что делать дальше, все затык.
Выводы
Это полный ужас, программа есть и вроде все они такие красивые и яркие, но программировать на этом нельзя от слова вообще ( FLProg стоит особняком, но она больше для инженеров, а не для детей ). Не полный функционал, ничего не работает, сами программы загрузить нельзя. Я сидел два дня что бы в этом разобраться, кстати, так до конца и не смог. Порог вхождения непомерно высок и его не потянут дети, либо нужно помогать взрослым, либо забить на все это и сразу учить нормальные "взрослые" языки! Больше не могу! Очень меня разозлила это тема, два дня поиска дельной программы и все впустую (на самом деле я сидел с этим в Новогодние каникулы и только сейчас, через полтора месяца я выкладываю это на обозрение), поэтому на сегодня все! Но мне придется возвращаться и возвращаться к этой теме. Поэтому, как всегда, продолжение следует.
Подписывайтесь на мой канал TehnoZet-2 , там много интересного! Мы только развиваемся! Понравилась статья, хотите продолжения - ставьте лайк, жмите палец вверх.
Пользуйтесь рубрикатором по каналу, там все по разделам: " Страничка путеводитель по каналу TehnoZet-2 "
Львиную долю своего рабочего времени программисты проводят в редакторах кода. В такой ситуации комфортность и удобство рабочей среды трудно переоценить. Конечно, писать код можно и в простейшем текстовом редакторе и сохранять в .html, но с продвинутым редактором это не сравнится. Особенно если редактор ориентирован на конкретный язык. Так как питон был и остается основным языком, используемым в Data Science, и именно ему мы уделяем особое внимание на наших курсах, делимся с вами переводом статьи, автор которой пишет о знакомых ему редакторах и о том, что он считает привлекательным в них.
Примечание автора: каждый упомянутый в этой статье редактор хорош по-своему. Список — это только краткое руководство, основанное на моем личном опыте. Одни редакторы могут нравиться вам больше других. В конце концов, выбор редактора или среды разработки за вами. Нет неправильного или правильного выбора.
1. Python IDLE
IDLE — редактор, поставляемый вместе с Python. Это базовый, упрощенный режим программирования на Python. Тем не менее, IDLE хороший редактор для начала программирования и понимания основ языка. В нем есть оболочка Python — интерактивный интерпретатор. Его возможности обширны: автозавершение кода, подсветка синтаксиса, подбор отступа и базовый встроенный отладчик.
- Не подходит сложным проектам.
- Не хватает продвинутых функций.
2. Sublime Text
- Простой и по большей части бесплатный.
- Тонко настраивается.
- Компактный и эффективный.
3. Visual Studio Code
Visual Studio Code — бесплатный редактор кода от Microsoft для Windows, Linux и MacOS. Его возможности — отладка, подсветка синтаксиса, интеллектуальное завершение кода, предопределённые фрагменты кода, рефакторинг и интеграция с Git. Поддерживаются различные языки программирования. Для начала работы с Python может понадобиться несколько дополнительных пакетов, но установить их довольно просто. Редактор постоянно обновляется. Visual Studio Code — один из лучших редакторов не только для Python, но и для других языков программирования. Я часто пользуюсь VSC и очень рекомендую его.
- Это фантастическая платформа с непрерывными обновлениями.
- Потребляет немного памяти по сравнению с другими громоздкими инструментами разработки.
- Имеет встроенный терминал и прост в использовании.
- Иногда терминал работает не так, как хотелось бы.
4. Jupyter Notebook
Jupyter Notebook — это веб-приложение с открытым исходным кодом, позволяющее создавать документы с выполняемым интерактивно кодом, уравнениями, визуализациями, простым текстом. Конечно, такими документами просто поделиться. Jupyter Notebook используется для очистки и преобразования данных, численного и статистического моделирования, визуализации данных, машинного обучение и многого другого. Этот редактор — хороший вариант для начала работы с наукой о данных и машинным обучением. Файлами можно поделиться с кем угодно, они помогают эффективнее работать с кодом. Я настоятельно рекомендую Jupyter Notebook, поскольку можно работать с каждым блоком кода отдельно. Также есть возможность использовать разметку. Среда Jupyter Notebook широко используется во многих успешных компаниях.
- Лучшая платформа для начала работы с наукой о данных.
- Легко делиться файлами и визуализациями.
- Разметка и другие дополнительные функции.
5. PyСharm
PyCharm — это интегрированная среда разработки специально для Python. Разработана чешской [прим. перев. — автор ориентируется на расположение головного офиса] компанией JetBrains. Редактор разработан специально для Python, так что имеет широкий набор возможностей, таких как автозавершение и инспекции кода, подсветка ошибок, исправления, отладка, система контроля версий и рефакторинг. IDE доступна на Microsoft Windows, Linux и MacOS. Есть бесплатная и платная профессиональная версии. Профессиональная IDE имеет несколько дополнительных функций, но бесплатной версии достаточно для большинства задач. Я настоятельно рекомендую PyCharm, если у вас есть как минимум 8 Гб оперативной памяти.
- Имеет важные встроенные функции.
- Разработана профессионалами специально для Python.
- Поддерживает виртуальные среды Anaconda.
- Основная проблема PyCharm: если у вас недорогой ПК или ноутбук и в нем нет 8 Гб оперативной памяти, то IDE немного притормаживает и работает довольно медленно.
6. Thonny
IDE Thonny предустановлена на системы Linux и системы на ее основе. Мой опыт работы с этим редактором в основном связан с Raspberry Pi. Это отличная, простая среда разработки для начинающих. Thonny хорошо подходит Raspberry Pi. Некоторые возможности: подсветка синтаксических ошибок, отладчик, автозавершение кода, пошаговое вычисление выражений.
- Интерактивная среда.
- Подходит для начинающих.
- Может использоваться для проектов Raspberry Pi.
- Редактор склонен к проблемам.
- Имеет не очень много возможностей.
7. Spyder
Spyder — это мощная научная интегрированная среда программирования, написанная на Python, для Python. Она разработана учеными, инженерами и аналитиками данных для них самих. Spyder обладает уникальным сочетанием возможностей. Продвинутое редактирование, анализ, отладка и профилирование сочетается с возможностями исследования данных, интерактивного выполнения, глубокой инспекции кода и красивой визуализацией. Установить Spyder просто: скачайте его как часть дистрибутива Anaconda. Разработчики рекомендуют последнюю 64-битную версию Python 3, если у вас нет особых требований.
- Бесплатный редактор, поставляется с Anaconda.
- Хорошее рабочее окружение для просмотра интерпретаций и кодирования в два окна.
- Широкий выбор опций исключительно для Python.
8. Atom
Эта IDE похожа на текстовый редактор Sublime. Она очень настраиваемая и поддерживает многие необходимые пакеты. У меня меньше опыта работы с этим редактором, поэтому я рекомендую скорее Sublime Text, чем Atom. Но перечислю некоторые часто используемые пакеты Atom для разработки на Python: autocomplete-python , linter-flake8 , python-debugger .
- Работать с Atom легко.
- Поддерживает Python после дополнительных установок.
- Требуется дополнительный плагин для Python.
- Больше подходит для работы с git.
9. VIM
Vim — это текстовый редактор, предустановленный в системах MacOS и UNIX. Большинство экспертов любят vim за развитые вычислительные возможности и легкую, компактную среду разработки. Он не рекомендуется начинающим, так как изучать его трудно. Можно добавить плагины подсветки синтаксиса, автозавершения кода, отладки, рефакторинга и другие к Vim и использовать его как Python IDE. [Прим. перев. На скриншоте GVim — версия Vim с графическим интерфейсом].
- Легкий.
- Эффективный.
- Производительный.
- Нужно посвятить время изучению редактора, у него крутая кривая обучения.
10. Notepad++
Notepad++ — это редактор текста и исходного кода, работающий на Microsoft Windows. Поддерживается редактирование с вкладками, что позволяет работать с несколькими открытыми файлами в одном окне. Название проекта происходит от оператора инкремента языка С. Notepad++ распространяется как свободное программное обеспечение. Редактор поддерживает множество языков программирования и может быть полезным. На мой взгляд, есть и лучшие варианты. Кроме того, нужно установить дополнительные пакеты, чтобы сделать редактор функциональным для программирования на Python.
- Заменяет блокнот.
- Может использоваться для нескольких языков программирования, включая Python.
- Требуется дополнительная настройка и установки плагинов, чтобы работать с Python.
- Не в топе рекомендаций: есть много вариантов получше.
11. Онлайн редакторы
На Programiz, tutorials point, w3schools и некоторых других сайтах есть редакторы с удивительными возможностями.
- Никаких дополнительных установок и настроек.
- Простой код запускается без особых хлопот.
Расскажите, в каком редакторе для Python вы пишете код и почему?
Получить востребованную профессию с нуля или Level Up по навыкам и зарплате можно, пройдя онлайн-курсы SkillFactory:
Одной из целью популяризации DIY-робототехники, для меня, является привлечение внимания к IT, к программированию. И в этом плане мне интересны визуальные среды программирования, где простым Drag&Drop можно создавать программы. Для тех кто только начинает изучать компьютер — такой способ программирования может на начальном этапе вызвать интерес (благодаря своей простоте), и дальше уже способствовать к самостоятельному изучению (чего-то более сложного).
Думаю многие слышали про Scratch — это «классика жанра» (созданная в MIT, идея 2003 и выход в релиз 1.0 в январе 2006 году), но для его работы необходимо установка ПО на компьютер (или Flash). Некоторое время назад в University of California at Berkeley была разработана система Snap!, интерфейсе которой близок к Scratch, но работает в браузере, на базе классических html/js/css. То есть для работы с ней — вам достаточно только браузера (и к тому же она open-source).
Вот о веб-системе визуального программирования Snap! я и хочу рассказать.
Изучать что-то новое всегда интересно на каком либо примере из жизни, вот я и решил попробовать задачу рисования и озвучивания азбуки Морзе — этапы решения этой задачи и будет содержимым данной публикации.
Программа будет при нажатии на клавиши — рисовать соответствующие символы, и так же «озвучивать». На КДПВ приведена итоговая программа, и справа написано «HI HABR, HABR HI».
Если кому-то хочется сразу увидеть результат, то демо здесь.
"клавиша вверх" — инициализация параметров и очистка (лучше нажать после загрузки — выставится ширина точек)
"клавиша вниз" — перевод строки
клавиши "h", "i", "a", "b", "r" — рисование и озвучивание соотв. буквы с помощью азбуки Морзе.
Начало
Для старта системы Snap! достаточно открыть эту страничку в браузере.
Вот что мы увидим после старта:
Если у вас не было опыта работы со Scratch, то поясним принцип работы с такой системой:
Выполнение блоков на центральной области — отображается на правой области, где мы видим «курсор».
Возможно кто-то помнит систему программирования Logo (Черепашка), где подавая команды на перемещение, и рисование — можно было бы рисовать фигуры. С этого примера и начнём.
Первое знакомство
Для первого знакомства с работой в Snap! нарисуем квадрат.
Вверху над блоками отображаются типы блоков (обращаем внимание, что они разного цвета):
- Движение — здесь мы управляем движением и местоположением «курсора»
- Внешность — здесь мы управляем внешним видом «курсора» — который по сути «спрайт»
- Звук — здесь мы можем воспроизводить звуки
- Перо — это функции для рисования
- Управление — с помощью этих блоков мы можем добавлять логику
- Сенсоры — это обратная связь из «мира» где живёт «курсор» — определение касаний и т.п.
- Операторы — это математические функции, условия, циклы
- Переменные — здесь можно определять переменные
1. выберем раздел «Перо», и перетащим блок "опустить перо" в центральную область.
2. выберем раздел «Движение», и перетащим блок "передвинуться на 10 шагов", после — изменим значение 10, на 50.
3. перетаскиваем блок "повернуться по часовой на 15 градусов" — изменим 15 на 90.
4. соединим блоки «передвижения» и «поворот» — для этого захватим «повернуть» и передвинем его к нижней части блока «передвинуть» до появления светлой полосы — индикатора соединения блоков — и отпускаем блок — после этого два блока становятся соединенными.
Если мы сейчас нажмем на этих блоках — то наш курсор начнёт двигаться и поворачиваться, при каждом нажатии. Но он не рисует, для этого просто нажмем на блоке "опустить перо" — после этого курсор будет рисовать. И нажав 4 раза — нарисуем квадрат.
Теперь очистим зону рисования, для этого выберем раздел «Перо» и нажмем на блоке "убрать всё" (можно не переносить в рабочую зону).
5. выбираем раздел «Управление», и перенесем блок "повторять 10", в рабочую область, и изменим 10 на 4.
6. переносим блоки "опустить перо" и блоки «передвинуть/повернуть», внутрь блока «повторять» — до их автоматического соединения с блоком.
7. так же из раздела «Управления» — перенесём блок "Когда щелкнуть на (зеленый флаг)", в рабочую область, и прикрепляем её к верней части блока «повторять».
Всё мы закончили нашу программу, теперь нажимая на «зелёном флажке», справа вверху (над зоной рисования) — мы будем стартовать нашу программу рисования.
Вот что получилось:
Создание азбуки Морзе
- одна будет рисовать точки
- а вторая тире.
Рисование точки
1. Переходим в раздел «Перо» — переносим блок "установить размер пера 1" — и выставляем его 10. Так будет видно хорошо точку.
2. Из раздела «Движение» переносим блок "передвинуться на 10 шагов" — и выставляем 1 шаг. Так мы нарисуем точку (т.к. кисточка имеет диаметр 10 пикселей — она нарисуем нам окружность).
3. И не забудем перенести блок "опустить перо" из раздела «Перо» — иначе мы ничего не увидим :)
4. Соединяем все блоки, и получается:
Видим, что наш «курсор» закрывает нарисованную точку, для решения этой проблемы — мы просто уменьшим размеры «курсора»:
5. В разделе «Внешность» находим и переносим блок "установить размер в 100" и выставляем его 10. (и прикрепляем его к нашим блокам сверху).
6. Так же сделаем чтобы курсор переходи дальше, но без рисования, для этого перемещаем (и соединяем) блок "поднять перо" из раздела «Перо»
7. Добавляем блок "передвинуть на 10 шагов" из раздела «Движение» — и прикрепляем вниз к нашим блокам, и изменяем 10 шагов на 15.
В итоге получаем (предварительно очистив зону «Перо» — "убрать все"):
Точка справа — это есть наш уменьшенный «курсор» — в этом месте начнется следующее рисование.
Рисование тире
Для рисования тире — нам нужно только увеличить параметр движения с 1 до 10 шагов, а остальное оставить без изменений.
В Snap! есть возможность клонировать блоки, для этого на наших блоках нажимаем правой клавишей мыши, и выбираем «продублировать» — появится дубль, и переносим его вниз. И меняем значение в блоке "передвинуть на 1 шаг", на 15.
Нажимаем на этом сборном блоке, результат:
Видим, что мы нарисовали «тире»!
Обработка нажатий
Теперь мы можем попробовать привязать выполнение наших блоков, не к нажатию по ним, а к нажатию клавиш на клавиатуре.
Например, сделаем: нажатие «0» — точка, нажатие «1» — тире (клавиши на основной клавиатуре).
1. Для этого переходим в раздел «Управление» и выбираем блок "Когда нажать «пробел» клавишу", и прикрепляем его сверху нашей группы блоков (где рисуется точка). И выбираем в выпадающем списке вместо «пробела» — «0»
2. Такой же блок переносим, и прикрепляем сверху группы блоков «тире», и выбираем вместо «пробел» — «1».
Получаем, и проверяем:
Напомню, очистку зоны рисования можно сделать «Перо» — «убрать все», и перемещение курсора в начало: «Движение» — «перейти в точку х [0] y [0]»
В англоязычном варианте азбуки Морзе буква «А» закодирована, с помощью «точка», «тире». Так же после символа должна быть небольшая задержка — отступ (пробел).
А в текущих функциях/блоках где происходит рисование по нажатию — мы заменим на выполнение по получению сигнала.
Таким образом у нас будет три сигнала (события):
* dot
* dash
* space
Вот что у нас должно получиться:
Начальные параметры
Произведём небольшой «рефакторинг».
- выставление курсора в начало
- очистка экрана
- выставление размера курсора
- выставление размера точки рисования.
И добавим обработку блока «пробел» — «space» — он будет выполнять только передвижение курсора — для выполнения отступа между «буквами» кода Морзе.
Вот, что у нас получилось:
Кодирование символов
Ну вот, наконец-то мы подошли к самому главному — кодированию символа A. Чтобы при нажатии на «а» — происходило рисование соотв. букве коду Морзе.
Для этого мы используем блок "когда нажать [] клавишу" из Управления, и блоки "переслать всем и ждать" оттуда же. Конкретно, для буквы А, мы должны выслать «точку», «тире», и далее «пробел» (соответственно сигналы: «dot», «dash», «space»).
Вот что получается:
Переменные и перенос строки
В процессе работы я понял, что без переноса строки будет не очень удобно рисовать азбуку морзе. Поэтому сделаем функцию «перенос строки», и назначим её на нажатие клавиши курсора «вниз».
Для выполнения переноса строки необходимо выполнить две задачи:
1. передвинуть курсор на начало по оси X
2. передвинуть курсор на следующую строку (по оси Y) на высоту строки.
Для их реализации я решил ввести две переменные:
* начало текста по оси X (left_border)
* высота строки (line_height)
Значение переменной left_border будет использоваться при выставлении начальной позиции (мы изменим с 0, на -200 чтобы рисование начиналось с левой части экрана).
Для добавления переменной, необходимо нажать слева вверху на разделе «Переменные», и там на "Объявить переменную":
Таким же образом объявим переменную «line_height».
После добавления переменные будут отображены слева (для того чтобы их можно было Drag&Drop и вставить в арифметические операции, условия и т.п.), и так же значение переменной будет транслироваться на экран рисования — чтобы отключить отображение на экране — достаточно нажать слева от переменной (на панели Переменных).
Теперь мы можем выставить значения этим переменным, с помощью блока "придать [] значение [0]" в разделе «Переменные» — перенесём эти блоки в нашу «Функцию инициализации». И выставим для left_border = -200, для line_height = 20.
Вот как выглядит в результате наша функция инициализации и переноса строки:
арифметические команды находятся в разделе «Операторы», а саму переменную мы Drag&Drop из раздела «Переменные» — в соотв. поле функции (обращаем внимание на разные формы).
Кодирование оставшихся букв
По аналогии с буквой А, мы закодируем буквы H, I, B, R:
Звук
Для получения звука, нам достаточно воспользоваться блоком, что воспроизводит звук, в Snap! есть возможность получения звука с указанием частоты и длительности.
Эти блоки будут так же «слушать» сигналы dot, dash и space.
The duration of a dash is three times the duration of a dot. Each dot or dash is followed by a short silence, equal to the dot duration. The letters of a word are separated by a space equal to three dots (one dash)
Открываем раздел «Звук», и нам понадобятся два блока: "сыграть ноту [60] [0.5] тактов", и "пауза [0.2] тактов".
Выбираем частоту 80, и такт 0.1 в качестве «пробела» после точки/тире, и 0.3 такта для «пробела» между символами.
Получим следующие блоки:
Удобство системы событий/подписчиков — что не изменяя самой логики системы, мы просто дополнили механизм (для звукового сопровождения), с помощью создания новых подписчиков на «точку», «тире» — а уже их реализация
Сохранение/экспорт проекта
Сохранить проект можно с помощью меню (нажимаем на иконке «Листок» слева вверху:
Сохранение происходит в локальный storage браузера, есть возможность сохранять в облако, после регистрации.
Так же можно экспортировать проект — "Экспорт проект. " — мы получим xml нашей программы. Вот так выглядит эта программа по азбуке Морзе.
В заключении
Конечно, это лишь малая часть возможностей Snap!, и думаю в следующих публикациях мы попробуем на практике другие возможности системы — в частности взаимосвязь с внешними системами, в том числе Arduino.
На мой взгляд наличие такой визуальной системы могло бы добавить интереса в уроки информатики, а если бы ещё были уроки робо-информатики — то думаю программирование было бы интересным и востребованным в школе :)
Некоторое время назад был начат перевод «Руководства пользователя» по Snap! на русский язык. Если вы готовы помочь выступить в качестве корректора, или помочь финансово (а 77 страниц перевести это всё же не простое дело). То можете отметиться в анкете по Snap!
Меня зовут Сергей Глушенко, и я являюсь автором проекта FLProg. Данный блог посвящён этому проекту, и здесь я буду рассказывать о новостях проекта, и достижениях участников сообщества пользователей программы. Проект посвящён созданию визуальной среды программирования плат Arduino, и поэтому прежде чем рассказывать о программе FLProg, я хочу сделать небольшой обзор существующих программ предназначенных для программирования этих плат.
- Прокачанные «Блокноты»
- Текстовые среды разработки
- Графические среды, визуализирующие структуру кода.
- Графические среды, отображающие код в виде графики.
- Визуальные среды программирования, не использующие кода.
Прокачанные «Блокноты»
К этому типу относятся оригинальная среда программирования Arduino-IDE, а так же множество её клонов.
Проектирование программы для контроллера в ней происходит на языке Processing/Wiring, который является диалектом языка Си (скорее Си++). Эта среда представляет собой, по сути, обычный текстовый редактор с возможностью загрузки написанного кода в контроллер
Текстовые среды разработки
Альтернативой Arduino IDE является среда разработки от производителя микроконтроллеров Atmel — AVRStudio.
Программирование в ней ведётся на чистом C, и она уже имеет намного больше возможностей и более похожа на серьёзные IDE для «настоящих» языков программирования.
Эти два типа программ рассчитаны на опытных программистов, которые хорошо знают язык и могут с помощью них создавать серьёзные проекты.
Графические среды, визуализирующие структуру кода.
Это программы, которые, по сути, являются расширением форматирования для обычного текстового редактора кода. В нем программа так же пишется на языке С, но в более удобном варианте. Сейчас таких сред очень много, самые яркие примеры: Scratch, S4A, Ardublock. Они очень хорошо подходят для начального обучения программированию на языке С, поскольку отлично показывают структуру и синтаксис языка. Но для больших серьёзных проектов программа получается громоздкой.
Графические среды, отображающие код в виде графики
Это программы, скрывающие код и заменяющие его графическими аналогами. В них так же повторяется структура языка, формируются циклы, переходы, условия. Так же очень хорошо подходят для обучения построению алгоритмов, с последующим переходом на программирование на классических языках. И так же не подходят для построения больших проектов ввиду громоздкости получаемого отображения. Пример такой программы: MiniBlog, Algorithm Builder, Flowcode
Описанные выше типы программ рассчитаны на программистов или на тех, кто решил изучать классическое программирование. Но для изготовления конечного устройства кроме непосредственно программирования контроллера обычно требуется разработка внешней обвязки платы, разработка и расчет силовой части, входных развязок и многого другого. С этим у программистов часто возникают проблемы. Зато с этим прекрасно справляются электрики и электронщики. Но среди них мало программистов, которые смогли бы составить программу для контроллера. Сочетание программиста и электронщика – достаточно редкий случай. В результате такой ситуации реальных, законченных проектов на основе плат Arduino (да и других контроллеров) единицы. Для решения этой проблемы и служат программы последнего типа.
Визуальные среды программирования, не использующие кода.
Данные программы реализуют принцип, который уже много лет применяется практически всеми производителями контроллеров промышленного применения. Он заключается в создании программ для контроллера на языках FBD или LAD. Собственно говоря, как таковыми языками они не являются. Это, скорее, графические среды для рисования принципиальных или логических схем. Вспомним, что процессоры далеко не всегда были микропроцессорами, а создавались на базе цифровых микросхем. Поэтому тем, кто привык работать с цифровой техникой, больше понравится работа на них, чем написание кода на классических языках программирования. Примером таких программ являются проекты Horizont и FLProg. Программы этого типа хорошо подходят как для изучения построения импульсной и релейной техники, так и для создания серьезных проектов.
Ну и наконец, герой этого блога, проект FLProg.
Поскольку я много лет работаю разработчиком систем АСУТП, я постарался собрать в программе FLProg все, что мне наиболее понравилось в средах от ведущих производителей промышленного оборудования (Tia-Portal, Zelio Soft, Logo Soft Comfort).
Программа позволяет составлять схемы в двух видах: функциональные схемы (FBD) и релейные схемы (LAD).
FBD (Function Block Diagram) – графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.
Ladder Diagram (LD, LAD, РКС) – язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на специалистов по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
Такой способ программирования оказался очень удобным для легкого вхождения в разработку систем АСУ инженеров-электриков и электронщиков. Разрабатывая проекты устройств, они могут легко привязать работу этих установок к алгоритмам работы контроллера.
Построенная на этих представлениях программа FLProg работает с Arduino. Почему?
Плата очень удобна для быстрой разработки и отладки своих устройств, что важно не только радиолюбителям, но весьма полезно, например, и в школьных кружках, и в учебных лабораториях колледжей. Одно из преимуществ – вам не нужен программатор. Вы подключаете плату Arduino к компьютеру и готовую программу загружаете из среды разработки. В настоящее время существует богатый выбор модулей Arduino, дополнительных модулей, работающих с Arduino, датчиков и исполняющих устройств.
В настоящее время программой поддерживаются следующие версии Arduino: Arduino Diecimila, Arduino Duemilanove, Arduino Leonardo, Arduino Lilypad, Arduino Mega 2560, Arduino Micro, Arduino Mini, Arduino Nano (ATmega168), Arduino Nano (ATmega328), Arduino Pro Mini, Arduino Pro (ATmega168), Arduino Pro (ATmega328), Arduino UNO. Кроме того недавно в списке поддерживаемых контроллеров появилась плата Intel Galileo gen2. В дальнейшем предполагается пополнение и этого списка, и, возможно, добавление плат, основанных на контроллерах STM.
Проект в программе FLProg представляет собой набор своеобразных плат, на каждой из которых собран законченный модуль общей схемы. Для удобства работы каждая плата имеет наименование и комментарии. Также каждую плату можно свернуть (для экономии места в рабочей зоне, когда работа над ней закончена) и развернуть.
Более подробно о проекте я расскажу в последующих постах, а напоследок небольшое видео показывающее принципы работы в программе и возможность управления платой из приложения на смартфоне.
Правильно подобранный инструмент в арсенале программиста значительно облегчит написание кода и поможет предотвратить массу ошибок. Мы расскажем про 5 лучших редакторов кода.
С хорошим редактором удаётся в разы быстрее писать код, а в сочетании с воизбежанием массы лишних трудностей, производительность программиста возрастает в несколько раз.
Если вы только начинаете заниматься программированием, но не знаете с чего начать, советуем обучаться в онлайн курсах по программированию .
1. Atom
Atom – это open source редактор, его производителем является известная компания GitHub. Особенность редактора кода заключается в доступности и многофункциональности. Он идеально подходит как для новичка, так и « бывалого » программиста, но наибольшим преимуществом является лёгкость настройки и возможность персонализации под различные потребности. Работа с конфигами редактора больше не потребуется, его можно использовать сразу после установки.
Atom имеет несколько способов настройки, позволяющих не только изменить облик, но и поведение в зависимости от поставленной цели. Дополнительно редактор поддерживает ручные HTML и JS настройки посредством изменения UI. Благодаря перечисленным плюсам, Atom занимает уверенное первое место в списке.
Функциональные особенности Atom:
- кроссплатформенность: уверенно и эффективно работает как на Windows, так и Mac, Linux;
- обладает встроенным менеджером пакетов, с его помощью легко искать и расширять количество существующих пакетов;
- поддерживает автодополнение функций. Умная функция с гибкой настройкой под различные языки ускоряет написание кода;
- встроенный файловый браузер, позволяющий быстро открывать каталоги и отдельный файлы. Благодаря добавлению проекта или проектов в редактор, увеличивается скорость сёрфинга и редактирования документов;
- обилие полезных панелей. Можно настроить сравнение и редактирование кода в различных файлах посредством разделения интерфейса на несколько частей.
2. CodeLobster
На IDE под названием CodeLobster удобнее всего работать веб-программистам. Подходит фронтэнда и бекэнда . Особенно полезен в сложном коде JS, но также успешно работает в CSS, PHP, HTML. Обладает встроенными подсказками при написании тэгов, циклов и других конструкций, а также подсвечивает нарушения синтаксиса.
Сам его активно использую при работе со смешанным кодом. Редактор корректно подсвечивает блоки на разных языках в пределах одного документа, на это способны немногие программы. На практике проверено, что приложение хорошо работает с PHP и HTML, а также JS с CSS.
CodeLobster имеет пусть и не уникальную, но крайне полезную функцию автодополнения кода для различных распространённых конструкций. Посредством автодополнения устраняется вероятность допустить ошибку при написании кода.
При нажатии на команды высвечивается контекстная помощь, работает на всех встроенных языках. Все рекомендации и сноски построены на актуальной, официальной информации. Все теги, атрибуты, функции и т. д. можно увидеть после нажатия F1.
Немаловажным достоинством является поддержка XDebug, которая позволяет пошагово инициировать запуск PHP-скриптов. Это простейший и наиболее эффективный способ находить ошибки в коде. Мы можем устанавливать точки остановки скрипта на любой строке и определять значения переменных. Сложно придумать что-то лучшее для дебага.
Что ещё интересного в редакторе:
- есть подсветка скобок и любых тегов (разумеется, парных). Это позволяет избавиться от подсчёта количества различных скобок, всё произойдёт автоматически;
- автоматически подсвечивает разные типы кода и предоставляет возможность создания отдельных визуальных блоков для свёртывания кода, формирования сниппетов, закладок, отдельных окон, структуры и т. п.;
- уже сегодня интерфейс представлен на 17 распространённых языках, в том числе на русский и английский;
- программа относится к мульти-платформенным приложениям. Без труда можно запустить редактор на Windows 7 и выше, Linux, Mac, Debian, Ubuntu, Fedora.
CodeLobster распространяется в стандартной и премиум версии . В платной версии есть пару полезных дополнений: обработка в режиме онлайн файлов, расположенных на облачном сервере при помощи внедрённого FTP-клиента. Синхронизация работы команды разработчиков «как нельзя кстати» при работе над крупным проектом.
Среди других дополнений в Premium версии:
- поддержка не только чистого языка JavaScript, но и распространённых библиотек, без которых редко обходится какая-либо разработка: jQuery, VueJS, BackboneJS, AngularJS, Node.js;
- обширный выбор расширений, помогающих в работе с фреймфорками PHP: CakePHP, CodeIgniter, Laravel, Symfony, Yii;
- есть плагины для взаимодействия с распространёнными CMS: WP, Joomla, Drupal, Magento.
3. Sublime Text 3
Sublime Text по праву заслуживает звание самого популярного редактору среди разработчиков всех сфер, работающих на Linux. Он не только лёгкий, но и быстрый в работе. Весь редактор состоит из пользовательских компонентов, что повышает отзывчивость. Кроссплатформенный, персонализированный и мощный инструмент быстро указывает на любые ошибки и опечатки в коде, моментально подсвечивая их и улучшая производительность разработчика.
Приложение можно применять и в роли обычного блокнота для редактирования текста, и в качестве мощного редактора. При подключении плагинов, функциональность расширяется многократно. Поклонники редактора утверждают, что в Sublime Text сочетаются все возможности, на которые могут быть способны IDE. Обилие вариантов персонализации: создание сниппетов, горячих клавиш, меню, макросов, добавление плагинов и всё это выполняется при помощи стандартных JSON-файлов . С помощью этой системы редактор получит гибкость и оказался приспособленным для любых проектов.
Ключевые характеристики Sublime Text 3:
- выделения некорректных фраз, функции и подчёркивание ошибок. К слову, функция работает правильно с достоверностью в 98%. Простое подчёркивание слов повышает производительность в несколько раз;
- обилие предустановленных команд, «забитых» на клавиши. Манипуляции мышью снижаются до минимума, намного быстрее всё выполнить в одно движение руки на клавиатуре;
- многочисленные настройки для подбора интерфейса и настройки поведения;
- присутствует полноэкранный режим ( Distraction Free ). Убирает все посторонние элементы страницы, оставляя программиста наедине с кодом;
- поддерживает большинство распространённых языков программирования.
4. Brackets
Brackets – это набирающий популярность редактор от известной компании Adobe, специализирующийся по работе на Linux. Отличительной чертой программы является её бесплатность, хотя остальные продукты стоят немало. Приложение нацелено на веб-разработчиков, так как обладает всеми необходимыми функциями для веба. Даже разработан редактор на JS.
Ключевые особенности редактора:
- редактирование в режиме Live. Результат изменений сразу отображается на экране;
- за счёт внедрённого редактирования нет необходимости открывать файлы, в которых располагается код, заменить фрагменты можно сразу;
- упрощает редактирование препроцессоров, производительность значительно лучше, в сравнении с другими редакторами. Без труда работает с SASS- и LESS-файлами.
5. Vim
Является модернизированной версией известного редактора Vi, который является предустановленным блокнотом во многих UNIX-системах. Неслучайно Vim относится к редакторам для программирования, так как он относится к реконфигурируемым программам. Он является полноценным IDE . На Vim легко производить любое редактирование текста, не обязательно программистам. Есть всё для создания от электронных писем до файлов конфигурации.
Vim подходит для применения и в качестве полноценного приложения, и в роли апплета для редактирования кода через консоль.
Главные особенности Vim:
- автоматизированные команды;
- возможность введения диграфов;
- разделение экрана;
- сессионный экран;
- расширение кнопкой Tab;
- подсвечиваемый синтаксис;
- донабор тегов.
Если статья была для вас полезной, просим поставить лайк и подписаться на наш канал . Также посетите наш сайт и наш YouTube канал , чтобы увидеть больше подобного контента.
Читайте также: