Arduinoにはどのような特別なプログラミング言語が使用されていますか?

「配線に基づいた」いわゆる「Arduinoプログラミング言語」で状況を明確にしたいと思います。 同様の単語の組み合わせは、Arduinoページでよく見られます。 彼らは公式ウェブサイトでそう言っている:「...はArduinoプログラミング言語(Wiringに基づいて)を使用してプログラムされています。」 実際、特定のプログラミング言語はありません。実際、プログラムはC / C ++で記述されていますが、広く知られているavr-gccを使用してコンパイルおよびコンパイルされています。

すべての機能は、いくつかの関数(pinModeなど)とオブジェクト(Serialなど)を含むライブラリのセットがあるという事実に基づいており、プログラムをコンパイルすると、開発環境は一時的な.cppファイルを作成します。そして、結果はコンパイラーに送られ、必要なパラメーターとともにリンカーに送られます。

たとえば、次のように、任意の名前の小さなプロジェクトを作成し、そこに最小限のコードを追加できます。

 --- Test.pde ---
 void setup(){
   pinMode(13、出力);
 }

ボイドループ()
 {
   digitalWrite(13、1);
  遅延(500);
   digitalWrite(13、0);
  遅延(500);
 }
 ---


結果のプログラムをArduinoに「縫い付ける」と、プロジェクトフォルダーに「アプレット」フォルダーが表示され、そこに多数のファイルが作成されます。 基本的に、これらはコンパイル済みの標準関数と、さまざまな形式(ELF、ROM、HEX)の既製のコンパイル済みプログラムを含むオブジェクトオブジェクトです。 最も興味深いのは.cppファイルです。これが、コードが次のようになったものです。

 --- Test.cpp ---
 #include "WProgram.h" //ここにすべてのArduino f-th、定数などの定義があります。
 void setup();  // setup()およびloop()関数を宣言します
無効ループ();  // Arduino用のプログラムであり、記述されています
 void setup(){// ---しかし、この場所からソースコードが行きました---
   pinMode(13、出力);
 }

ボイドループ()
 {
   digitalWrite(13、1);
  遅延(500);
   digitalWrite(13、0);
  遅延(500);
 } //ここでコードは終了し、再び「appendages」を送信します

 int main(void)//ここでは、c / c ++で慣習的であるように、main()
 {
	 init();  //独自の初期化を呼び出します

	セットアップ();  //次に、セットアップ()が呼び出されます
    
	 for(;;)//そして、無限ループではループ()が呼び出されます
		ループ();
        
	 0を返します。  //ただし、ここには到達しません
 }
 ---


実際、Arduino環境は、ソースコードのいくつかの他のマイナーな変換を実行します。たとえば、非ラテン文字を装飾し、すべての「#include」を先頭に追加します。




All Articles