Ich bin nicht sehr gut mit der C-Sprache vertraut und habe mich gefragt, ob es eine Möglichkeit gibt, mit Python ein Arduino zu programmieren. Dies würde höchstwahrscheinlich eine andere IDE erfordern, um die Skripte selbst debuggen zu können.
Ich bin nicht sehr gut mit der C-Sprache vertraut und habe mich gefragt, ob es eine Möglichkeit gibt, mit Python ein Arduino zu programmieren. Dies würde höchstwahrscheinlich eine andere IDE erfordern, um die Skripte selbst debuggen zu können.
Antworten:
Es wird extrem schwierig sein, Python-Skripte direkt auf dem Arduino zum Laufen zu bringen. Der Grund dafür ist, dass es sich um eine interpretierte Sprache handelt, sodass Sie zusätzlich zum Nur-Text-Skript den Dolmetscher an Bord benötigen. Es wird wahrscheinlich nicht genug Speicher für all das geben.
Ihre beste Wahl wäre wahrscheinlich, einen Weg zu finden, um ein Python-Skript in nativen Maschinencode zu kompilieren (so funktioniert C / C ++). Ich glaube, es gibt Projekte, die so etwas für andere Plattformen tun, aber (soweit ich weiß) keine, die es für Arduino noch erfolgreich machen.
Sie könnten einige weitere nützliche Informationen über diese Frage auf Stack - Überlauf finden: Gibt es eine Möglichkeit, „Kompilierung“ Python - Code auf einem Arduino (Uno) .
Ja, es ist (etwas) möglich, das Arduino mit Python zu programmieren. Ein solches Projekt auf Github ist die Python Arduino Prototyping API v2 . Es bietet sehr grundlegende Funktionen wie digitale E / A und analoge E / A.
Dies kann für sehr einfache Projekte verwendet werden.
* Dieses Projekt ist ein bisschen ein Hack beim "Programmieren" der Karte über die serielle Verbindung. Die Befehle werden über die serielle Verbindung an eine Skizze weitergeleitet, die auf der Platine ausgeführt wird und dann den Python-Befehl "ausführt".
Es gibt ein Projekt, das eine virtuelle Python-Maschine auf Mikrocontroller bringt , einschließlich des Arduino Mega .
Hier ist ein Zitat aus der Ardunio Mega README , das ein Gefühl dafür gibt, wie das sein könnte (obwohl ich das nicht getestet habe!):
Das Folgende ist eine Beispielsitzung mit 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)
Ich habe Pyserial mit großem Erfolg bei der Steuerung der Stifte auf dem Arduino verwendet. Auf Ihrer Workstation (Laptop usw.) wird ein Python-Skript ausgeführt, das dann in Echtzeit mit dem Arduino kommuniziert.
Es ist nicht ganz das gleiche wie das Ausführen des Skripts direkt auf dem Arduino, aber ich habe ziemlich viel mehr getan, als ich dachte, dass das Arduino damit umgehen kann (einige Musikanalysen, Schlagen einer REST-API usw.).
Eine weitere Option ist das Arduino Yun . Zusätzlich zum AVR-Chip, den die meisten Arduinos haben, enthält er auch einen MIPS-Chip, auf dem Linux ausgeführt wird. Da es sich um Linux handelt, können Sie problemlos Python-Code ausführen und jedes reine Python-Paket kann problemlos installiert werden.
Die gesamte interessante Eingabe- / Ausgabefunktion befindet sich jedoch auf dem AVR-Chip, nicht auf dem MIPS-Chip. Projekte wie Autobahn und LininoIO lösen dieses Problem, indem sie ein spezielles Programm auf dem AVR-Chip ausführen , das E / A-Operationen unter Anweisung des MIPS-Chips ausführt.
Wir wissen, dass dies ein offenes Thema in der Arduino-Programmierung und in der Embedded-Welt im Allgemeinen ist. Auf dem Markt sind verschiedene Lösungen wie MicroPython erhältlich, die meisten sind jedoch für bestimmte Boards vorgesehen und ermöglichen nicht, das System in Echtzeit zu halten. Wir arbeiten an einer Lösung! VIPER ist eine Python Virtual Machine für Arduino DUE und alle ARM 32-Bit-Architekturen, die auf einem Echtzeit-Betriebssystem ausgeführt werden. Dies bedeutet, dass Sie Python-Skripte entwickeln können, die von Arduino DUE, UDOO, Spark (alle Boards) und auch auf den neuen ST-Nucleo-Boards ausgeführt werden können. Darüber hinaus können Sie Echtzeitmodule für VIPER entwickeln, die von den Python-Skripten aufgerufen und verwaltet werden können, wenn Sie hohe Leistungen benötigen und mit C vertraut sind.
Sie können VIPER hier in Aktion sehen http://bit.ly/kickviper
Sie könnten von C (AVR) lernen, wie Sensoren funktionieren, aber es braucht viel mehr Zeit. Arduino IDE Code und Python Code für Arduino verwenden C-Code-Funktionen, um die Dinge zu vereinfachen. Python- und Arduino-IDE: Wenn sie Firmata verwenden, verwenden sie serielle Kommunikation und Sie denken, dass Sie sich selbst codieren.
Ja. Python kann verwendet werden, um ein Arduino zu programmieren, indem einfach Pyfirmata importiert wird, die das Arduino mit Python verbinden können.
Ich fürchte, Arduino IDE verwendet keine C / C ++ - Sprache. Es ist von Processing IDE abgeleitet und hat eine stark vereinfachte C / Java-ähnliche Syntax.