J’utilise “DOIT ESP32 DEVKIT V1” dans l’IDE mais ce processeur (module) est récent pour moi 1ère utilisation l’antenne dépasse du circuit. Ceux que j’ai utilisé jusqu’ici rien ne dépassait.
Je viens d’essayer et je suis surpris, ça fonctionne.
Je programme depuis un nombre d’année considérable et j’ai quand même testé pourtant sûr de moi. Que peut-il se passer alors que tout mon programme fonctionne mes pages web aussi il n’y a que le port série avec l’ide qui ne fonctionne pas je suis perplexe.
Voici le début du setup:
void setup() {
Serial.begin(115200);
Wait(100); // fonction qui remplace delay dans tous mes programmes depuis près de 10 ans
Serial.println();
Serial.println(F("*** Start ***"));
Comme c’est cela qui configure la liaison je ne vois pas ce qu’il y a de mauvais!
Ce serait peut-être plus simple en mettant le code complet.
Si après le Serial.println(F("*** Start ***")); tu as un appel de fonction qui fait planter le code cela pourrait expliquer que tu ne vois que les 2 astérisques.
Constat : Après une programmation tu ne vois rien.
Que se passe-t-il si tu fais un reset ? Vois-tu les affichages ?
Que se passe-t-il si au lieu d'utiliser le terminal de l'IDE, tu utilises un simple terminal série autonome comme minicom ou cutecom ?
Toujours pareil : tu connectes, tu règles le terminal, puis tu fais un Reset et après le Reset vois-tu les affichages escomptés ?
Ma théorie :
Pour permettre la programmation, l'IDE libère le port USB en déconnectant le terminal série.
Après la programmation, le micro redémarre immédiatement, trop vite pour l'IDE ait le temps de relancer le moniteur série.
Si on fait un reset alors que le terminal série est prêt à recevoir, cela fonctionne parfaitement.
Je ne sais pas ce que fait le wait(100), mais avec un délai il faut bien 2 à 3 secondes.
Ou faire un reset manuel.
Le Wait(100) est en millisecondes et c’est une fonction que j’ai écris il y a fort longtemps et qui n’a jamais été bloquante. C’est juste pour éviter le “delay” qui lui bloque le programme pendant un temps et qui interdit les interruptions.
void Wait(int tmp) {
unsigned long tempo = millis();
while ((millis() - tempo) < tmp) {
yield();
}
}
Le programme fonctionne correctement, le serveur web envoi bien les pages et accepte les enregistrement depuis le web, tous les fichiers du SPIFFS sont présents (j’ai une page web qui le montre) l’interrogation du serveur UDP est effectué (mise à l’heure) en fait tout va bien hormis la diffusion de texte vers le port série Arduino ide.
J’ai peut-être une piste, mes serial.print passe par une fonction qui permet d’afficher sur un écran oled et en fait le texte est sensé s’afficher sur la console série Arduino en même temps.
Mais comme je suis en test, le module ESP32 est seul et je pense que l’objet écran n’est pas connecté, je me fais ejecter de la fonction avant d’arriver au serial.print.
Bon encore quelques test du programme et je le mettrai sur le circuit imprimé et nous verrons bien. Je vous tiens au courant et encore un gros merci à tous.
C'est un SSD1306 en interface I2C je suppose?
S'il est absent le programme doit se planter car l'I2C ne doit pas voir d'acquittements à ses tentatives d'accès.
En effet c’est ce que je pense, de plus j’ai l’impression que la librairie que j’ai pris ne convient pas, je vient de faire un test (exemple) avec juste l’écran et je n’ai rien.