CLionでのArduinoプログラミング

この記事では、Arduino向けの開発の簡単な方法について、CLion www.jetbrains.com/clionで説明します。

CLionは、JetBrainsのC / C ++用の新しいIDEです。 スタイルと動作は、IDEA(IDE for Java)に非常に似ています。 「チップ」を使用してIDEAでJavaで記述しているため、これはIDEです。これらすべての「チップ」を転送し、Arduinoの開発にユースケース開発を使用したいと思います。



一般に、Arduino用のさまざまなIDEを試しました-Arduino IDE、Arduino用プラグイン付きEclipse、AVR用プラグイン付きEclipse、Atmel Studio、VisualMicroプラグイン付きVisual StudioおよびReSharper C ++。 最近、Arduino用のプラグインを使ってEclipseに立ち寄った。 それでも、IDEAの使い慣れた機能の一部では不十分でした。



最後に、JetBrainsはC \ C ++-CLionのIDEを作成しました。 ただし、これまでのところ、Arduinoプラグインはありません。 しかし、CMakeをサポートしています。 ここで活用できます!



arduino-cmake



Arduinoサポートタスクyoutrack.jetbrains.com/issue/CPP-364では、Arduino github.com/queezythegreat/arduino-cmakeのCMakeアセンブリについて言及しており、これを使用します。



これを行うには、arduino-cmake(WinではProgram Files(x86)\ Arduino)で指定されたフォルダーにArduino SDKをインストールします。 1.0.xバージョンを使用する必要があります。 バージョン1.5.xはサポートされていません。 最新バージョン1.0.6を使用しました。



次にgithub.com/queezythegreat/arduino-cmakeをダウンロードすると、すべての作業がその基礎に基づいて構築されます。 Windowsの場合、cmake / Platform / Arduino.cmakeファイルの行1177、1178でTARGET_PATHからTARGET_NAMEへの変数名を修正する必要があります。 Windowsでは、avrdudeのファームウェアのHEXファイルへのパスが正しく形成されていないため、これを行う必要があります。 最も可能性が高いのは、ドライブ文字のあるWinのようなパスです。 私はそれをスクリーニングする方法を見つけられなかったので、相対パスを示しました。 さらに、avrdudeコマンドを呼び出す前に、hexファイルのあるディレクトリへの移行が行われます。 これらの変更は、プログラムをArduinoにアップロードするために必要です。 完了していない場合、コンパイルのみが行われます。



次に、CLionで、File-> Import projectを使用してこのCMakeプロジェクトを開きます。





CLionがCMakeファイルを処理する間、少し待ちます。 これでプロジェクトの準備は完了です。



このプロジェクトをArduinoにロードするように構成するには、特定のArduinoボードとArduinoのポートを選択してプログラムをロードする必要があります。 サンプルプロジェクトでは、これはexample / CMakeLists.txtで構成されます。 例付きのすべての構成情報は、arduino-cmake / README.rstにあります。



独自のプログラムを作成する



最初はArduinoの「スケッチ」を使用しようとしましたが、コンテキスト(右下のCLion)が正しく指定されていても、CLionではautocompliteは機能しませんでした。 したがって、私はcppファイルを使用しました。このファイルは、コンテンツ内では「スケッチ」よりも数行だけでした。

CMakeLists.txtをセットアップするときに、duinoworks.bakketti.com /?p = 11の例を使用しました



最初に、アプリケーションのルートフォルダー(サンプルフォルダーと同じレベル)にシリアルフォルダーを作成し、そこに2つのファイルを追加します-プログラムコードを含むserial.cppとプロジェクト設定を含むCMakeLists.txt。



シリアル/ CMakeLists.txtコンテンツ

# Set a variable for commands below set(PROJECT_NAME serial) # Define your project and language project(${PROJECT_NAME} C CXX) set(${PROJECT_NAME}_BOARD nano328) # Define the source code set(${PROJECT_NAME}_SRCS serial.cpp) # Define the port for uploading code to the Arduino set(${PROJECT_NAME}_PORT COM8) # Command to generate code arduino firmware (.hex file) generate_arduino_firmware(${PROJECT_NAME})
      
      







ボードとしてCOM8ポートにATMEGA328を備えたArduino Nanoを選択したことに注意してください。 サポートされているすべてのボードのリストはCにあります:\ Program Files(x86)\ Arduino \ hardware \ arduino \ boards.txt(これはポイントのパラメーターの名前です-uno、atmega328、diecimilaなど)



シリアル/ serial.cppの内容

 #if ARDUINO >= 100 #include "Arduino.h" #else #include "WProgram.h" #endif void setup() { Serial.begin(9600); } void loop() { Serial.println("Hello from CLion!"); delay(5000); }
      
      







そして、シリアルフォルダーを接続します-ルートCMakeLists.txtに次の行を追加します

 add_subdirectory(serial)
      
      







次に、CMakeウィンドウのCLionで、CMakeプロジェクトのリロードを選択します:





その後、通常どおりコードを記述できます。 autocompliteをサポートする編集コードの例:





CLionでは、シリアル、シリアルサイズ、シリアルアップロード構成を作成する必要があります。 シリアルアップロードの設定に興味があります-プログラムを収集してロードします。



それを選択し、実行-> Buid(Ctrl + F9)をクリックするか、構成ドロップダウンリストの近くにある[実行]または[デバッグ]ボタンをクリックします。 最初のケースでは、アセンブリとロードはArduinoで行われ、2番目のケースでは同じことが行われますが、elfファイルも実行しようとしますが、失敗し、エラーが発生しますが、これは結果に影響しません。



Arduinoライブラリを使用する



Arduinoライブラリを使用するには、ライブラリフォルダーへのパスを明示的に指定する必要があります。 これは以下を追加することで実行できます
 link_directories(${ARDUINO_SDK}/libraries)
      
      



ルートCMakeLists.txt内。 さらにプログラムでは、通常のようにヘッダーを接続するだけです
  #include "LiquidCrystal.h"
      
      









GitHubにサンプルプログラムがあります。

github.com/TimReset/arduino-cmake



おわりに



現在、CLionからCOMポートに接続してArduinoと通信することはできません。これには、Arduino IDEまたはEclipseからのCOMポートの監視機能を使用しました。 arduino-cmakeでは、COMポート監視プログラムを開始するタスクを追加できます CMakeLists.txtでset($ {PROJECT_NAME} _SERIAL <Program_name @ SERIAL_PORT @)を指定します)。 また、avrdudeを介してプログラムをダウンロードする場合、COMポートを誰も使用しないでください(たとえば、Arduino IDEを介して並行して接続することはできません)。そうしないと、ダウンロードは行われませんが、エラーは発生しません。 そのため、起動するたびに接続を閉じる必要があります。



私自身、CLionを自分で開発に使用することにしました-彼はC \ C ++コードを書くための主要な機能をサポートしています。 CMakeLists.txtではこれまでのところ実際には機能しませんが、構文の強調表示しかありませんが、コメントでも機能しません。



All Articles