Bonour,
Je cherche à communiquer entre 2 arduino: Master 'Arduino mega 2560', esclave 'Arduino uno R3'
Pour ça j'utiliser le bus i2c.
Je parcoure sans sucés les moteur de recherche pour trouver des infos.
Je me suis également inspiré d'exemples donnés avec la bibliothèque 'wire'.
Pour la communication master vers esclave pas de problèmes.
Pour la communication esclave vers maitre j'envoie '401', je reçois 'ÿÿ'.
Pouvez vou m'aider à y voir plus clair?
Le code du master:
int Ecoute()
{
Wire.requestFrom(10,3); // recois 3 char de l’esclave #10
Serial.print("wire request? ");
Serial.println(Wire.requestFrom(10,3));
Serial.print("Ecoute: ");
while (Wire.available())
{
char c = Wire.read(); // receive un char
Serial.print(c);
}
//Serial.print(c);
delay(500);
Le code de l'esclave:
Transfert="401";
char Transfert2 [Transfert.length() + 1]; // tableau de char de la taille du String Transfert+1 (caractère de fin de ligne)
Transfert.toCharArray(Transfert2, Transfert.length() + 1); // récupère Transfer2 dans le tableau de char
Serial.print("Transfert: ");
Serial.println(Transfert2);
Wire.write(Transfert2); // demande l'heure au maitre(code 401)
delay(100);
Je n'arrive pas à déterminer ce que tu as déjà fait.
Moi, pour vérifier que j'ai bien compris ce qu'il faut faire je ferai l'exemple suivant :
Sur l'esclave D10 reliée avec D13
Envoi d'un ordre pour allumer D13.
Large pause pour éviter des effets secondaires de temps de lecture et d'écriture (on ne s'embête pas en phase de mise au point -> ceinture + bretelles)
Envoi d'un ordre pour lire D10
Large pause
Est ce que D10 = D13 ?
Tant que cela ne fonctionne pas inutile d'aller plus loin.
J'ai trouvé, en fait sur l'esclave je transmettais le message sans attendre la demande du maitre 'Wire.onRequest'.
J'ai un nouveau problème:
Pour les demande entre les 2 arduino j'ai crée des codes à 3 chiffres ex'401' qui sont écrit dans un tableau de char. Je ne parviens pas à afficher l’intégralité sur le moniteur série. Je peu afficher séparément les valeur du code mais pas l’intégralité:
Serial.println(reception[1]); //affiche '4'
Serial.println(reception[2]); //affiche '0'
Serial.println(reception[3]); //affiche '1'
Serial.println(reception); //affiche ' '
Je vous donne mon code:
//Ecoute
int Ecoute()
{
Wire.requestFrom(10, 3); // recois 3 char de l'eslave #10
l = Wire.available();
char reception[3];
Serial.print("Ecoute: ");
while (Wire.available())
{
char c = Wire.read(); // receive un char
m = Wire.available();
m = l - m;
reception[m] = c;
Serial.println(reception[m]);
}
Serial.println(reception);
delay(500);
}