merci beaucoup!!!
ca marche
code la mega:
unsigned long TempsMEGA2NANO;
String RecupNANO;
String EnvoiNANO;
void setup() {
// initialize both serial ports:
Serial.begin(1000000);
Serial1.begin(1000000);
TempsMEGA2NANO = millis();
EnvoiNANO = "comP2 R1_GPIO\n";
}
void loop() {
//delay(1000);
if (millis() - TempsMEGA2NANO > 99) {
TempsMEGA2NANO = millis();
Serial.println("je suis dans le millis");
Serial1.print(EnvoiNANO);
Serial.print("voici le RecupNANO: ");
Serial.println(RecupNANO);
Serial.print("voici le millis(): ");
Serial.println(TempsMEGA2NANO);
}
// read from port 1:
if (Serial1.available()) {
RecupNANO = Serial1.readStringUntil('\n');
}
// read from port 0:
if (Serial.available()) {
EnvoiNANO = Serial.readStringUntil('\n'); //oui oui c'est un faux RecupNANO
}
}
code de la nano:
int valeurAleatoire = 1000;
unsigned long currentTime = 0;
unsigned long previousTime = 0;
bool ledState = LOW;
int result1 = 0;
int result2 = 0;
int length = 0;
String toto ;
String R1_AX12[24]; // tableau pour stocker les élément
int Nb_max_variable_trame = 30;
void setup() {
Serial.begin(1000000); // initialise la communication série à 9600 bauds
pinMode(LED_BUILTIN, OUTPUT);
R1_AX12[0] = random(0, 1027);
R1_AX12[1] = random(0, 2);
R1_AX12[2] = random(0, 1027);
R1_AX12[3] = random(0, 2);
R1_AX12[4] = random(0, 1027);
R1_AX12[5] = random(0, 2);
R1_AX12[6] = random(0, 1027);
R1_AX12[7] = random(0, 2);
R1_AX12[8] = random(0, 1027);
R1_AX12[9] = random(0, 2);
R1_AX12[10] = random(0, 1027);
R1_AX12[11] = random(0, 2);
R1_AX12[12] = random(0, 1027);
R1_AX12[13] = random(0, 2);
R1_AX12[14] = random(0, 1027);
R1_AX12[15] = random(0, 2);
R1_AX12[16] = random(0, 1027);
R1_AX12[17] = random(0, 2);
R1_AX12[18] = random(0, 1027);
R1_AX12[19] = random(0, 2);
R1_AX12[20] = random(0, 1027);
R1_AX12[21] = random(0, 2);
R1_AX12[22] = random(0, 1027);
R1_AX12[23] = random(0, 256);
R1_AX12[24] = random(0, 1027);
R1_AX12[25] = random(0, 256);
}
void loop() {
String R1_GPIO[10]; // tableau pour stocker les élément
R1_GPIO[0] = random(0, 2);
R1_GPIO[1] = random(0, 2);
R1_GPIO[2] = random(0, 2);
R1_GPIO[3] = random(0, 2);
R1_GPIO[4] = random(0, 2);
R1_GPIO[5] = random(0, 2);
R1_GPIO[6] = random(0, 2);
R1_GPIO[7] = random(0, 2);
R1_GPIO[8] = random(0, 2);
R1_GPIO[9] = random(0, 2);
String ODO_ROBOT_1[3]; // tableau pour stocker les élément
ODO_ROBOT_1[0] = random(0, 2001);
ODO_ROBOT_1[1] = random(0, 3001);
ODO_ROBOT_1[2] = random(0, 361);
if (Serial.available() > 0) { // vérifie si des données sont disponibles sur la liaison série
//Serial.println(' ');
//readStringUntil
String message = Serial.readStringUntil('\n'); // lit la chaîne de caractères sur la liaison série
// Serial.println("Message reçu : " + message); // affiche le message reçu dans le moniteur série
// sépare la chaîne de caractères en utilisant des espaces comme délimiteurs
String elements[Nb_max_variable_trame ]; // tableau pour stocker les éléments
int nbElements = 0; // nombre d'éléments trouvés
int posDebut = 0; // position du début du prochain élément
int posEspace = message.indexOf(' '); // position du premier espace
while (posEspace != -1 && nbElements < Nb_max_variable_trame) { // tant qu'il reste des espaces et qu'on n'a pas atteint la taille maximale du tableau
elements[nbElements] = message.substring(posDebut, posEspace); // extrait l'élément
nbElements++; // incrémente le nombre d'éléments trouvés
posDebut = posEspace + 1; // position du début du prochain élément
posEspace = message.indexOf(' ', posDebut); // position du prochain espace
//Serial.print("elements[nbElements]:");
//Serial.println(elements[nbElements]);
}
// ajoute le dernier élément
if (nbElements < Nb_max_variable_trame) {
elements[nbElements] = message.substring(posDebut);
nbElements++;
}
// vérifie si le premier élément est "comP2" et si le deuxième élément est "R1_GPIO"
// Serial.print("elements[0]:");
// Serial.println(elements[0]);
// Serial.print("elements[1]:");
// Serial.println(elements[1]);
// Serial.print("elements[2]:");
// Serial.println(elements[2]);
if (elements[0] == "comP2" && elements[1] == "R1_GPIO") {
// Serial.print("comP2 R1_GPIO: "); // affiche la valeur aléatoire dans le moniteur série
for ( int i = 0; i < 10; i++) {
Serial.print(R1_GPIO[i]);
}
Serial.println("");
}
if (elements[0] == "comP2" && elements[1] == "R1_ODO") {
Serial.print("comP2 R1_ODO "); // affiche la valeur aléatoire dans le moniteur série
for ( int i = 0; i < 3; i++) {
Serial.print(ODO_ROBOT_1[i]);
Serial.print(' ');
}
}
if (elements[0] == "comP2" && elements[1] == "R1_AX12") {
Serial.print("comP2 R1_AX12 "); // affiche la valeur aléatoire dans le moniteur série
for ( int i = 0; i < 25; i++) {
R1_AX12[i] = elements[i + 2];
// Serial.print("i: ");
//Serial.println( i);
Serial.print(R1_AX12[i]);
Serial.print(' ');
}
}
}
currentTime = millis();
if ((currentTime - previousTime) > valeurAleatoire) {
previousTime = currentTime;
ledState = !ledState;
digitalWrite(13, !ledState);
}
}
le résultat:

je penses pas être le seul a avoir eu ce genre de mesaventure. dans les exemples Arduino ca serait bien d'avoir aussi avec plusieurs cartes.
Bonne journée