j'ai une faible connaissance sur l'embarqué.
j'utilise l'arduino mega avec un esp intégré.
j'essaye d'envoyer une commande de l'ESP vers Arduino pour commander un relai.
j'ai fait un code , l'arduino mega reçoit les donnés "11" et "22" mais en temps aléatoire non pas chaque 1 senconde
le code dans l arduino
int u = 22;
char c = '22';
char d ='11';
void setup() {
pinMode(u, OUTPUT);
digitalWrite (u, HIGH);
Serial.begin(115200);
Serial3.begin(115200);
delay(2000);
}
void loop() {
if (Serial3.available()) Serial.write(Serial3.read());
//if (Serial.available()) Serial.write(Serial.read());
if (Serial3.read()== (c)) { digitalWrite (u, LOW);}
if (Serial3.read()== (d)) { digitalWrite (u, HIGH);}
//if (Serial3.read()=="m") Serial.print(Serial3.read()+1);
}
Pourquoi envoyer deux octets ? Un seul suffit et ne poserait pas ces problèmes.
Un char ne contient qu'un seul caractère :
devient
char c = '2';
char d ='1';
Ici :
Tu lis le caractère qui est reçu : tu l'enlèves donc du buffer. Lorsque tu fais ensuite if (Serial3.read()== (c)) { digitalWrite (u, LOW);}
Il n'est plus dans le buffer et tu compares avec... on ne sait trop quoi.
Essaye plutôt :
void loop() {
char com;
if (Serial3.available()) com = Serial3.read();
if (com== c) { digitalWrite (u, LOW);}
if (com== d) { digitalWrite (u, HIGH);}
}
dans l'étape suivante j'ai essayé d'envoyer de esp à firebase : (millis()/1000) avec un delay(100), le problème c'est que le ESP redémarre à 0 après un certain temps parfois après 5 minutes , parfois après une heure
j'ai cherché sue le net ce problème, il dit c'est un problème du buffer, mais je n'ai pas trouvé une solution pour résoudre ce buffer.
j'ai essayé aussi d'envoyer le millis() vers l arduino et ça reste le meme problème.
je sais que je n'ai pas les bases de programmer mais j'essaye d'apprendre
Tu veux dire qu'il plante ? Tu dois avoir un message d'erreur dans la console : même s'il est incompréhensible, peux-tu le copier dans ta réponse (pas une image, du texte STP) ?
j'ai résolu le problème de plantage :
j'ai utilisé la librairie esp8266 version 2.5.2
et j'ai choisit la carte wemos D1 R1
j'ai essayé un sketch d'envois ( millis() ) envoyé chaque seconde à firebase. et ça marche très bien sans interruption il y'a 37 heures.
aussi j'ai fait une bonne astuce trouvé sur github pour s'échapper de la mise à jour FingerPrints de Firebase.