Dudas enviando via I2C un valor unsigned long

Buenas,

este es mi primer mensaje, por lo que aprovecho para saludar a toda la comunidad. Aqui va mi pregunta:

Tengo un montaje de tres micros atmega328p que programo con arduino. Uno de ellos actua como maestro y los otros dos son esclavos en el bus I2C. En los esclavos, en cada uno de ellos tengo conectado un lector de tarjetas RFID cuyas lecturas almaceno en una variable unsigned long ya que las tarjetas que leen tienen 32 bits de largo. Hasta aqui todo fantastico, cuando muestro via RS232 el codigo de la tarjeta en formato hexadecimal todo va como la seda.

El problema es que esa lectura se la tengo que mandar al ucontrolador maestro a traves de I2C, usando la libreria Wire. Hasta donde se, Wire.write puede mandar un byte, un array de bytes o caracteres que al final también son bytes. He tratado sin ningún exito dividir ese unsigned long de 32 bits de largo en un array de 4 bytes (8bits/byte+4 bytes = 32 bits).

He probado varias soluciones del tipo:

unsigned char codigo[4];

codigo[0] = (int)((codigo_tarjeta >> 24) & 0xFF);
codigo[1] = (int)((codigo_tarjeta >> 16) & 0xFF);
codigo[2] = (int)((codigo_tarjeta >> 8) & 0xFF);
codigo[3] = (int)(codigo_tarjeta  & 0xFF);

Serial.print(codigo[0], BIN);
Serial.print(codigo[1], BIN);
Serial.print(codigo[2], BIN);
Serial.print(codigo[3], BIN);

Despues de todo este codigo es cuando vendría el Wire.write(codigo, 4); pero el problema aparece ya en el Serial.print, siempre siempre y haga lo que haga es todo 0, siempre.

¿Podeís echarme una mano?

Muchas gracias por anticipado,
Ander Azabal