如何通过 i2c 接收两个值并在 Arduino 中解析?
How to receive two values over i2c and parse in Arduino?
我有两个 arduino,第一个 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之前是23478的完整输出,如何在第二个Arduino上显示完整结果?
您不能连接字符串和数字,这是在混合数据类型。替换:
lcd.print("Battery: " + array[0]);
与:
lcd.print("Battery: ");
lcd.print(array[0],DEC);
等...
我有两个 arduino,第一个 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之前是23478的完整输出,如何在第二个Arduino上显示完整结果?
您不能连接字符串和数字,这是在混合数据类型。替换:
lcd.print("Battery: " + array[0]);
与:
lcd.print("Battery: ");
lcd.print(array[0],DEC);
等...