Rebonjour,
Merci !
Voici le code modifié :
...
// Lire l'encodeur 5.
// Lecture de 3 octets (byte) depuis l'esclave Tiny #1.
Wire.requestFrom (int (ADRESSE_TINY_1), 3);
Serial.print ("* Wire.available () = ");
Serial.print (Wire.available ());
LCD_2.setCursor (19, 2);
LCD_2.print (Wire.available ());
if (Wire.available () > 2)
{
// Recoit la valeur indiquant le nombre de pas fait par l'encodeur depuis la
// dernière demande de l'Arduino maître de la communication i2c.
Encodeur_5_NombreDePas.Octet [0] = Wire.read ();
Encodeur_5_NombreDePas.Octet [1] = Wire.read ();
// Réception de l'octet (byte) comme caractère.
// Recoit la valeur indiquant l'état pressé ou non d'un bouton.
Encodeur_5_BoutonEtat = Wire.read ();
// Écriture dans le moniteur série de l'IDE d'Arduino des valeurs lues.
Serial.print (", TempsActuele = ");
Serial.print (TempsActuele);
Serial.print (", Encodeur_5_BoutonEtat = ");
Serial.print (Encodeur_5_BoutonEtat);
Serial.print (", Encodeur_5_NombreDePas.EntierSigne = ");
Serial.print (Encodeur_5_NombreDePas.EntierSigne);
Serial.println ();
...
Et la sortie sur Mega (avec manipulation de l'encodeur et son bouton, les résultats restent identiques) :
- MegaNano01xEncoM *
- Broche pour initialiser la broche RESET des CI Slave activer ! *
- Broche des boutons pour selection des radios NAV, COM et ADF activer ! *
- Broche du (((Buzzer))) activer ! *
- Broche du capteur infrarouge de telecommande activer ! *
- Broche de la DEL de la carte Arduino et Ethernet activer ! *
- Broche des encodeurs et poussoir activer ! *
- Broche du bouton pour Entrer/Sortir les roues activer ! *
- Broche des interrupteurs activer ! *
- Communication Ethernet UDP activer ! *
- Broche pour la communication I2C activer ! *
- Debut du programme principal boucle >>> loop () <<< *
- Wire.available () = 3, TempsActuele = 3271, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 3340, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 3408, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 3477, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 3546, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 3614, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 3683, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 3751, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 3820, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 3889, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 3957, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 4026, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 4094, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 4163, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 4232, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 4300, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
- Wire.available () = 3, TempsActuele = 4369, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 4438, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 4506, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 4575, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 4643, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 4712, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -255
- Wire.available () = 3, TempsActuele = 4781, Encodeur_5_BoutonEtat = 255, Encodeur_5_NombreDePas.EntierSigne = -256
...
Donc, je reçois bien 3 octets !
Je vais dorénavant utiliser le 3e paramètre de la fonction « Wire.requestFrom », même si cela ne change pas les résultats :
...
// Lecture de 3 octets (byte) depuis l'esclave Tiny #1.
// L'adresse i2c = ADRESSE_TINY_1, le nombre d'octets = 3 et oui (true) pour
// l'envoi d'un message arrêt à la fin de l'envoi des octets.
Wire.requestFrom (int (ADRESSE_TINY_1), 3, true);
...
J'apprécie vraiment votre aide !
L'ami René