Cubetto — отличный пример робота на базе контроллера Arduino, для обучения программированию.
Программирование робота осуществляется без компьютера, а проходит в игровой форме — при помощи специальных фишек, которые задают направление движения.
Программирование Arduino даёт не только огромный простор для фантазии и возможностей, но, как и любой фреймворк, одновременно навязывает свой стиль и ограничивает возможности.
Поэтому, если чувствуется, что Arduino становится тесноват — можно не только перейти на 32-битные контроллеры (например, STM32), но и попробовать более низкоуровневое программирование контроллеров.
Уходя ближе «к железу» — программировать придётся на более близком к железу уровне — и если это не ассемблер, то уж язык программирования Си — точно.
Пример подобного программирования уже приводился в статье Arduino/CraftDuino и WinAVR — программируем на чистом С.
У такого стандартного программирования микроконтроллеров есть существенное преимущество перед использованием Arduino-вских скетчей.
Однако, за низкоуровневый полный контроль и возможность использовать все ресурсы микроконтроллера, приходится расплачиваться долгим и внимательным изучением документации (datasheet-а) на микроконтроллер.
Т.е., если у вас ещё не было опыта работы с конкретным микроконтроллером — то вместо быстренького набрасывания скетча для решения своей задачи — вам придётся потратить дополнительное время на изучение мат. части.
Разумеется, не всегда это может быть оправдано и если задачу нужно и можно быстро решить при помощи Arduino — то почему бы и нет?
Однако, если решение задачи на Arduino невозможно, то придётся потратить время на получение ценных опыта и знаний, которые помогут открыть все возможности, которые под силу микроконтроллеру.
Для примера, возьмём меленький, простой и дешёвый контроллер ATtiny13.
Здравствуйте!
Это продолжение серии статей о том, как мы создавали своего первого робота. В данной части мы раскроем подходы к управлению роботом для задачи слежения за линией при использовании различных алгоритмов, и другие вопросы программирования. Часть 1 — О проекте
Часть 2 — Описание программной части робота
И так, я уже закончил в предыдущем топике, собирать электронную составляющую проекта дистанционного управления поливом, теперь поговорим о моём любимом программировании, надеюсь, вам понравится, дорогие мои читатели. Добро пожаловать в матрицу. Ну что, вдохнём в холодную электронику не много горячей логики и функциональности.
Часть 4. Либретто.
Начнём исследовать код от простого к сложному. Для начала рассмотрим работу «внешнего» модуля.
Как я уже говорил, «внешнему» модулю отводится работа по получению и обработки команды от «домашнего» модуля. Каждая команда состоит из двух частей: её адреса(номера пина на Ардуино, который замыкает или размыкает определённое реле), и непосредственно команды на этот пин. На данный момент обрабатываются пока лишь три команды: «0» — выключить реле, «1» — включить реле, «2» — проверить состояние реле. Т.е. если «внешний модуль получил команду например „81“ — это означает то, что мы надлежаще просим подать ток на пин номер 8 контролера Ардуино, что собственно и делаем после анализа поступившей команды.
Gerard Holzmann из Лаборатории реактивного движения (Jet Propulsion Laboratory) NASA, на конференции HotDep 2012, прочёл лекцию о том, как писался код для марсохода Curiosity.
Какие методики, стандарты кодирования и инструменты разработки применялись программистами NASA, для написания кода.
Не так давно здесь уже была заметка про визуальное программирование Arduino, но у этой заметки уже есть продолжение!
Встречайте проект Scratch для Arduino (в оригинале: Scratch For Arduino или сокращённо — S4A) — это модификация Scratch, которая предоставляет возможность простого визуального программирования контроллера Arduino, а так же содержит новые блоки для управления датчиками и исполнительными механизмами, подключаемыми к Arduino.
Используя площадку kickstarter.com команда программистов собрала деньги на разработку
визуального языка программирования для Arduino, основанного на языке Scratch.
Здесь упоминалось, что Arduino/CraftDuino/Freeduino можно программировать не только на Wiring-е, но и на других языках программирования.
Попробуем разобраться как это можно сделать — написать программу на обычном С/C++.
Для этого воспользуемся компилятором WinAVR.
WinAVR — это интегрированная среда разработки; она включает мощные компиляторы Си и ассемблера, программатор AVRDUDE, отладчик, симулятор и множество других вспомогательных программ и утилит.
Скачать WinAVR можно на странице проекта: http://sourceforge.net/projects/winavr/
однако, в комплекте Arduino IDE уже идёт WinAVR (\hardware\tools\avr\), поэтому можно воспользоваться им.