まず、ArduinoでRP2040を動かすにはMbed OS RP2040という公式系と、arduino picoというphilhowerさんが作ったバージョンがある。少なくともI2Cの使い方がそれぞれ違う。
公式版は、I2Cで任意のピンを使うのが難しいらしい。なので、arduino-picoを選ぶ。
そして、Wire/Wire1は、setup()やloop()のスコープ中でしか使えない。
グローバルスコープで使おうとすると、未定義となりうまくコンパイルできない。
RP2040-ZeroにてArduino IDEでI2Cを使うとき、micropythonの感覚で書くと失敗する。
こんなのにハマるのは私だけかもしれないが、誰かの役に立つかもしれないので一応公開しておく。
■OKのとき
#inclue <Wire.h> void setup(){ Wire1.setSDA(14); Wire1.setSCL(15);
}
■NGのとき
#inclue <Wire.h> Wire1.setSDA(14);
Wire1.setSCL(15); void setup(){ }
ちなみに、NGのときは次のようなエラーが出る。
<ファイルパス>:18:3: error: 'Wire1' does not name a type 18 | Wire1.setSDA(14); | ^~~~~ <ファイルパス>:19:3: error: 'Wire1' does not name a type 19 | Wire1.setSCL(15); | ^~~~~ <ファイルパス>:20:3: error: 'Wire1' does not name a type 20 | Wire1.begin(); | ^~~~~ exit status 1 Compilation error: 'Wire1' does not name a type
Wire1が定義されていない、となっている。
0 件のコメント:
コメントを投稿