Ich weiß, dass diese Frage allgemein ist, aber ich konnte kein Tutorial oder eine gute Codierungsweise finden, um Arduino-Code zu konvertieren (ich meine den Code, den wir auf Arduino-Software schreiben und spielt für Arduino Uno oder Mega oder ...) auch wenn eine kleine Probe.
Gibt es ein Tutorial?
Ich möchte nur die Technik lernen, und ich weiß, dass es vom Projekt abhängt.
Arduino-Code ist , mehr oder weniger, C-Code.
Das Besondere an Arduino ist, dass der Code vorverarbeitet wird (zum Beispiel einfache Hooks durch die Funktionen setup
und loop
) und einen verwalteten Build- / Upload-Prozess hat, der sich um Board-Limits kümmert , beinhaltet, Bibliotheken, etc ...
Es ist sicherlich möglich, das gleiche Toolkit selbst zu verwenden, um den Code zu erstellen und auszuführen, so mache ich es. Arduino und GCC, das Kompilieren und Hochladen von Programmen mit nur Makefiles ist der nützlichste Link, den ich habe gefunden, die die Schritte umfasst, die Sie benötigen, um zu beginnen.
Wie gesagt, ich habe die Arduino-IDE verlassen und die avr-gcc
-Route selbst übernommen, denn wenn Sie die GNU-Tools kennen, können Sie viel mächtigere Dinge tun - wie die C ++ - Standardbibliotheken. Ich habe meine vector
s verpasst, was soll ich sagen. avr-libc ist in Bezug auf die volle C ++ Funktionalität ziemlich zurückgeblieben, was es schwierig macht, in STL , aber Andy Brown hat viel davon funktioniert .
Wirf diese Dinge zusammen und du hast eine ziemlich mächtige Entwicklungsumgebung.
(Edit: Ich habe den sehr nützlichen Link in Matts Antwort verpasst, als ich meine eigene Antwort geschrieben habe. Lassen Sie uns also sagen, dass das Folgende eine nicht technische Zusammenfassung des Links ist).
Matt antwortete richtig. Ich möchte zusätzliche Informationen hinzufügen.
Der Schlüssel zum Verständnis der Arduino-Programmierung ist im Verzeichnis Arduino-1.0\hardware\arduino\cores\arduino
Sie finden die Datei main.cpp
mit:
Machen Sie "setup ()" und "loop ()" (und sogar "serialEventRun () wenn Sie die Arduino-Dokumentation lesen) eine Klingel?: -)
Arduino verbirgt nur das.
Arduino verwendet die Sprache C ++. Natürlich können Sie C verwenden, wenn Sie Ihren Code selbst mit avr-gcc kompilieren, aber die Art, wie die Arduino-IDE konfiguriert ist, ist reines C ++.
Da Mikrocontroller jedoch nicht wirklich an die objektorientierte Entwicklung angepasst sind, fehlen einige Funktionen. Ich denke an die "neuen" und "löschenden" Operatoren. Sie sind nicht vorhanden. Daher sollten Sie die Verwendung des Heapspeichers bei der Entwicklung mit Arduino vermeiden. Aus diesem Grund sollten Sie vorsichtig sein, wenn Sie einige Standard-C ++ - Bibliotheken verwenden möchten. Sie sind möglicherweise nicht für die Mikrocontroller-Programmierung geeignet (zu viele Speicheroperationen).
Im Verzeichnis Arduino-1.0\hardware\arduino\cores\arduino
können Sie auch die Implementierung der Arduino-Bibliothek sehen. Es erlaubt zu beobachten, welche "Low-Level" Mikrocontroller-Funktionen (von avr-libc) existieren und wie Sie Ihre eigenen Bibliotheken und Tools implementieren können.
Da Sie übrigens wissen wollten, wie Sie Arduino-Code in C portieren können, ist avr-libc eine C-Bibliothek und keine C ++ - Bibliothek. So können Sie sehen, wie Arduino seinen C ++ - Code über C-Code wickelt.
Im Menü File/Preferences
können Sie "ausführliche Ausgabe anzeigen" aktivieren, um zu sehen, welche Parameter und Dateien zum Erstellen der endgültigen Arduino-Binärdatei verwendet werden (und wo sich das temporäre Buildverzeichnis befindet).
Schließlich müssen Sie auch wissen, dass auf Arduino-Boards ein Bootloader mit Ihrem Code eingebettet ist. Es vereinfacht die Bereitstellung von der Arduino-IDE auf das Arduino-Board. Das Arduino-Board enthält also mehr Code als den eigenen.
Es ist kein Konvertierungstutorial, aber eine sehr nette Zusammenfassung darüber, was hinter arduinos Hallo-Welt steckt: A TOUR OF THE ARDUINO INTERNALS: WIE FUNKTIONIERT HELLO WORLD TATSÄCHLICH?