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;
}
}