Communication filaire entre 2 arduino

Bonjour tout le monde,
j esseye depuis hier de connecter deux arduino ensemble j ai donc regardé pas mal de forum et de video youtube mais je n arrive pas a transmettre mes donnees correctements (TR et RX et la masse sont reliés correctement au deux cartes).
Mon but pourtant est tout simple: avoir une variable delay qui peut changer dans la carte 1 et l'envoyer à la carte 2 (pour faire clignoter une led par exemple). Voici mon code (tres simple) :


//Emission CARTE1
void setup() {
  Serial.begin(9600);

}

void loop() {
  Serial.println(54);
  delay(100);
  Serial.println(545);
  delay(100);
  Serial.println(655);
    delay(100);
  Serial.println(1054);
    delay(100);
  Serial.println(6563);  
}
//reception CARTE2
void setup() {
  Serial.begin(9600);

}

void loop() {
if(Serial.available()){
  Serial.println(Serial.read());
}
}

mais je recois les lignes suivantes:

49
48
53
52
13
10
54
53
54
51
13
10
53
52
13
10
...

Voila je suis perdu, c'est pas du tout les memes valeurs que à l'envoi.
Un petit peu d'aide serait le bienvenu merci d'avance !

vous recevez bien ce que vous envoyez (ce sont les codes ASCII de vos caractères)

:wink:

Serial.println(1054);
49 --> '1'
48 --> '0'
53 --> '5'
52 --> '4'
13 --> '\r' (retour chariot)
10 --> '\n' (new line)

Serial.println(6563);
54 --> '6'
53 --> '5'
54 --> '6'
51 --> '3'
13 --> '\r' (retour chariot)
10 --> '\n' (new line)

etc

si vous faisiez

void loop() {
  if(Serial.available()){
    Serial.write((char) Serial.read());
  }
}

vous verriez vos caractères

Si vous voulez étudiez un peu plus le port série vous pouvez jeter un oeil à mon petit tuto sur le sujet

1 Like

ah ! Merci pour votre réponse rapide! Je vais decoder ca tout de suite.
Edit: ca marche nickel merci beaucoup :grinning_face_with_smiling_eyes:

BON :unamused:,
je n'arrive pas a prendre la valeur puis de la mettre dans une variable que je pourrais utiliser, j ai esseyé de suivre votre tuto mais je suis vraiment un noob ^^' pouvez vous m'aider a sortir de ce petrin ? je tourne en rond... (desolé d'avance si ca pique les yeux):

char donnee = 0;
int LedH = 3;


void setup() {
  Serial.begin(9600);
  pinMode(LedH, OUTPUT);
}

void loop() {
  while(Serial.available()!=0) {
    delay(500);
    Serial.write((char)Serial.read());
  }
  donnee = Serial.read();
  Serial.print("\n donnee = ");
  Serial.println(donnee);
}

Une fois que vous faites l’impression la donnée n’est plus sur le port série… donc le prochain read ne va pas lire la même chose…vous avez une fonction dans le tuto qui lit jusqu’à la fin de ligne, ça semble correspondre au besoin

1 Like