Bonjour à tous!
Je viens vers vous, car je voudrais réaliser une création multiple de variable avec une valeur différente à chaque fois.
Genre :
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println("Setup fait !");
Serial.println();
}
void loop() {
for (int i=0; i<12; i++){
int x= random(999);
int a.i;
a.i = x;
}
Serial.print("a");
Serial.print(i);
Serial.print(" = ");
Serial.print(a.i);
delay(1000);
}
En fait j'attend un retour comme suit :
a0 = x;
a1 = x;
a2 = x;
...
a12 = x.
Je ne sais pas trop si cela peut se faire!
Auriez-vous des infos?
Merci d'avance à tous.
j
Heu ...
Je pratique le C depuis trente mais je n'ai jamais vu ça.
Tu viens certainement d'un autre monde.
void loop() {
int a[12];
for (int i=0; i<12; i++){
a[i] = random(999);
Serial.print("a[");
Serial.print(i);
Serial.print("]");
Serial.print(" = ");
Serial.println(a[i]);
}
delay(1000);
}
Merci hbachetti!
Non pas d'un autre monde, mais de celui ou nos meilleur ordinateur étaient avec des écrans monochrome, et les disques étaient souples et de 5.25"!
J'apprends sur le tas avec des connaissance informatique vielles de plus de 30 ans.
Je te remercie de ton bout de code, je tournait autour sans y arriver.
Bon je cherche un peut par moi-même, tout de même, car je veux aussi comprendre ET apprendre !
Donc, j'en suis là :
#include <EmonLib.h>
EnergyMonitor ct[12];
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println("Setup fait !");
Serial.println();
}
void loop() {
for (int i=0; i<12; i++){
ct[i].voltage(0, 268.97, 1.7);
ct[i].current(1, 90.9);
ct[i].calcVI(20,2000);
char a[12];
char r[9];
dtostrf(ct[i].realPower / 100, 5, 2, r);
a[i] = r;
Serial.print("a[");
Serial.print(i);
Serial.print("]= ");
Serial.print(a[i]);
Serial.print(" alors que r vaut : ");
Serial.println(r);
}
Serial.println();
}
Ce qui me donne comme résultat :
J'apprends sur le tas avec des connaissance informatique vielles de plus de 30 ans.
On doit avoir à peu près le même âge alors. 
Je vais supposer que tu veux stocker 12 valeurs de r dans un tableau a.
Or a est une simple chaîne de caractères, donc un tableau de caractères.
Il te faudrait plutôt un tableau de chaînes de caractères.
D'ailleurs le compilateur produit ceci :
sketch_feb25a:20: error: invalid conversion from 'char*' to 'char' [-fpermissive]
a = r;
- ^*
Tu affectes r (une chaîne) à a (un caractère)
Tu dois écrire :
*_ <em>* char a[12][9]; char r[9]; dtostrf(ct[i].realPower / 100, 5, 2, r); strcpy(a[i], r);*</em> _*
Tu remarqueras qu'en C on n'affecte pas directement une chaîne à une autre.
On fait une copie avec strcpy.
La variable a sera de préférence statique si on veut la réutiliser ensuite, et non pas volatile comme actuellement.
La variable r est inutile. Utiliser de préférence a lors de l'appel à dtostrf.
Remplacer également 12 par une définition claire, pour pouvoir changer sa valeur facilement.
Voilà ce que je propose :
```
*#define COUNT 12
void loop() {
static char a[COUNT][9];
for (int i=0; i<COUNT; i++){
ct[i].voltage(0, 268.97, 1.7);
ct[i].current(1, 90.9);
ct[i].calcVI(20,2000);
dtostrf(ct[i].realPower / 100, 5, 2, a[i]);
Serial.print("a[");
Serial.print(i);
Serial.print("]= ");
Serial.println(a[i]);
}
Serial.println();
}
_```
Avant d'aller plus loin, il serait préférable de consacrer un peu de temps à ceci :
https://openclassrooms.com/courses/apprenez-a-programmer-en-c*_
_@+_
Merci Hbachetti!
je me sers déjà d'Openclassrooms, mais je démarre de loin!
j'essaie ton code et te redis!