比方你要连续收取10个数据.
申明一个全局变量,长度为10的数组
unsigned char Recieved_byte[10];
//function to read byte data from a register
void accRead(byte address){ //函数类型改为无返回值的函数
byte val = 0x00; //去掉
unsigned char i; //新加
Wire.beginTransmission(ACCELEROMETER);
Wire.send(address);//器件地址不用该
Wire.endTransmission();
Wire.requestFrom(ACCELEROMETER, 1); //读写请求不用改
while (Wire.available() <= 0) { // wait for a value
Serial.print(address, HEX); // show which axis is being read
}
//val = Wire.receive(); //想连续读取数据的话,只需要不停的给clk收取数据就可以
for(i=0;i<10;i++) //新加
Recieved_byte[i] = Wire.receive(); //新加
Wire.endTransmission();
//Serial.print("got: ");
//Serial.println(val); //调试信息自己改啦...
//return val; //去掉
}
连续读时在发生器发送一个字节后要给发送器一个应答信号ack,我也试过没成功,就改为一个一个读取。速度影响有点,但要看具体做什么了。
http://zhidao.baidu.com/question/174006996.html 看看这个吧 会对你有帮助的