Поголовно все призеры состязаний "Hello Robot!" на РОБОФЕСТ-2013 получали в качестве награды конструкторы на базе платформы Arduino от компании "Амперка". Призы были не совсем по возрасту - не вина создателей конструктора, а скорее организаторов, но в этой заметке речь не об этом. |
Трудности могут начаться, особенно у школьников младшего возраста, на этапе программирования. Стандартная среда "Arduino IDE" предполагает определенные знания в языке С, что, согласитесь, для новичков довольно нетривиальная задача.
Поэтому следующее нормальное желание возникающее при знакомстве с миром Arduino - найти графическую среду программирования более или менее понятную, тем, кто только начинает знакомиться с миром алгоритмов. Одна из альтернатив - проект S4A (Scratch 4 Arduino) - программное обеспечение, базирующаяся на популярной образовательной среде Scratch и специально измененная для простоты работы с платами семейства Arduino.
У среды есть несколько нюансов, о которых лучше знать заранее:
- Нельзя создавать автономные устройства - они будут работать только при подсоединенном компьютере, и только если запущен соответствующий скрипт в S4A.
- По сути скрипт опрашивает цифровые и аналоговые входы платы в реальном времени и посылает соответствующие сигналы в порты выхода, поэтому на самой Arduino должно быть запущенно соответствующее программное обеспечение - прокси, которое бы позволяло выполнять эти задачи. Его можно скачать на сайте проекта в виде исходного кода (на сайте оно называется Firmware), после чего его нужно скомпилировать и загрузить на плату с помощью "Arduino IDE". Единожды загруженное, оно будет запускаться автоматически при каждом включении платы.
- S4A подразумевает, что только определенные порты будут выполнять определенные задачи. Нет механизма , что бы переназначить задачи для портов, и поэтому это назначение нужно учитывать заранее при сборке электронной схемы.
А именно:
- порты 10, 11, 13 - работают только на выход (запись) для цифрового сигнала
- порты 2 и 3 - только на вход (чтение) для цифровых датчиков
- аналоговые порты с 0 по 5 - для чтения аналогового сигнала через АЦП (аналогово-цифровой преобразователь)
- порты 5, 6 и 9 - на запись аналогового сигнала через ШИМ (широтно-импульсную модуляцию)
- порты 4, 7, 8 и 12 зарезервированы для управления моторами.
- Довольно низкая скорость работы с портам - 35-40 раз в секунду.
Может возникнуть вопрос, а стоит ли на блоге о LEGO робототехнике так много писать об Arduino? Конечно, да! Существует несколько способов объединить эти два направления:
- Подключать NXT датчики и моторы к плате Arduino через мезонинные платы, например, таких производителей как Mindsensors и Bricktronics
- Подключать Arduino плату к NXT блоку по I2C шине (например, так), что позволит собирать свои собственные датчики на основе Arduino, которые будут и дешевле и интереснее, тех, что можно найти в продаже.
Есть еще возможность работать с платой ARDUINO с помощью ROBOTC.
ОтветитьУдалитьИз плюсов - возможность отладки программы и ее пошагового исполнения, использование стандартных команд ROBOTC (опрос датчиков, управление моторами), наличие примеров.
Из минусов - небольшие различия в командах между ROBOTC и Си (который используется в скетчах), что требует некоторой модификации программы.
Невозможность работы с типами данными long и float на платах ARDUINO UNO
Спасибо, Александр! Полезная информация! Идея статьи была как раз в том, что текстовые языки не очень-то годятся для младших школьников.
УдалитьК тому же RobotC - платный. Об этом все время забывают во время сравнения его с другими средами.
Еще совсем недавно был бесплатный для ARDUINO, а теперь да, к сожалению платный
УдалитьАлександр, наконец-то я собрался сказать вам спасибо за этот замечательный материал и интересный опыт со S4A! Еще есть интересный проект modk.it, который, к сожалению, все никак не выйдет из альфа-версии. Modk.it тоже использует графическую среду программирования, но при этом позволяет увидеть, как выглядит то, что вы создали, в виде кода на языке Си.
ОтветитьУдалитьА вот информация про возможности объединения Лего и Ардуино прямо-таки просится в отдельную статью. :)