C / C ++ではなくPythonを使用してArduinoをプログラミングする


36

私はC言語にあまり精通しておらず、Pythonを使用してArduinoをプログラミングできる方法があるかどうか疑問に思っていました。これは、スクリプトを自己デバッグできるようにするために、おそらく別のIDEを必要とします。


2
Arduinoのプログラミングにはいくつかの選択肢があり、そのうちの1つはBitLashであり、基本的なインタープリターがあります。インターネットを検索する場合、いくつかのオプションがありますが、C / C ++を学習することで最終的に成果が得られます。
ジッピー14

おかげで、私は実際にCで少し良くなりました。Pythonほど良くはありません。
JVarhol


ラズベリーPIはオプションですか?
ポール

回答:


26

Arduinoで直接実行するPythonスクリプトを取得するのは非常に困難です。理由は、インタープリター言語であるため、プレーンテキストスクリプトに加えて、オンボードのインタープリターが必要だからです。おそらく、それらすべてのための十分なメモリがなくなるでしょう。

あなたの最善の策は、おそらくPythonスクリプトをネイティブマシンコードにコンパイルする方法を見つけることです(これがC / C ++の仕組みです)。他のプラットフォームでそのようなことをするプロジェクトは周りにあると思いますが、(私の知る限り)Arduinoでそれを成功させるものはまだありません。

Stack Overflowで、この質問に関するさらに役立つ情報を見つけることができます。Arduino(Uno)にPythonコードを「コンパイル」する方法はありますか。


15

はい、Pythonを使用してArduinoをプログラムすることは(ある程度)可能です。Githubでのそのようなプロジェクトの1つが、Python Arduino Prototyping API v2です。デジタルI / OやアナログI / Oなどの非常に基本的な機能を提供します。

これは非常に単純なプロジェクトに使用できます。


*このプロジェクトは、シリアル接続を使用してボードを「プログラミング」するハックです。コマンドはシリアル接続を介してボード上で実行されているスケッチに渡され、Pythonコマンドが「実行」されます。


では、実際にコードを実行するには、ボードをコンピューターに接続する必要がありますか?
JVarhol

@JVarhol奇妙なことに、はい。
asheeshr

1
まあ、それはかなりくだらない。Raspberry Piを使用する方が簡単です。
JVarhol

8

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)

3

私はpyserialを使用して、arduinoのピンの制御に大成功を収めました。ワークステーション(ラップトップなど)はpythonスクリプトを実行し、それがリアルタイムでarduinoと通信します。

arduinoでスクリプトを直接実行することとはまったく同じではありませんが、arduinoで処理できると思っていたよりもかなり多くのことをしていました(音楽分析、REST APIのヒットなど)。


3

考慮すべきもう1つのオプションは、Arduino Yunです。ほとんどのArduinoが持っているAVRチップに加えて、Linuxを実行するMIPSチップも含まれています。Linuxなので、Pythonコードを簡単に実行でき、pure-pythonパッケージは簡単にインストールできます。

ただし、興味深い入出力機能はすべて、MIPSチップではなくAVRチップにあります。AutobahnやLininoIOなどのプロジェクトは、MIPSチップの指示の下でI / O操作を実行する特別なプログラムをAVRチップで実行することにより、この問題を解決します。


0

これは、Arduinoプログラミングおよび一般的な組み込みの世界における未解決の問題であることがわかっています。MicroPythonのような市場にはさまざまなソリューションがありますが、それらのほとんどは特定のボード専用であり、システムをリアルタイムに維持することはできません。私たちは解決策に取り組んでいます!VIPERは、Arduino DUEおよびリアルタイムオペレーティングシステム上で実行されるすべてのARM 32ビットアーキテクチャ用のPython仮想マシンです。これは、Arduino DUE、UDOO、Spark(すべてのボード)、および新しいSTヌクレオボードで実行可能なPythonスクリプトを開発できることを意味します。さらに、高いパフォーマンスが必要でCに精通している場合は、Pythonスクリプトで呼び出して管理できるVIPERのリアルタイムモジュールを開発できます。

あなたはここでhttp://bit.ly/kickviperで動作中のVIPERを見ることができます


これは未解決の問題ではありません。pythonは恐ろしいインデント言語です。
user2497

0

C(AVR)からセンサーがどのように機能するかを学ぶことはできますが、もっと時間がかかります。Arduino用のArduino IDEコードとPythonコードは、物事を単純にするためにCコード関数を使用します。PythonとArduino IDEは、Firmataを使用する場合、シリアル通信を使用し、自分でコーディングすると思います。


-1

はい。Pythonを使用してArduinoをプログラミングできます。pyfirmataをインポートするだけで、arduinoとPythonをインターフェースできます。


本当です。しかし、それはOPが求めているものではありません。
sempaiscuba

-8

Arduino IDEはC / C ++言語を使用していません。これは、Processing IDE から派生したもので、C / Javaに似た構文が非常に単純化されています。


9
Arduino IDEはC ++です。最小限の前処理(「#include <Arduino.h>」と定義した関数の宣言を追加)を実行し、通常のC ++コンパイラ(GNU g ++)を呼び出します。
エドガーボネット

Processingから派生したプログラミング言語ではなく、IDE自体です。
ピーターブルームフィールド

ArduinoにIDEを実装することを気にする人はほとんどいません。ポイントは、Arduinoで効率的に実行されるPythonを作成できることです。
ウォリック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.