Slave Read

Slaveモードにすることで子としてMasterと通信します。obnizではMasterからの書き込みにのみ対応しており、Masterからの読み取りは常に0が読み出されます。

Slaveモードにするにはi2c.start()においてmodeでslaveを指定します。また、自身のアドレスslave_addressにて指定します。

var i2c = obniz.getFreeI2C();
i2c.start({mode: "slave", sda: 0, scl: 1, slave_address: 0x01});

データはMasterの任意のタイミングでSlaveに対して送信されます。送信されたデータを受け取るにはi2c.onwrittenで関数を指定します。

var i2c = obniz.getFreeI2C();
i2c.start({mode: "slave", sda: 0, scl: 1, slave_address: 0x01});
i2c.onwritten = function(data){
  console.log(data);
}

受信したデータはdataに配列として入ります。現在obnizではデータはフラグメント化されます。つまり、I2Cでは本当はデータの長さがあり、ここからここまでが1つのデータとなっているのですが、それがバラバラになり届く可能性があります。UARTの受信と同じです。