初期設定
i2c.start()でi2cを開始する際にmasterモードにするにはmodeにmasterを指定し、frequencyを指定します。frequencyは通信周波数でI2Cでは100khzや400khzが一般的です。
高速に通信したい場合はそれだけ”小さな”抵抗でプルアップする必要があります。外部抵抗無しで内蔵プルアップだけでI2Cを使う方法は推奨ではありませんが、使う場合はこのように設定できます。
// Javascript Example
obniz.i2c0.start({mode:"master", sda:0, scl:1, clock:400000, pull:"5v"});
書き込み
i2c.write()により相手のデバイスに書き込みを行います。書き込みはアドレスと、書き込みデータ(配列)で行います。下のプログラムの場合アドレスは0x50です。また書き込みに失敗した場合(例えば相手と接続してない、相手が拒否(NAK)をした場合)にはonerrorに設定した関数が呼ばれます。
// Javascript Example
obniz.i2c0.start({mode: "master",sda:2, scl:3, clock:400000, pull:null});
obniz.i2c0.onerror = function(err) {
console.error(err)
}
obniz.i2c0.write(0x50, [0x00, 0x00, 0x12]);
読み取り
相手からの読み取りにはi2c.readWait()を利用します。読み取り時は相手のアドレスと共に読みたいデータの長さを指定します。成功時は指定した長さと同じ長さのデータが返ります。通信のエラー発生時はerrorがthrowされます。
// Javascript Example
obniz.i2c0.start({mode: "master",sda:2, scl:3, clock:400000, pull:null});
try {
var ret = await obniz.i2c0.readWait(0x50, 1);
console.log("read "+ret);
} catch (e) {
console.error(e);
}