Обучающие платформы. PICAXE vs Arduino

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

Что такое PICAXE?


PICAXE изначально была задуманна как платформа для обучения старшеклассников (high school students) азам электронного и микроконтроллерного дела. Однако (по словам офф.сайта), благодаря своей простоте в использовании система PICAXE была принята на вооружение сотнями тысячь любителей (hundreds of thousands of hobbyists) и в каждый год число поклонников данной платформы пополняется.

makesystem.netЯдром данной платформы являются микроконтроллеры семейства PIC, с зашитым в них PICAXE загрузчиком кода (PICAXE bootstrap firmware), что позволяет без дорогостоящего PIC программатора, при помощи простого USB кабеля и специального софта легко программировать PICAXE микроконтроллеры.

В качестве языка программирования, разработчики PICAXE, предлогают новичкам – BASIC language и graphical flowcharts.

Одним из главных конкурентных преимуществ PICAXE, является большое количество софта.

  • AXEpad. Кросс-платформенная среда разработки на базе языка BASIC, с подсветкой кода, проверкой синтаксиса, поддержка отладки и симуляции, и т.д.
  • PICAXE programming editor. Тоже самое что и AXEpad с той лишь разницей что он только под Win OS.
  • PICAXE compiler.
  • PICAXE Logicator (shareware). Данная программа позволяет создавать код при помощи графического построения блок-схемы, путем перетаскивания библиотечных ячеек (flowchart cells) и соединения их связями. Также данная программа позволяет создавать до четырех параллельных процессов (для ограниченного числа поддерживаемых микроконтроллеров), что для начинающего не всегда под силу. После завершения создания программы, ее можно тут же просимулировать. Также данная программа, позволяет для некоторых микроконтроллеров производить внутрисхемную отладку. По окончанию всех этапов программирования/отладки можно при помощи PICAXE USB download cable прошить PICAXE микроконтроллер.
  • PICAXE VSM (платный). Одним словом – Proteus VSM.
  • DesignSpark PCB или Eagle. DesignSpark представляет из себя свободное ПО, без каких либо ограничений по размеру платы, числу пинов и т.д., поддерживает черчение электронных схем (schematic capture), разводку печатных плат (PCB layout) и создание производственных файлов (generating manufacturing files). Также полностью поддерживает авторазмещение и автомаршрутизацию. Подробнее на оффсайте DesignSpark.
Весь список софта можно посмотреть здесь.

Это вам ничего не напоминает?

В синем углу ринга, чемпион мира в любительской весовой категории, родом из Италии – Arduino!!!

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

К чему завел я эту тему?


Ах да, вырисовывается любопытное противостояние, я бы даже сказал локально-эпическое, за души ни в чем неповинных любителей, во выдал :):

  • PICAXE vs Arduino
  • pic vs avr
  • Basic vs почти C
  • Британия vs Италия
предсказываю много срача по этому поводу, и я этому подтверждение :), хотя ни Arduino ни PIC с PICAXE меня не интересует. Исходя из даты старта местного форума да и блогов, которые стартовали этой осенью или как минимум записи в них появились только в сентябре, у Arduino появился конкурент с точки зрения “обучающая платформа”, хотя Arduino очень даже не плохо подмял под себя данный рынок и новичек может оказать достойную конкуренцию только предложив что то новое, что имхо, они и сделали: новый камень, много софта, низкие цены, и т.д. Что для меня, шастая уже по PICAXE сайту, меня заинтересовала уже другая прога – DesignSpark, посмотрим что она из себя представляет. To be continued…

PS жду ваших объективных мнений, или может кто уже встречался с данной платформой? аль я последний узнал об этом? в общем пишите
PPS смешные сцены
PPPS я не спец по Basic'у, может кто взглянет на тамошние примеры кода и подтвердит, а то "меня терзают смутные сомнения" ©
PPPPS заглянуть на огонек

Комментарии (63)

