NodeMCU i2c

Buenos dias, estoy intentando comunicar mediante el bus I2C una placa Arduino Uno y una placa NodeMCU. En el proyecto Arduino será el que enviará datos a la placa NodeMCU, pero esto de momento es otra cosa. Después de un gran número de ensayos sin obtener respuesta. Lo único que deseo es poder escanear el bus I2C y encontrar dicha placa, para poder seguir trabajando. Los pines de conexión entra ambas placas son SCL:D1 y SDA:D2, además de unir las tierras.
El script para que arduino escaneé es el siguientes y se puede encontrar por la web.
#include <Wire.h>

void setup()
{
Wire.begin();

Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}

void loop()
{
byte error, address;
int nDevices;

Serial.println("Scanning...");

nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");

nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(5000); // wait 5 seconds for next scan
}

La placa NodeMCU, tiene el siguiente script:

#include <Wire.h>
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>

int datoRecibido=0;
String data="";

void setup()
{
Wire.begin(D1,D2); // abajo comento todas los cambios que he realizado en esta línea
Wire.onReceive(receiveEvent);
Serial.begin(9600);

}

void loop()
{
Serial.print(".");
if (datoRecibido)
{
Serial.println(data);
data = "";
datoRecibido=0;
}
}

void receiveEvent(int howMany)
{
if (Wire.available())
{
Serial.print("longitud: ");
Serial.println(howMany);
while (Wire.available())
{
char character = Wire.read();
if ((character !='S' )&&(character != 'E'))
{
data.concat(character);
Serial.println(character);
Serial.println((int)character);
}
}
//Serial.println(data.length());
}
datoRecibido=1;
}

El escaner de Arduino me encuentra perfectamente otro tipo de modulos, pantallas, sensores etc... pero la placa NodeMCU no. He intentando en la línea de:
Wire.begin(D2,D1);
Wire.begin(1,2);
Wire.begin(3,4);
Wire.begin();
Wire.begin(1);

Por favor alguien me puede decir cual es el problema. Gracias

1- Lee las normas, edita tu mensaje para colocar el código correctamente.
2- Haz una búsqueda en google por ejemplo: unir arduino y nodemcu por i2c

Tuviste en cuenta la diferencia de voltaje entre el arduino y el nodemcu?

Tendré en cuento lo del código la próxima vez.
He buscado mucha información y he realizado un numero de ensayos bastante elevado antes de preguntar nada.

No se que hay que tener en cuenta con la diferencia de voltaje. Al realizar el escaneo, la placa Arduino se alimenta desde el puerto serie al igual que la placa NodeMCU, aunque también he alimentado la placa NodeMCU con un alimentador de 5Vdc al PIN Vin y manteniendo el GND de ambas placas unido.
Al querer utilizar el NodeMCU como slave el comando:

Wire.begin(1);

Lo utilizo de esta manera en el código pero no encuentra mi dispositivo NodeMCU en el escaneo. El escaneo funciona puesto que tengo conectadas más cosas como un bh1750, una tarjeta SD y una pantalla LCD y me aparecen en las posiciones de bus 0x23, 0x27, 0x57 y 0x68 respectivamente.

Tendré en cuento lo del código la próxima vez

Yo creo que una respuesta como esta es la razón por la que ahora debes contactarme por privado y cuando lo hagas me muestras como se postea un código usando etiquetas.
Cuando lo vea habilito nuevamente el hilo y luego, acto seguido, editas el primer hilo como los compañeros te han pedido.