/** * Author: giltesa * WebSite: http://giltesa.com * License: CC BY-NC-SA 3.0 * * Esta estructura, de tipo union y no struct, permite guardar un dato del tipo que queramos, y hacerlo accesible de dos formas distintas. * - La primera de ellas es accediendo al dato directamente como una variable mas. * - La segunda forma es accediendo a su memoria, en el caso del float este tiene un tamaño de 4 bytes, eso hace que podamos acceder a sus 4 bytes por separado. * Esto aparentemente no tiene ninguna utilidad, salvo que queramos transmitirlo entre dos Arduinos inalambricamente ya que para ello han de ser enviados los bytes uno a uno. Despues se recogen uno a uno y se restauran en otra estructura union: */ union miDato{ float fval; byte b[4]; // Array de bytes de tamaño igual al tamaño de la primera variable: int = 2 bytes, float = 4 bytes } origen, destino; // Se crean dos estructuras Union, cada una es independiente de la otra y guardan distintos datos. void setup() { Serial.begin(9600); delay(1000); // A la estructura de origen se le da un valor float, una temperatura por ejemplo. origen.fval = -103.36; // Se imprime para comprobar que se ha guardado bien: Serial.print("Origen= "); Serial.print(origen.fval); // Ahora se copia byte a byte la estructura de origen en la estructura de destino: for(int i=0 ; i < sizeof(origen.fval) ; i++) destino.b[i] = origen.b[i]; // Y se imprime el float de la estructura de destino, es el mismo dato que el de origen! Serial.print("\nDestino= "); Serial.print(destino.fval); } void loop() { }