RSS свернуть / развернуть
Первая картинка как бы намекает нам, что PICAXE не взлетит :)
+1
про Arduino слышно не первый год, а вот про PICAXE слышу впервые
0
На самом деле про Picaxe да Basic Stamp тоже очень популярны в определенных узнких кругах, а именно пионэров из Англии и Америки. Я даже не удивлюсь, если окажется, что они старше Ардуино.

Почему они не летают:

1. Скромно умолчим, что они на PIC
2. Язик бьейсек
3. Цена (дорого)
4. Не open hardware (по крайней мере, они ставку на это не делают, а знфчит существенно теряют в интересе, рекламе и поддержке)
0
сотнями тысячь любителей
дорогостоящего PIC программатора
Бред.

что позволяет без (...) и специального софта
Одним из главных конкурентных преимуществ PICAXE, является большое количество софта.
Наши блокноты — самые блокнотистые блокноты в мире?)

Ардуйня не нужна. Никакая это не платформа, а хренька для сцепления готовых кубиков — шилдов и соответствующих библиотек. Как только тебе захочеца сделать что-то своё, начнётся кромешный адъ. Короче, такой айфон для нищебродов.
0
сотнями тысячь любителей
… это все перевод с оффсайта, а дорогостоящий написан курсивом :)
Наши блокноты — самые блокнотистые блокноты в мире?)
… это точно, выглядит не очень
0
это все перевод с оффсайта, а дорогостоящий написан курсивом :)
Тогда в чём смысл поста? Just for lulz?

