9

この質問が一般的なものであることは知っていますが、チュートリアルや Arduino コードを変換するための適切なコーディング方法を見つけることができませんでした (つまり、Arduino ソフトウェアで書いているコードであり、Arduino UnoMegaや . .. ) たとえ小さなサンプルであっても。

チュートリアルはありますか?

テクニックを学びたいだけで、それがプロジェクトに依存することはわかっています。

4

3 に答える 3

13

Arduinoコード、多かれ少なかれ、Cコードです。

Arduinoで発生するユニークな点は、コードが前処理され(たとえば、関数setuploop関数を確立することで単純なフックを提供する)、ボードの制限、インクルード、ライブラリなどを処理する管理されたビルド/アップロードプロセスがあることです。

同じツールキットを自分で使用してコードをビルドおよび実行することは確かに可能です。それが私が行う方法です。ArduinoとGCC、makefileのみを使用したプログラムのコンパイルとアップロードは、開始するために必要な手順をカバーする最も便利なリンクです。

私が言ったように、私はArduino IDEを離れて自分でルートを取りましたavr-gcc。なぜなら、GNUツールを知っていれば、C ++標準ライブラリを使用するなど、はるかに強力なことができるからです。私は自分vectorのを逃しました、私は何を言うことができますか。avr-libcは、完全なC ++機能に関してはかなり遅れており、STLに詰め込むのが難しくなっていますが、AndyBrownはその多くを機能させています。

それらを一緒に投げると、非常に強力な開発環境が得られます。

于 2012-04-24T23:45:05.850 に答える
9

(編集:自分の回答を書いているときに、マットの回答にある非常に役立つリンクを見逃していました。したがって、以下はリンクの非技術的な要約であるとしましょう)。

マットは正しいと答えた。追加情報を追加したいと思います。

Arduinoプログラミングを理解する鍵はディレクトリにありますArduino-1.0\hardware\arduino\cores\arduino

main.cpp以下を含むファイルが見つかります。

#include <Arduino.h>

int main(void)
{
    init();

    #if defined(USBCON)
        USB.attach();
    #endif

    setup();

    for (;;) {
        loop();
        if (serialEventRun) serialEventRun();
    }

    return 0;
}

"setup()" と "loop()" (そして Arduino のドキュメントを読めば "serialEventRun()" でさえも) ベルを鳴らしますか? :-)

Arduinoはそれだけを隠しています。

Arduino は C++ 言語を使用します。もちろん、コードを avr-gcc で自分でコンパイルする場合は C を使用できますが、Arduino IDE の構成方法は純粋な C++ です。

ただし、マイクロコントローラーはオブジェクト指向開発にあまり適していないため、いくつかの機能が欠けています。「新規」および「削除」演算子について考えます。それらは存在しないため、Arduino で開発する場合は、そのままではヒープの使用を避ける必要があります。そのため、標準の C++ ライブラリを使用する場合は注意が必要です。それらは、マイクロコントローラのプログラミングに適合していない可能性があります (メモリ操作が多すぎる)。

ディレクトリにはArduino-1.0\hardware\arduino\cores\arduino、Arduino ライブラリの実装も表示されます。どの「低レベル」のマイクロコントローラー機能 (avr-libc から) が存在するか、および独自のライブラリーとツールをどのように実装できるかを監視できます。

ところで、Arduino コードを C に移植する方法を知りたかったので、avr-libc は C ライブラリであり、C++ ライブラリではありません。したがって、Arduino が C コード上に C++ コードをラップする方法を見ることができます。

メニューで、File/Preferences「詳細な出力を見る」をチェックして、最終的な Arduino バイナリをビルドするために使用されるパラメーターとファイル (および一時ビルド ディレクトリの場所) を確認できます。

最後に、Arduino ボードにはコードにブートローダーが組み込まれていることも知っておく必要があります。Arduino IDE から Arduino ボードへの展開が容易になります。したがって、Arduino ボードには、実際には自分のコードよりも多くのコードが含まれています。

于 2012-04-25T06:48:56.307 に答える
1

これは変換チュートリアルではありませんが、arduino の hello world の背後にあるものについての非常に優れた記事です:
Arduino 内部のツアー。hello world は実際にどのように機能しますか?

于 2012-05-25T17:57:20.983 に答える