// MAESTRO
#include <Wire.h>
#define SLAVE_ADDRESS 0x04
void setup() {
Wire.begin(); // Iniciar I2C como maestro
Serial.begin(115200); // Iniciar comunicación serial con el computador
}
void loop() {
if (Serial.available()) {
char command = Serial.read(); // Leer el comando del computador
Wire.beginTransmission(SLAVE_ADDRESS);
Wire.write(command); // Enviar el comando al esclavo
Wire.endTransmission();
Serial.print(command);
}
}
// ESCLAVO
#include <Wire.h>
#define LED_PIN 12
void setup() {
Wire.begin(0x04); // Iniciar I2C como esclavo con dirección 0x04
Wire.onReceive(receiveEvent); // Registrar función para recibir datos
pinMode(LED_PIN, OUTPUT); // Configurar pin del LED como salida
}
void loop() {
// No es necesario hacer nada aquí, ya que la recepción de datos se maneja por interrupción
}
void receiveEvent(int howMany) {
while (Wire.available()) {
char command = Wire.read(); // Leer el comando recibido
if (command == 'e') {
digitalWrite(LED_PIN, HIGH); // Encender el LED
} else if (command == 'a') {
digitalWrite(LED_PIN, LOW); // Apagar el LED
}
}
}