Алсо объясни в каком месте PICAXE и прочая ардуйня является «обучающими платформами»? Чему оно учит? Втыкать шилд в разъём (нечему тут учить, любой, у кого есть комп, может втыкать платки в слот, без какого-либо дополнительного обучения)? Или выучить несколько команд наподобие Serial.write?
0
Тогда в чём смысл поста? Just for lulz?
… ага, я же писал что ни Arduino ни PIC с PICAXE меня не интересует
Чему оно учит?
… а если бы у нас в школах преподавали программирование, с использованием подобных плат, было бы очень поучительно
0
если бы у нас в школах преподавали программирование, с использованием подобных плат, было бы очень поучительно
Трудно придумать для обучения что-нибудь хуже подобных плат. Если человек выучит, что «напиши здесь вот так и вон там оно мигнёт» никаких полезных навыков не даст.
0
не получит*
0
… не такое обучение как напиши здесь вот так и вон там оно мигнёт вообще не желательно, а вот если проф объяснит что происходит, почему именно так, и что будет если так не сделать, тоесть нормальное обучение, то это имхо очень увлекательно. Я б хотел чтобы когда я учился в школе было чтото подобное, но увы.
0
Трудно придумать для обучения что-нибудь хуже подобных плат. Если человек выучит, что «напиши здесь вот так и вон там оно мигнёт» никаких полезных навыков не даст.
Я так не считаю. Напротив, такие средства позволяют избежать типичной ситуации «за деревьями леса не видно».
0
Ну в первом приближении. А как потом от данной хреньки вглубь идти? Если логика работы хреньки даже не в либах, а в компиляторе (трансляторе?)
0
Если вглубь — то можно и на другие языки/платформы. К тому же, не думаю что тут все в компилятор упихано.
К тому же «вглубь» и с того же С придется идти в другой язык — ассемблер.
0
Данная хренька не даёт ощущения, что за каким-нибудь «serout B.7,N2400,(b1)» что-то есть. Оно реализует логику «нажал кнопку — получил банан». В отличии от Си, с которого не так уж трудно прийти к ассемблеру. Так что прежде чем идти вглубь, придётся начинать всё сначала, на нормальном языке, плюс предварительно ломать уже имеющееся кнопочно-бананное мышление.
0
В отличии от Си, с которого не так уж трудно прийти к ассемблеру
… с бэйсика думаю не сложнее
0
Строка printf(«Hello, world»); тоже не дает ощущения, что за ней что-то есть.
Кстати, как ни странно, бейсик куда ближе к ассемблеру, чем С.
С другой стороны, не знаю, насколько этот бейсик ушел от оригинального. Оригинальный был практически лишен средств структуризации программы и прививал дурной вкус программирования. Так что при движении не вниз, к ассемблеру, а вверх может потребоваться насильно вбивать правила программирования на структурных/объектных/функциональных языках. Ардуино в этом плане лучше.
0
Строка printf(«Hello, world»); тоже не дает ощущения, что за ней что-то есть.
В каком месте? Обычный вызов обычной функции, что не понятно?
Оригинальный был практически лишен средств структуризации программы и прививал дурной вкус программирования.
Оригинальный паскаль со своими read/write, впрочем, тоже.
0
Обычный вызов обычной функции, что не понятно?
Это тебе. А для начинающего эта строчка ничем не отличается от PRINT «Hello, world» или «serout B.7,N2400,(b1)». Кстати, в синтаксисе многих бейсиков так записывается не менее обычный вызов не менее обычной функции. Собственно, это и есть функции, просто в ранних вариантах они были только встроенные.
Оригинальный паскаль со своими read/write, впрочем, тоже.
Не надо ля-ля, паскаль — структурный язык, на порядки более строгий, чем васик. Read и Write, кстати, опять же обычные функции. Так что паскаль как раз прививал нормальное структурное программирование, в отличие от «макаронного программирования» бейсика (да и ассемблера, на самом деле).
0
Компиляторные НЁХ же, и там, и тут.
0
С точки зрения ассемблера, вызов функции и ее локальные переменные — «компиляторная НЁХ». Не надо все языки подгонять под С. В современных паскалях в Read/Write из компиляторной магии осталось только то, что эти функции могут принимать переменное число аргументов.
Да и главное — разделение на «средства языка» и «библиотеки», принятое в С, не является единственно верным и истинным решением. И к прививаемому стилю программирования отношения не имеет. В плане стиля паскаль намного строже и лучше С.
Отличается тем, что со временем он разберётся.
В бейсике тоже разберется. Если захочет.
0
Какая разница, что из себя представляет скомпилированная программа с точки зрения ассемблера?
Переменное число аргументов с точки зрения этого самого структурирования — это НЁХ (которой, кстати, в кривом и уродловом Си почему-то нету).
0
Какая разница, что из себя представляет скомпилированная программа с точки зрения ассемблера?
Да собственно то, что для самого языка нету НЁХ — есть допустимая и задокументированная конструкция serout <...>. Это ты считаешь, что это НЁХ, которая должна реализовываться библиотекой, а не компилятором.
которой, кстати, в кривом и уродловом Си почему-то нету
ORLY? Напомнить, почему в cdecl аргументы передаются именно в таком порядке, а стек чистится вызывающей стороной?
Переменное число аргументов с точки зрения этого самого структурирования — это НЁХ
Ну вот потому в паскале этого и нету. Только для двух конструкций языка (не библиотеки) допустимо использование переменного числа аргументов.
0
Когда язык противоречит сам себе — это НЁХ. Пусть и задокументированная.
в cdecl аргументы передаются именно в таком порядке, а стек чистится вызывающей стороной
То, что ресурс освобождает именно тот, кто выделяет (место в стеке) — полностью логично и оправданно. В данном случае, руки из жопы растут у того, кто делает иначе.
0
А как-же накладные расходы, драгоценные байты и такты? :)
0
Сэкономить ресурсы мона и не добавляя в компилятор грязные хаки.
0
Это я к тому, что функции с переменным числом аргументов в Си выглядят чужеродными — где ещё есть ..., имеют жесткие требования к реализации — всё запихивается в стек в определенном порядке, имеют «ужасные» накладные расходы — даже char заносится в стек как int. Определение типов переданных параметров это вообще песня — язык и компиляторне предоставляют для этого ничего — выкручивайся как хочешь. Они небезопасны — промахнулся с размером аргументов и сам виноват. Плюс сложности при переносе кода между платформами с разными размерами базовых типов.
Типичное описание грязного хака, добавленного в компилятор, за исключением одного «НО» — этот хак хоть и ужасен, но стандартен.
Буду столь-же категоричен, как и вы: функции с переменным числом аргументов (printf, scanf и иже сними) в языке Си — это узаконенные грязные хаки.
0
В Си просто реализован наиболее оптимальный вариант. Такие варианты, как реализовать «все нужные» функции с переменным числом аргументов в виде компиляторной магии (совсем уж детский сад), или развести болото из классов и шаблонов на 10к строк (ради решения элементароной задачи) — менее прозрачно и надёжно (можешь что угодно говорить, но синоним надёжности — простота).
0
Вам, сударь, тогда нужен не Си с микроконтроллерами — они сложные, а кирпич — он сука простой, а потому надёжный :)
+2
Всё измеряется относительно задачи.

