Arduino:
Uso de matrices asociativas

Cómo hacerlo:

Estrictamente hablando, Arduino no tiene soporte incorporado para arrays asociativos como los encontrarías en lenguajes de programación de más alto nivel. Pero, no temas. Podemos ingeniárnoslas usando estructuras y arrays para imitar esta funcionalidad. Aquí tienes un ejemplo simple para crear un “array asociativo” básico para almacenar y acceder a las temperaturas de diferentes ciudades.

Primero, define una estructura para contener la ciudad (clave) y su temperatura (valor):

struct CiudadTemperatura {
  String ciudad;
  float temperatura;
};

A continuación, inicializa un array de objetos CiudadTemperatura:

CiudadTemperatura temperaturas[] = {
  {"Nueva York", 19.5},
  {"Los Ángeles", 22.0},
  {"Chicago", 17.0}
};

Así es como puedes acceder y mostrar la temperatura de una ciudad específica:

void setup() {
  Serial.begin(9600);
  for(int i = 0; i < 3; i++) {
    if(temperaturas[i].ciudad == "Los Ángeles") {
      Serial.print("La temperatura en Los Ángeles es: ");
      Serial.println(temperaturas[i].temperatura);
    }
  }
}

void loop() {
  // Nada aquí por ahora.
}

Ejecutar este código te daría la salida:

La temperatura en Los Ángeles es: 22.0

Estudio Profundo

Históricamente, lenguajes de programación como C y C++ (de los cuales se deriva la sintaxis de Arduino) no venían con arrays asociativos incorporados, lo que llevó a soluciones alternativas como la mostrada arriba. Este enfoque es relativamente simple pero escala mal a medida que el tamaño de los datos aumenta debido a su tiempo de búsqueda O(n).

Lenguajes como Python ofrecen diccionarios, y JavaScript tiene objetos para este propósito, ambos son mucho más eficientes para administrar pares clave-valor. En Arduino, cuando el rendimiento y la eficiencia se vuelven críticos, los desarrolladores podrían optar por estructuras de datos más especializadas, como tablas hash, implementadas a través de bibliotecas.

Aunque Arduino no admite de manera nativa arrays asociativos, la comunidad ha desarrollado bibliotecas como HashMap que se pueden agregar a tu proyecto para proporcionar una funcionalidad similar con un mejor rendimiento que un enfoque hecho por ti mismo. Estas bibliotecas ofrecen generalmente un medio más elegante y eficiente de gestionar arrays asociativos, especialmente para proyectos más complejos.