如何通过i2c接收两个值并在Arduino中解析?

时间:2015-08-23 18:10:33

标签: arduino i2c lcd

我有两个arduinos,第一个arduino用于读取感应器和第一个lcd,第二个arduino用于第二个lcd。 现在我想通过i2c将两个值发送给另一个Arduino

我的发件人代码:

  byte senderArray[] = {batteryVoltage, temperatureC}; //12V, 23*C
  Wire.beginTransmission(4); // transmit to device #4
  Wire.write(senderArray,2); // sends
  Wire.endTransmission();    // stop transmitting

这里接收代码:

void setup()
{
  Wire.begin(4);                // join i2c bus with address #4
  Wire.onReceive(receiveEvent); // register event
}

void loop()
{
  delay(100);
}

void receiveEvent(int howMany)
{
  byte index = 0;
  int array[2];
  while(Wire.available() > 0)
  {
    array[index] = Wire.read();
    lcd.clear();
    lcd.print("Battery: " + array[0]);
    lcd.setCursor(0, 1);
    lcd.print("Temp: " + array[1]);
  }
}

如何在第二行batteryVoltage的第一行temperatureC中显示?

编辑: 温度结果只显示23,在发送i2c完全输出23,478之前,如何在第二个Arduino上显示完整的结果?

1 个答案:

答案 0 :(得分:0)

您无法连接字符串和数字,而是混合数据类型。替换:

lcd.print("Battery: " + array[0]);

使用:

lcd.print("Battery: ");
lcd.print(array[0],DEC);

等...