Стоит заметить, что когда инженер (не быдлокодер, а вообще) работает над ответственной конструкцией и отвечает за надёжность головой, быстро отбрасываются все высокоуровневые понты и инкапсуляции. Система защиты, скажем, не какая-то НЁХ с кучей датчиков и процессоров, а старая добрая механика. Вместо хитроумных приводов — гидравлика, etc. Т.е. как можно проще и соответственно, надёжней. Ну ты понял.
0
Всё измеряется относительно задачи.
Вот!!! А задачи и условия бывают очень разные. Поэтому высказывания типа: «ХХХ — гавно, УУУ — рулит», безотносительно задач и условий являются пустым трёпом.
Хотя нет… Они всегда — пустой трёп.
+2
Тем не менее, бывают хорошие вещи, а бывает гавно.
0
Собсна, вещь изначально изготавливается для решения каких-либо задач.
0
Гавно тоже — вещь неплохая — это отличное удобрение :)
И со своей задачей прекрасно справляется.
+1
(можешь что угодно говорить, но синоним надёжности — простота).
Я бы так не сказал. Для повышения надежности весьма часто систему усложняют, добавляя резервирование и системы защиты.
И уж чем-чем, а надежностью в сишных функциях с переменным числом аргументов и не пахнет. Read/Write, по крайней мере, типобезопасны. Хотя это и не функции, а элементы языка.
0
Когда язык противоречит сам себе — это НЁХ. Пусть и задокументированная.
А в чем он себе противоречит? Read/Write — это операторы, а не функции. Аналогично и в этом бейсике, serout — оператор и имеет стандартный для бейсиковских операторов синтаксис.
То, что ресурс освобождает именно тот, кто выделяет (место в стеке) — полностью логично и оправданно. В данном случае, руки из жопы растут у того, кто делает иначе.
То-то иначе делают практически все соглашения о вызовах, кроме cdecl. На самом деле сделано это именно для поддержки функций с переменным числом аргументов, которые в С еще как есть. Именно поэтому, во первых, последним в стек запихивается первый аргумент (в нем информация о том, сколько всего аргументов, а значит, он должен быть на известном месте), а стек чистится вызывающей стороной (вызываемая не знает, сколко аргументов ей передано, а значит и сколько чистить).
0
Read/Write — это операторы, а не функции.
Если оно выглядит как функция, плавает как функция и крякает как функция, то это функция. Оператор — это элементарное действие, которое уже не имеет смысл делить на более простые. Запись в поток явно сюда отнести нельзя.
То-то иначе делают практически все соглашения о вызовах, кроме cdecl.
То-то и ВНЕЗАПНО и обнаруживаются ограничения, наподобие положить в стек произвольное число аргументов.
Авторы Си сделали человеческий формат вызова, и ограничения исчезли.
0
Если оно выглядит как функция, плавает как функция и крякает как функция, то это функция. Оператор — это элементарное действие, которое уже не имеет смысл делить на более простые. Запись в поток явно сюда отнести нельзя.
А вот это уже на усмотрение автора языка. Да и совершенно не обязательно элементарное. В математике иные операторы в такое разворачиваются, что хоть стой, хоть падай. Так что «элементарность» в определение оператора не входит.
Можно также вспомнить и то, что «элементарный» оператор деления a / 2.0 на AVR развернтся в несколько далеко не маленьких функций.
То-то и ВНЕЗАПНО и обнаруживаются ограничения, наподобие положить в стек произвольное число аргументов.
Авторы Си сделали человеческий формат вызова, и ограничения исчезли.
Формат этот имеет и плюсы, и минусы по сравнению с альтернативами. Авторы С его выбрали за то, что он позволяет делать функции с переменным числом аргументов, хотя во всех остальных отношениях cdecl скорее противоречит основным идеям С. Называть его «единственно человеческим» — это уже С-фанатизм.
0
А для начинающего эта строчка ничем не отличается от PRINT «Hello, world» или «serout B.7,N2400,(b1)».
Отличается тем, что со временем он разберётся.
0
> Чему оно учит?

