はじめに
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にも対応しておきたいです。