2016年8月3日水曜日

Arduino about library

 Arduinoを始めて3ヶ月になったが、色々なトラブルに遭遇した。特にライブラリーについてのトラブルが目立つ。そこで経験したライブラリーに関してまとめておくこととした。
尚、以下のことはArduinoIDE1.6.5においての内容である。

【ライブラリーのインストール】
 以前のバージョンでは手動のようであったが、現バージョンでは、IDEの中でインストールが出来るようになっている。標準の手順は以下の通り。
  1.  必要なライブラリーZIPをダウンロードし、適当なフォルダーに保存
  2. メニューバーの「スケッチ」をクリック
  3. 「Include Library」をクリック
  4. 「Add ZIP Libraly」をクリック
  5.  表示されたダイアログで、保存したフォルダーに移動し、該当のライブラリーZIPを選択
  6.  ArduinoIDEを一旦終了し、立ち上げなおす。
 以上でライブラリーリストに表示されます。
 然しながらこれで旨くいかない場合がある。登録時にエラーが出るときもあれば、インストールされ、リストに出るが、コンパイル時にエラーとなることがある。
 又、Windowsのバージョンによっても挙動が違う。
 どうもライブラリーの作り方、特にZIPの作り方で問題があるような気がする。
 そこで私は、以下の手順としている。
  1. 必要なライブラリーZIPをダウンロードし、適当なフォルダーに保存
  2. ZIPファイルを解凍する。
  3. 解凍されたライブラリーフォルダーをドキュメント→arduinoフォルダー→Library内に移動
  4. ArduinoIDEを立上ライブラリーがリストにあることを確認する。
 Arduinoのライブラリーは、ドキュメントのarduinoフォルダー内のLibraryフォルダーに入れるのであるが、arduinoIDEのフォルダー内にもLibraryフォルダーがある。ここにおいても同様に使用できる。ここにはarduino標準のライブラリーがあるので、ユーザーが登録するライブラリーはドキュメントのほうに入れるほうが、将来IDEのバージョンアップの再にも楽である。

【ライブラリーについて】
 ライブラリーには色々なものがある。どれを選択するかが難しい。使用例などを見て選択するといいと思う。同じライブラリーでも、arduino用とそうでないものがある。注意を要する。
 スケッチを作る場合、これら使用ライブラリーの入手先を明示することが親切である。私もスケッチ内に記述するよう心がけることとした。
 また、該当ライブラリーでコンパイル時にエラーとなることがある。
 以下にいままで使用したライブラリーでの注意点をまとめておく。
  • ロータリーエンコーダ用ライブラリー
     「rotary.h」と「Rotary.h」と2種類ある。内容は同じであるが「r」と「R」の違いである。使用するときに大文字小文字を間違えないようにする。Arduinoは大文字小文字を明確に判定する。
  • DDS AD9851用ライブラリー「EF_9851.h」と「AD9851.h」と2種類ある。命令の書き方も違うのでサンプルファイルで確認のこと。 いままでのVFOでは「EF_AD9851.h」を使用してきた。このライブラリーにも注意事項がある。そのままでは、コンパイル時にエラーが出る。以下の対応が必要である。ライブラリー内のEF_AD9850.hをテキストエディター等で開き以下のように修正する。
    27行目 #include "WProgra.h" →#include "Arduino.h"
  • TFT LCD用ライブラリー(ILI9163C)
     「TFT_ILIILI9163C.h」という1.44inchTFT LCD用ライブラリーであるが、1.44inch (128x128)LCDにおいて、そのまま使用すると画面が32dotずれて表示される。これは、(128x160)のTFT LCDと(128x128)との違いと思われる詳しくは分からない。対応としては以下のように変更を行う。

    TFT-ILI9163CLibrary内の「-settings」フォルダー内の「TFT_ILI9163C_settings.h」ファイルをワードパット等TEXTエディタで開き下記赤字32を0にする。

    #define _TFTWIDTH 128//the REAL W resolution of the TFT
    #define _TFTHEIGHT 128//the REAL H resolution of the TFT
    #define _GRAMWIDTH 128
    #define _GRAMHEIGH 160//160
    #define _GRAMSIZE _GRAMWIDTH * _GRAMHEIGH//*see note 1
    #define __COLORSPC 1// 1:GBR - 0:RGB    
    #define __GAMMASET3 //uncomment for another gamma
    #define __OFFSET 0 32//*see note 2   //32を0 にする
  • TFT LCD用ライブラリー(Ucglib.h)
    2.2inchTFT VFOで採用したucglib.hというライブラリーであるが、ILI9163Cと同様1.44inchTFTで使用すると、32dotのずれが発生する為、やはりライブラリーの中のファイルを一部修正する必要がある。修正箇所は以下の通り

    Ucglib_Arduino-master → src → clib → 「ucg_dev_ic_ili9163.c」ファイルをワードパット等TEXTエディターで開き 32を0に変更する。

    134行目
    ucg->arg.pixel.pos.y +=0 32;
    ucg_com_SendCmdSeq(ucg, ucg_ili9163_set_pos_dir0_seq);
    ucg->arg.pixel.pos.y -=0 32;
    以下同様の32とある部分を総て0に変更する(14箇所ある)
    もし分からなければ、変更したものをメールで送ることも可
以上いままでに遭遇したライブラリーでのトラブルである。これらのことをまとめておくフォーラム(海外はフォーラムが沢山ある)が期待される。またご存知の方があればお教えいただきたい。


0 件のコメント: