Я не очень хорошо разбираюсь в языке Си, и мне было интересно, есть ли способ использовать Python для программирования Arduino. Это, скорее всего, потребует другой IDE, чтобы иметь возможность отлаживать сценарии самостоятельно.
Я не очень хорошо разбираюсь в языке Си, и мне было интересно, есть ли способ использовать Python для программирования Arduino. Это, скорее всего, потребует другой IDE, чтобы иметь возможность отлаживать сценарии самостоятельно.
Ответы:
Будет очень сложно получить любой скрипт Python, работающий непосредственно на Arduino. Причина в том, что это интерпретируемый язык, поэтому вам потребуется встроенный переводчик в дополнение к текстовому скрипту. Наверное, не хватит памяти для всего этого.
Лучше всего было бы найти способ скомпилировать скрипт Python для машинного кода (так работает C / C ++). Я полагаю, что есть проекты, позволяющие сделать что-то подобное для других платформ, но (насколько я знаю) нет ни одного, который бы успешно делал это для Arduino.
Вы можете найти более полезную информацию по этому вопросу в Stack Overflow: есть ли способ «скомпилировать» код Python в Arduino (Uno) .
Да, (несколько) возможно программировать Arduino, используя Python. Одним из таких проектов на Github является API прототипирования Python Arduino v2 . Он обеспечивает базовые функции, такие как цифровой ввод-вывод и аналоговый ввод-вывод.
Это может быть использовано для очень простых проектов.
* Этот проект - хакерская попытка "программирования" платы с использованием последовательного соединения. Он передает команды через последовательное соединение в набросок, запущенный на плате, который затем «выполняет» команду Python.
Есть проект, который выводит виртуальную машину Python на микроконтроллеры, в том числе Arduino Mega .
Вот цитата из Ardunio Mega README , которая дает представление о том, на что это может быть похоже (хотя я не проверял это!):
Ниже приведен пример сеанса с использованием ipm:
ipm> import avr, sys ipm> avr.ddrA(0xff) ipm> avr.portA(0) # Pins 22-29 all at 0 V ipm> avr.portA(0xa5) ipm> sys.heap() (2622, 7424)
Я использовал pyserial с большим успехом в управлении булавками на Arduino. Ваша рабочая станция (ноутбук и т. Д.) Запускает скрипт Python, который затем в реальном времени связывается с Arduino.
Это не совсем то же самое, что запускать скрипт прямо на Arduino, но я делал немного больше, чем я думал, что Arduino может справиться (некоторый анализ музыки, запуск API REST и т. Д.).
Другой вариант для рассмотрения - Arduino Yun . В дополнение к чипу AVR, который есть у большинства Arduinos, он также включает в себя чип MIPS под управлением Linux. Поскольку это Linux, вы можете легко запускать код Python, и любой пакет с чистым Python может быть легко установлен.
Однако все интересные возможности ввода / вывода находятся на микросхеме AVR, а не на микросхеме MIPS. Такие проекты, как Autobahn и LininoIO, решают эту проблему, выполняя специальную программу на микросхеме AVR, которая выполняет операции ввода-вывода по инструкции от микросхемы MIPS.
Мы знаем, что это открытая проблема в программировании Arduino и во встроенном мире в целом. На рынке доступны различные решения, такие как MicroPython, но большинство из них предназначены для конкретных плат и не позволяют поддерживать систему в режиме реального времени. Мы работаем над решением! VIPER - это виртуальная машина Python для Arduino DUE и всех 32-битных архитектур ARM, которая работает поверх операционной системы реального времени. Это означает, что вы можете разрабатывать скрипты Python, которые могут быть реализованы Arduino DUE, UDOO, Spark (все платы), а также на новых платах ядра ST. Более того, если вам нужна высокая производительность и вы владеете C, вы можете разрабатывать модули VIPER в реальном времени, которые могут вызываться и управляться скриптами Python.
Вы можете увидеть VIPER в действии здесь http://bit.ly/kickviper
Вы можете узнать из C (AVR), как работают датчики, но это требует гораздо больше времени. Arduino IDE Code и Python Code для Arduino используют функции C Code для упрощения работы. Python и Arduino IDE, если используют Firmata, они используют последовательную связь, и вы думаете, что кодируете себя.
Да. Python можно использовать для программирования Arduino, просто импортировав pyfirmata, который может связывать arduino с Python.
Я боюсь, что Arduino IDE не использует язык C / C ++. Он получен из Processing IDE и имеет довольно упрощенный синтаксис, подобный C / Java.