[ModdableSDK]コンパイル時に「”MODDEF_I2C_SDA_PIN” undefined」エラーとなる原因と対応

投稿者: | 2019年11月8日

はじめに

esp(esp8266)デバイス向けに作成しているアプリケーションを mcconfigでビルドした際に「”MODDEF_I2C_SDA_PIN” undefined」のようなエラーとなりコンパイルに失敗する場合があります。このエラーの原因と対応をまとめます。

原因

この”MODDEF”で始まる定数は、manifest.jsonファイルの”defines”プロパティに設定された値から自動生成されます。

esp32デバイス向けのmanifest.jsonファイルにはI2Cで使うピンのデフォルト値が定義されています。このため、esp32デバイス向けの場合は今回のエラーは発生しません。

...
  "defines": {
    "i2c": {
      "sda_pin": 21,
      "scl_pin": 22
    }
  },
...

しかし、espデバイス向けのmanifest.jsonにはI2Cで使うピンのデフォルト値の定義が無く、一部のターゲット(例えばmoddable_one)のmanifest.json ファイルにしかデフォルト値の定義がありません。

対応

現在作成しているプロジェクトのmanifest.jsonファイルにI2Cで使うピンの定義を追加する必要があります。

SDA=5、SCL=4ならば、次のようになります。

...
  "platforms": {
    "esp": {
      "defines": {
        "i2c": {
          "sda_pin": 5,
          "scl_pin": 4
        }
      }
    }
  },

...

まとめ

Moddable SDKは、manifest.jsonファイルの内容がビルドの可否に影響するので少し慣れが必要です。

esp32が安価で、あまり価格差の無い日本では、esp8266の出番がなさそうですが、消費電力などを考えると、まだ利用価値がありあそうなので、esp8266にも対応しておきたいです。