52. I2C Scenarios

Question.6

What will be printed on the slave's serial monitor? (after executing the following code).

Arduino 1 Master Code : 

#include <Wire.h>

// Define a struct to send
struct DataStruct {
  int32_t id;
  float temperature;
  float humidity;
};

void setup() {
  Wire.begin();
  DataStruct dataToSend;
  dataToSend.id = 1234;
  dataToSend.temperature = 25.5;
  dataToSend.humidity = 60.7;
  delay(2000);  
  Wire.beginTransmission(8);  
  Wire.write((uint8_t*)&dataToSend, sizeof(dataToSend));  
  Wire.endTransmission(); 
}

void loop() {
}


Arduino 2 Slave Code : 

#include <Wire.h>
bool printT = false;
// Define the same struct to receive
struct DataStruct {
  int32_t id;
  float temperature;
  float humidity;
};

DataStruct receivedData;
void receiveEvent(int howMany) {
  if (howMany == sizeof(receivedData)) {  
    Wire.readBytes((char*)&receivedData, sizeof(receivedData));
  }
  printT = true;
}

void setup() {
  Wire.begin(8); 
  Wire.onReceive(receiveEvent); 
  Serial.begin(115200);
}

void loop() {
  if(printT) {
    Serial.println((String) "ID: " + receivedData.id);
    Serial.println((String) "Temperature: " + receivedData.temperature);
    Serial.println((String) "Humidity: " + receivedData.humidity);
    printT = false;
  }
}


 

Select Answer