Основам проектирования программ, организации связи мира вычислений и реальности.

> Serial.write?

Чувствуется обида на высокий уровень абстракции. Сломали мозг ассемблером?

> шилд в разъём

Концепция шилдов едва жива, большинство проектов их не используют.
0
Подпишусь под каждым словом. Ардуино- больше программистская забава, чем средство радиолюбителя.
0
А чем же это плохо? Программисты что, не люди, не имеют права поразвлекаться с железкой? :)
+1
… я с вами полностью согласен, но они именно акцентируют что платформа предназначена для школьников, которые и программировать толком не умеют не говоря уже об электронике
0
я видел упоминание об этой херне только в протеусе
чтобы кто-то ее использовал — не слышал

а софт для схем вроде перепиленый опенсорц, забыл как его там
меня не впечатлил, судя по скриншотам
0
Да и живем мы в 21-ом веке… Покажите мне программиста на бэйсике!!!
0
Пусть расцветают сто цветов...
0
  • avatar
  • mzw
  • 30 ноября 2011, 10:09
Первое правило we.easyelectronics.ru гласит: любое упоминание любой продающейся дешевой отладочной платки приводит к срачу про ардуйню :)
0
  • avatar
  • ACE
  • 30 ноября 2011, 10:41
А еще есть Basic Stamp и over 9000 аналогичных, но менее популярных платформ.
0
… да даже пройдя по тамашним ссылкам можно найти еще пару платформ. Меня просто заинтересовала фраза
hundreds of thousands of hobbyists
0
Посмотрел поподробнее. Всё-таки, если по софту и схоже, то железо совсем не похоже на ардуино. Ардуино — голая плата, зато стандартизированной конфигурации, что позволяет создавать шилды. Тут же, даже на самой дешевой отладке AXE049 (10 фунтов, около 500р) стоит семисегментник, сборка дарлингтона и пара кнопок. Но дальнейшее расширение — только паяльником. Есть и более дорогой набор, где что-то можно собрать из кубиков без пайки, собирающийся винтиками. Но он уже под 2000р без налогов стоит, что, я думаю, сильно помешает его популярности. Хотя это вполне прикольный набор для изучения DS18B20, инфракрасных приемников/передатчиков и тому подобного. А вообще, все эти конструкторы нацелены, скорее, на роботостроение. Думаю, только в этой среде и смогут стать популярными, не больше.
0
  • avatar
  • ACE
  • 30 ноября 2011, 11:04
Почему они выбрали BASIC – загадка. Зачем реанимировать трупик (при всем моем уважении к покойному)? Тем более, что это уже не совсем BASIC, а «смесь ежа и ужа». Вот пример из их доки:


EEPROM 0,(“Hello World”) ; save values in EEPROM
main:
 for b0 = 0 to 10 ; start a loop
   read b0,b1 ; read value from EEPROM
   serout B.7,N2400,(b1) ; transmit to serial LCD module
 next b0 ; next characte
