私はC言語にあまり精通しておらず、Pythonを使用してArduinoをプログラミングできる方法があるかどうか疑問に思っていました。これは、スクリプトを自己デバッグできるようにするために、おそらく別のIDEを必要とします。
私はC言語にあまり精通しておらず、Pythonを使用してArduinoをプログラミングできる方法があるかどうか疑問に思っていました。これは、スクリプトを自己デバッグできるようにするために、おそらく別のIDEを必要とします。
回答:
Arduinoで直接実行するPythonスクリプトを取得するのは非常に困難です。理由は、インタープリター言語であるため、プレーンテキストスクリプトに加えて、オンボードのインタープリターが必要だからです。おそらく、それらすべてのための十分なメモリがなくなるでしょう。
あなたの最善の策は、おそらくPythonスクリプトをネイティブマシンコードにコンパイルする方法を見つけることです(これがC / C ++の仕組みです)。他のプラットフォームでそのようなことをするプロジェクトは周りにあると思いますが、(私の知る限り)Arduinoでそれを成功させるものはまだありません。
Stack Overflowで、この質問に関するさらに役立つ情報を見つけることができます。Arduino(Uno)にPythonコードを「コンパイル」する方法はありますか。
はい、Pythonを使用してArduinoをプログラムすることは(ある程度)可能です。Githubでのそのようなプロジェクトの1つが、Python Arduino Prototyping API v2です。デジタルI / OやアナログI / Oなどの非常に基本的な機能を提供します。
これは非常に単純なプロジェクトに使用できます。
*このプロジェクトは、シリアル接続を使用してボードを「プログラミング」するハックです。コマンドはシリアル接続を介してボード上で実行されているスケッチに渡され、Pythonコマンドが「実行」されます。
Arduino MegaなどのマイクロコントローラーにPython仮想マシンを導入するプロジェクトがあります。
以下は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)
考慮すべきもう1つのオプションは、Arduino Yunです。ほとんどのArduinoが持っているAVRチップに加えて、Linuxを実行するMIPSチップも含まれています。Linuxなので、Pythonコードを簡単に実行でき、pure-pythonパッケージは簡単にインストールできます。
ただし、興味深い入出力機能はすべて、MIPSチップではなくAVRチップにあります。AutobahnやLininoIOなどのプロジェクトは、MIPSチップの指示の下でI / O操作を実行する特別なプログラムをAVRチップで実行することにより、この問題を解決します。
これは、Arduinoプログラミングおよび一般的な組み込みの世界における未解決の問題であることがわかっています。MicroPythonのような市場にはさまざまなソリューションがありますが、それらのほとんどは特定のボード専用であり、システムをリアルタイムに維持することはできません。私たちは解決策に取り組んでいます!VIPERは、Arduino DUEおよびリアルタイムオペレーティングシステム上で実行されるすべてのARM 32ビットアーキテクチャ用のPython仮想マシンです。これは、Arduino DUE、UDOO、Spark(すべてのボード)、および新しいSTヌクレオボードで実行可能なPythonスクリプトを開発できることを意味します。さらに、高いパフォーマンスが必要でCに精通している場合は、Pythonスクリプトで呼び出して管理できるVIPERのリアルタイムモジュールを開発できます。
あなたはここでhttp://bit.ly/kickviperで動作中のVIPERを見ることができます
はい。Pythonを使用してArduinoをプログラミングできます。pyfirmataをインポートするだけで、arduinoとPythonをインターフェースできます。
Arduino IDEはC / C ++言語を使用していません。これは、Processing IDE から派生したもので、C / Javaに似た構文が非常に単純化されています。