諸事情で使うことになったArduino、多忙でなかなかいじれなかったのだが、ようやくI2Cライターを作ることができた。
といってもライブラリーがあり、なんというか、あっけなく終わった。
こんな感じだ。
上記の Wire.endTransmissionが実行されたときに、実際にはI2Cへのアクセスが起こる。
#includeint i2cAddress = (ここでスレーブデバイスのアドレスを指定);
void writeI2C(byte* arrayWriteData, int sizeWrite)
{
Wire.beginTransmission(i2cAddress);
Wire.write(arrayWriteData, sizeWrite);
Wire.endTransmission();
}void setup()
{
Wire.begin();
delay(1000);
}void loop()
{
byte testData[] = {0x00, 0x01, 0x02, 0x03};
writeI2C(testData, sizeof(testData);
}
なので、ひたすらWire.writeを繰り返しても、書き込まれないので注意。
I2Cにたくさんデータを書く必要がある場合には、このbyte宣言とwriteI2Cをひたすら繰り返せばよい。
I2Cは汎用でよく使われるバスである。
スレイブのアドレスの方法は決まっているが、ペイロード内のフォーマットは、例えばスレイブデバイス内のレジスタアドレスやデータフォーマット、ペイロードのサイズなど、各デバイス依存だ。
なのでArduinoのライブラリーでもスレイブのアドレス指定はあるが、ペイロードはbyte配列で自由に規定できる。
あとはsizeofでbyte配列の大きさを与えれば良いのだ。
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- 購入: 3人 クリック: 3回
- この商品を含むブログを見る