0
… интересна их аргументация
PICAXE BASIC is much simpler to learn (and to 'debug') than traditional microcontroller languages such as assembler code or 'C'. The BASIC programming software is completely free, and also includes a powerful on-screen simulation for testing your program.
… хотя наверное это только маркетинг, отличительная особенность
0
Ничего удивительного. Бейсик изначально проектировался как язык для начинающих и неспециалистов (собсна он так и расшифровывается). Да и не такой уж это трупик, на том же VB не так мало программистов, да и всякие PureBasic'и свои сообщества имеют. А в мире любительских игр так и вовсе игрушки на основанных на бейсике «конструкторах» куда как чаще доходят до успешного релиза.
Хотя я, разумеется, куда больше одобрил бы паскаль. Хотя оригинальный паскаль не особо пригоден для применения, а дельфи и иже с ним — те еще монстры.
Вот пример из их доки:
Чем не бейсик? Разве что номера строк выкинуты и метки добавлены.
0
По синтаксису видно, что в основе лежит BASIC, но они очень сально расширили синтаксис. Например, работа с указателем и постинкремент указателя выглядит так (пример из доки):


ptr = 1 ‘ reset scratchpad pointer to 1
serrxd @ptrinc,@ptrinc,@ptrinc,@ptrinc,@ptr ‘ serin 5 bytes to scratchpad addresses 1-5


Похоже на BASIC?
0
Ну, учитывая, что указателей в бейсике не было…
А так бейсик вообще расширяют все, кому не лень. Мне чуть более интересно, что у него в парадигме? Есть, например, хотя бы средства структурного программирования?
0
Оу майн гад, что это?
0
… а кто нибудь заглядывал в смешные сцены
… trans-sister, suspect package, negative feedback,… :)
0
Ага! Картинки зачетные. Галлерея только кривая и неудобная.
0
для справки (high school students), high school это высшая школа, то есть ВУЗ по нашему, именно для студентов, а не для старшеклассников.
0
Почему все на перебой твердят, что ардуине «свой язык», «почти С»? Хотя там вполне обычный С++ и внутрях у ней неонка лежит самый обычный WinAVR-20081205 в качестве компилятора — я не поленился скачал посмотрел. Всесь этот «свой язык» — просто обычная либа, причем с исходниками. Открываем тот-же Serial и видим обычный С++ класс:
class HardwareSerial : public Stream
{
  private:
    ring_buffer *_rx_buffer;
    volatile uint8_t *_ubrrh;
    volatile uint8_t *_ubrrl;
    volatile uint8_t *_ucsra;
    volatile uint8_t *_ucsrb;
    volatile uint8_t *_udr;
 ...
  public:
    HardwareSerial(ring_buffer *rx_buffer,
      volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
      volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
      volatile uint8_t *udr,
      uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x);
    void begin(long);
 ...
    virtual void write(uint8_t);
};

Так-же видим кольцевой буфер на прием по прерываниям и тупую предачу с ожиданием флага готовности.
Дизайн и реализация довольно убогие, но тем не менее оно работает.
+1
Вы правы. Просто сами создатели называют этот язык «Arduino programming language»
Вот цитата с оф. сайта « The microcontroller on the board is programmed using the Arduino programming language (based on Wiring) …». Наверное это многих сбивает с току. Хотя сами создатели честно признаються: «The Arduino language is based on C/C++. It links against AVR Libc and allows the use of any of its functions; »
0
Просто они, как и авторы процессинга, с какого-то перепугу обозвали языком свое творение, являющееся на самом деле фреймворком.
0
… может кому интересно, в последнем выпуске журнала РадиоЛоцман есть статьюха про то как создавали Ардуино
0
PICAXE существует давно, и куда он дошёл за это время?
За Ардуино огромное сообщество и куча проектов, ведь платформа свободна по софту и железу, а свободные проекты всегда имеют более высокие шансы собрать вокруг себя жизнеспособное сообщество.

«picaxe project» — 194`000
«arduino project» — 12`700`000

Причина провала проста — никому в 21-м веке для обучения не нужен проприетарный кал, когда есть то же самое, но лучше и свободное.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.