Estamos utilizando dos Arduino UNO como maestro/esclavo para este protocolo I2C. Utilizamos el primer Arduino (esclavo) como un sensor que introducirá datos ficticios (en este caso, datos de temperatura). El Arduino (maestro) debería ser capaz de emitir lo que el esclavo ha introducido, pero cada vez que lo ejecutamos, la salida es siempre 255 en lugar de los datos de temperatura.
No sabemos qué es lo que falla en el código, pero queremos leer los datos reales. ¿Puede alguien ayudarnos?
Este es el código que utilizamos para el Maestro:
// Include Arduino Wire library for I2C
#include <Wire.h>
// Define Temp Slave I2C Address
#define TEMP_ADDRESS 9
void setup() {
Wire.begin(); // Initialize I2C communications as Master
Serial.begin(9600); // Setup serial monitor
Serial.println(">>>MASTER IS READY<<<");
Serial.println('\n');
}
void loop() { //Temperature
delay(50);
Wire.requestFrom(TEMP_ADDRESS, 12);
Serial.print("TEMP ADDRESS: ");
Serial.println(TEMP_ADDRESS);
Serial.println("Receive data from TEMP Slave");
byte MasterReceivedTemp = Wire.read();
Serial.print("Temperature = ");
Serial.println(MasterReceivedTemp);
Serial.println('\n');
}