Array associatif ?

Bonsoir,

N'ayant pas trouvé de réponse sur le net et le forum, je me permets d'ouvrir un nouveau topic.

Existe t'il un moyen, comme une librairie, permettant de faire un array associatif sur l'Arduino, comme peut le faire le PHP ?

Exemple en PHP

$array = ("temperature" => 14.5, "tension" => 5.5);
echo $array['tension']; // Retournera 5.5

std::map

Mais je crains que ce mécanisme ne fasse exploser la RAM d'un UNO

Bonsoir,

D’accord je vais m’abstenir d’utiliser ce principe sous Arduino à ce moment. Merci pour vos réponses ! :wink:

=> est PHP pas C;

Je ne connais pas vraiment le php, mais de ce que je lis ça ressemble fortement à une structure cette histoire.

struct MonArray {
float temperature;
float tension;
};

MonArray Test = {14.5,5.5};

Serial.println(Test.temperature);

@Batto
C'est pas comme ça que cela fonctionne.
On associe un label et une valeur.
On retrouve la valeur en cherchant le label.
On peut effectivement le faire avec une structure ayant un champ texte et un champ valeur d'un type quelconque.
Il faut ensuite parcourir la structure pour retrouver le label et retourner la valeur associé au label. Mais sur un processeur avec peu de mémoire c'est plutôt luxueux comme manière de faire.

Bonjour,

La librairie C++ STL n'a pas été porté sur avr 8 bits par manque de RAM, donc le std::map c'est foutu.
(il existe bien un portage mais il demande une Arduino mega560 et une RAM externe de 512Ko)

Si tu veux vraiment faire une array dynamique champ=valeur c'est faisable en soit, mais tu va avoir de gros soucis très rapidement.

Si tu veux faire un "pseudo objet" champ=valeur avec une liste de champs connue et fixe -> structure.
Sinon -> revoir ton code à la base.

Le coup de la classe wrapper sur structure c'est quand même un peu bourrin ...

Quitte à avoir une liste static d'entrée dans le dico autant utiliser une structure.
Le compilateur est content et peu tout optimiser.
L'utilisateur lui peux mixer différent types de champs dans sa structure.