je débute depuis peu sur arduino et j'ai 1 question sur la programmation
Je déclare au début de mon programme plusieurs variables nommées V1, V2, V3, Vx.... de type INT. J'ai une Variable VARs de type String et VARi de type INT. La variable VARs contient le nom d'une de mes variables exemple : VARs = "V1" et VARi contient la valeur que je veux affecter à la variable dont le nom est contenu dans VARs
Exemple :
V1 = 10;
VARs = "V1";
VARi = 50;
là je voudrais que V1 = 50;
Je sais pas si c'est réalisable. Merci pour votre aide.
Pas possible!!! Tu dois convertir ton int en char.
Tu as donc le choix entre itoa ou sprintf.
EX: VARs = itoa(V1, buffer,...)
C'est un peu dur de comprendre ce que tu veux faire réellement et comment tu articules ton programme autour de VARs, qui à priori ne sert pas à grand chose. Retour sur afficheur ???
Dans ton cas, il faut utiliser des pointeurs. un pointeur est un identificateur (au même titre que le nom donné à une variable).
donc tu aurais tes int v1, v2, v3, puis ton pointeur VARs. il te suffit d'assigner v1 à VARs, puis quand tu appelles VARs, ça modifie v1. J'imagine que tu voudrais ne discuter qu'avec VARs, et de temps en temps rediriger VARs vers v2 ou v3 ou v1... Changer de variable sans changer le code...
et en passant par un tableau :
int v[4]; // déclare un tableau de 4 int (v[0] à v[3])
int i, valeur; // variables bidons
(...)
i = 3;
valeur = 2;
(...)
v[i] = valeur; // équivaut à "v[3] = 2";
Je n'ai volontairement pas mis de code d'exemple, car sous arduino, je n'ai toujours pas compris comment utiliser les pointeurs, c'est vraiment très mal expliqué (en fait, j'ai rien trouvé sur l'utilisation des pointeurs...
Je n'ai volontairement pas mis de code d'exemple, car sous arduino, je n'ai toujours pas compris comment utiliser les pointeurs, c'est vraiment très mal expliqué (en fait, j'ai rien trouvé sur l'utilisation des pointeurs...
J'ai pris pour exemple V1, V2, Vx mais les variables peuvent avoir des noms totalement différents.
En fait je lis un fichier stocké sur carte SD qui contient le nom de chaque variable et sa valeur
Ex :
[IP]=192.168.1.20
[SENSOR]=WS1170
...
Je voudrais pouvoir mettre dans la variable IP la valeur "192.168.1.20", dans la variable SENSOR la valeur "WS1170", etc...
J'avais effectivement regardé les pointeurs car ça me paraissait être la solution mais je n'ai pas réussi à tout comprendre donc je vais continuer à creuser de ce côté là.
1 - nom : var1, valeur : 258
2 - nom : var2, valeur : Coucou
Mais en arduino, c'est impossible, car une fois compilé, le code ne contient que des adresses mémoires des variables, mais plus les noms que l'on déclare...
je voudrais pouvoir trouver rapidement la structure ou Nom = "IP" sans avoir à faire à chaque fois une boucle en vérifiant si CONFIG*.Nom = "IP"* Ce n'est peut être pas réalisable non plus. Merci.
Chacks86:
je voudrais pouvoir trouver rapidement la structure ou Nom = "IP" sans avoir à faire à chaque fois une boucle en vérifiant si CONFIG*.Nom = "IP"* Ce n'est peut être pas réalisable non plus. [/quote] Yop yop, Si j'ai bien compris A part d'un emplacement connu sur ta carte sd ou dans un tableau impossible de trouver une valeur sans recherche, donc minimum boucle ... :~ En fait il faudrait savoir si tes valeurs sont connues et constantes ou dynamique ? Dans ce premier cas il suffit de te repérer selon la position de tes valeurs dans le fichier ou tableau par exemple, sinon une méthode de parsing (recherche structurée) est obligatoire comme l'a fait Super_Cinci. A quel moment tu veux rechercher ses valeurs, 1 fois au début ou tout au long de ton programme ?
à la vue de vos réponses, je vais rester sur une boucle pour la recherche dans les structures, par contre je vais creuser l'idée d'utiliser les bytes plutôt que les chaines.
Pour les structures, la taille peut changer en fonction du nombre de données lues dans le fichier sur carte SD.