I2C (Arduino)

SDA(Serial Data Line)はアナログピンの4番(Megaではデジタルピンの20番),
SCL(Serial Clock)はアナログピンの5番(Megaではデジタルピンの21番)に接続します。

SDA,SCLはオープンドレインです。プルアップ抵抗
http://www.picfun.com/midi2c02.html
Vdd=5Vとすれば  Rp > 1.5kΩ となります。

I2Cとは
http://toragi.cqpub.co.jp/Portals/0/backnumber/2006/06/p160-161.pdf

OMRON製 MEMS非接触温度センサ
http://mag.switch-science.com/2013/03/27/mems_temp_sensor/
http://www.switch-science.com/catalog/1297/
#include
#include

#define D6T_addr 0x0A
#define D6T_cmd 0x4C

int rbuf[35];
float tdata[16];
float t_PTAT;

void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.flush();

}

void loop()
{
int i;

if (Serial.available() > 0) { // 受信したデータが存在したら
int inByte = Serial.read(); // 受信データを読み込む
if (inByte == 0x0001) { // 送られてきたデータが0x01だったら

Wire.beginTransmission(D6T_addr);
Wire.write(D6T_cmd);
Wire.endTransmission();

if (WireExt.beginReception(D6T_addr) >= 0) {
i = 0;
for (i = 0; i < 35; i++) {
rbuf[i] = WireExt.get_byte();
}
WireExt.endReception();

t_PTAT = (rbuf[0]+(rbuf[1]<<8))*0.1;
for (i = 0; i < 16; i++) {
tdata[i]=(rbuf[(i*2+2)]+(rbuf[(i*2+3)]<<8))*0.1;
}
// output_json(); // JSONで出力
output_csv(); // CSVで出力
}
}
}
}

// CSVで温度を出力(PTATなし)
void output_csv() {
for (int i = 0; i < 16; i++) {
Serial.print(tdata[i]);
if (i < 15) {
Serial.print(",");
}
else {
Serial.println();
}
}
}

// JSONで温度を出力(PTATあり)
void output_json() {
Serial.println("{");
Serial.print("\"PTAT\":");
Serial.print(tdata[0]);
Serial.println(",");
Serial.print("\"TEMP\":[");
for (int i = 1; i < 15; i++) {
Serial.print(tdata[i]);
Serial.print(",");
}
Serial.print(tdata[15]);
Serial.println("]}");
}