Problema de alimentacion con I2C

Hola a todos. Soy nuevo en el foro y este es mi primer post.

La situacion es la siguiente: Tengo un arduino Mega conectado via I2C a un arduino uno. El mega es el master y el uno es el slave.
Si alimento el mega a traves del conector usb, el Slave hace exactamente lo que el master dice. El problema es que si alimento el mega a traves del Jack (12voltios), el slave no hace nada.
Alguien me podria dar una pista sobre esto.
Desde ya muchas gracias

Hi,
Normalmente cuando usas el Vin este tiene un diode de protecion y algunas veces este se funde y no suple los 5 voltios regualado. Lee el voltaje de 5 voltios en la tarjeta para ver si el reguladoe de vin esta funcionado.

Sin ver ambos códigos (debidamente posteados de acuerdo a las normas o sea, usando etiquetas), no podemos decir mucho sobre que ocurre.
Parece mas una consulta de software que de hardware.

Hola disculas por no haber puesto el codigo.

Por un lado no estoy usando el pin Vin

Los que estoy usando son los detallados a continuacion:

Arduino Board SDA SCL

Uno A4 A5

Mega2560 20 21

A continuacion los codigos.

Codigo del Master (Arduino Mega):

// Include Arduino Wire library for I2C
#include <Wire.h>

// Define Slave I2C Address
#define SLAVE_ADDR 9

void setup() {

// Initialize I2C communications as Master

Wire.begin();
}

void loop() {

val = 1;
Wire.beginTransmission(SLAVE_ADDR);
Wire.write(val);
Wire.endTransmission();
delay(5000);

val = 2;
Wire.beginTransmission(SLAVE_ADDR);
Wire.write(val);
Wire.endTransmission();
delay(5000);

val = 3;
Wire.beginTransmission(SLAVE_ADDR);
Wire.write(val);
Wire.endTransmission();
delay(5000);

val = 4;
Wire.beginTransmission(SLAVE_ADDR);
Wire.write(val);
Wire.endTransmission();
delay(5000);
}


Codigo del slave: (Arduino Uno)

#define X_DIR_PIN 11
#define X_STEP_PIN 12
#define X_EN_PIN 13
#include <Wire.h>
#define SLAVE_ADDR 9
int tiempo;

////////////////////////////////////////////////
void setup(){

Wire.begin(SLAVE_ADDR);
Wire.onReceive(receiveEvent);
pinMode(X_STEP_PIN , OUTPUT);
pinMode(X_DIR_PIN , OUTPUT);
pinMode(X_EN_PIN , OUTPUT);
digitalWrite(X_EN_PIN , LOW);
}

/////////////////////////////////////////////////////////

void receiveEvent() {
tiempo = Wire.read();
}

//////////////////////////////////////////////////////

void loop ()

digitalWrite(X_DIR_PIN , LOW);
for (int i = 0; i <= 400; i++) // EXTRUSOR ADELANTE 120

{
digitalWrite(X_STEP_PIN , HIGH);
delay (tiempo);
digitalWrite(X_STEP_PIN , LOW);
}
delay(1000);

digitalWrite(X_DIR_PIN , HIGH);
for (int i = 0; i <= 400; i++) // EXTRUSOR ATRAS 95
{
digitalWrite(X_STEP_PIN , HIGH);
delay(tiempo);
digitalWrite(X_STEP_PIN , LOW);
}
delay(1000);
}

(debidamente posteados de acuerdo a las normas o sea, usando etiquetas),

Como esperas que dos elementos se comuniquen a tiempo con tantos delay() involucrados? Solo eso diré y deberia esperar a que postees debidamente los códigos como te pedí.