« M5Stackで雑IRモジュール&TVリモコン | トップページ | Orbitの初期化方法 »

2019年5月15日 (水曜日)

M5Stackの種類を判別したいのだが

 M5Stack GreyとM5StickCの判別をしたいと思い、いろいろ試行錯誤。

 ライブラリを作成中。両方で動くようにしたい。
 機種に合わせて処理を変えたい(画面サイズが異なる)。

 といった感じ。
 最初は、「_M5STACK_H_」と「_M5STICKC_H」が定義されているかどうかを調べればいかと思ったのだけど、その前に

 #include  とか
 #include

 をライブラリのファイルに入れなくちゃいけないわけで。その時点で破綻している。

 別の方法。

 boards.txt から名前を判別するというのも見つけた。

 Arduinoでボードを判別する - Qiita

 しかし、これもうまくいかない。そのファイルは、portableを使ってるとここにあった。

 C:\arduino\arduino-1.8.9portable\portable\packages\esp32\hardware\esp32\1.0.1

 「M5Stack_Core_ESP32」とか「M5STACK_FIRE」とか「ESP32_PICO」とか。

 これを #ifdef で判別すればいいのかと思いきや、どれもだめ。スルーされる。環境のせいか?

 というわけで、あきらめモード。

 引数なしではM5Stackで正常に表示されるように。
 M5StickCでは、必ず引数を指定してね。みたいな感じに落ち着きそうだ。

 この時点ではこんな感じだ。

#ifndef DRAWPIANO_H
#define DRAWPIANO_H
//#include "Arduino.h"

// Which board do you use?
#include <M5Stack.h>
//#include <M5StickC.h>

class DrawPiano
{
  public:
    #ifdef _M5STACK_H_
      DrawPiano(int x = 0, int y = 50, int w =40, int h= 60); //for M5Stack _M5STACK_H_ M5Stack_Core_ESP32 M5STACK_FIRE
    #endif
    #ifdef _M5STICKC_H_
      DrawPiano(int x = 2, int y = 20, int w = 20, int h = 24); // for M5StickC _M5STICKC_H_ ESP32_PICO
    #endif
    
    void init();
    void drawKey(int num, bool boo, int keyOnColor = 64800);  //64800 = ORANGE
  private:
    int keyX[13] = {0,1,2,3,4,6,7,8,9,10,11,12,14};
    int keyY[13] = {0,1,0,1,0,0,1,0,1,0,1,0,0};

    int posX, posY, keyWidth, keyHeight;
};

#endif

 どうしますかね。


|

« M5Stackで雑IRモジュール&TVリモコン | トップページ | Orbitの初期化方法 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« M5Stackで雑IRモジュール&TVリモコン | トップページ | Orbitの初期化方法 »