Los array son pasados como referencia (modifican la variable externa) y tambien hay que pasar el tamaño del array.
https://www.tutorialspoint.com/arduino/arduino_passing_arrays_to_functions.htm
int datosSize = 8; byte datos[datosSize] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; for ( int k = 0 ; k < datosSize ; k=k+1 ) datos[k] = 0; void ModificaDatos( byte datos[], int datosSize ) { for ( int k = 0 ; k < datosSize ; k=k+1 ) datos[k] = (1 +k); }
un entero 16 bits (0 a 65535) —> 2 bytes (8 bits c/u)
o un entero 14 bits (0 a 16383) —> 2 bytes (8 bits c/u)
byte lowBy = (entero & 0xff); //los primeros 8 bits byte highBy = (entero >> 8) & 0xff); //los siguientes 8 bits byte lowBy low = (entero & 0x7f); //los primeros 7 bits, el bit8 siempre en 0 indica es low byte highBy = ((entero >> 7) & 0x7f) | 0x80; //los siguientes 7 bits, el bit8 siempre en 1 indica es high byte = highByte(entero); //los primeros 8 bits byte = lowByte(entero); //los siguientes 8 bits entero = word(highBy, lowBy); //returns the integer value of the highBy and lowBy bytes