Bonjour à toutes et à tous,
Je souhaite faire un échange entre deux Pro Mini via SoftwareSerial, mais j'ai des problèmes.
Voici un sketch qui fonctionne. Encore que ...
Sketch du Pro Mini demandeur (qui est connecté à mon PC) :
#include <SoftwareSerial.h>
SoftwareSerial softSerial(5, 6); // RX, TX
String strVI;
void setup() {
Serial.begin(9600);
softSerial.begin(9600);
}
void loop() {
if(Serial.available() && Serial.read() == 'M') { // Si je tape ça au clavier
softSerial.println("MES"); // j'envoie ça à un autre pro mini
Serial.println("Envoyé");
}
if (softSerial.available()) { // si l'autre pro mini répond
strVI = softSerial.readStringUntil('#'); // je lis ce qu'il me retourne
Serial.println(strVI); // j'affiche ce que j' ai reçu
Serial.println("Reçu");
}
}
et le sketch du Pro Mini répondeur (qui est alimenté par une source de 5 v indépendante) :
#include <SoftwareSerial.h>
SoftwareSerial softSerial(5, 6); // RX, TX
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
softSerial.begin(9600);
}
void loop() {
String str;
if(softSerial.available()) {
str = softSerial.readString();
// if (str == "MES") {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // simulation du temps pris par ce que je dois faire
softSerial.println(str);
// }
}
digitalWrite(LED_BUILTIN, LOW);
}
J'obtiens bien une réponse (la LED du Pro Mini répondeur s'allume) :
09:28:42.925 -> Envoyé
09:28:45.957 -> MES
09:28:45.957 ->
09:28:45.957 ->
09:28:45.957 -> Reçu
Le String envoyé "MES" est bien reçu et bien retourné. Encore que je ne comprends pas les deux lignes vides de la réponse.
Maintenant, puisque le String "MES" est bien reçu par le Pro Mini répondeur, je modifie son sketch pour faire un test sur cette valeur :
void loop() {
String str;
if(softSerial.available()) {
str = softSerial.readString();
if (str == "MES") { // Test sur cette valeur quio est reconnue
digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // simulation du temps pris par ce que je dois faire
softSerial.println(str);
}
}
digitalWrite(LED_BUILTIN, LOW);
}
Et bien ça ne fonctionne plus. Le Pro Mini répondeur n'allume plus sa LED et je n'ai pas de réponse.
Puisque "MES" est bien reconnu, pourquoi n'est-il pas accepté ?
Est-ce un problème de syntaxe sur le test ?
...
Merci de vos avis.
Pierre.