Bonjour à tous
Je ne viens pas aujourd'hui demander de l'aide mais décrire le problème que j'ai eu et comment je l'ai résolu car cela pourra peut-être aider:
Mon projet très classique: un ESP8266 se connecte sur le Net pour récupérer heure et date. Plus un capteur d'environnement BME280 pour lire température, humidité et pression. L'affichage est assurée par une matrice 4x8x8(MD_MAX72xx). Un récepteur IR permet la commande du système grâce à une télécommande de téléviseur. qui permet de sélectionner les différents affichages.
Je programme tout cela avec Visual Studio Code et cela fonctionnement parfaitement.
Le problème: Après le développement sur mon PC, je passe à la mise en boîtier avec une alimentation autonome; et là rien ne va plus pour l'afficheur: un ou deux modules ne se mettent pas en route. Par contre, si j'appuie sur le reset, cela redevient normal. Cette situation n'est pas viable.
Le setup:
Code arduino : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
void setup(){
  matrice.begin();
  matrice.setIntensity(0);
  matrice.displayClear();
  matrice.addChar('$',dg);    //remplacement du caratère '$' par '°'
  affMsg("Bonjour"); 
  Wire.begin();
  sens.begin(BME280);
  irRcv.enableIRIn();         //démarre le récepteur IR 
  recupDateHeure();         //connexion au WiFi
  cpt=millis();
}
L'origine du problème:
Je pense que l'origine du problème est le temps d'établissement de l'alimentation; avec suffisamment de tension pour démarrer, le programme fonce à travers le setup qui tente de démarrer l'afficheur. Mais lui n'en a pas assez et déraille un peu.
Ma solution: Retarder le lancement de l'afficheur.
Code arduino : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
void setup(){
  Wire.begin();
  sens.begin(BME280);
  irRcv.enableIRIn();         //démarre le récepteur IR
  delay(1000);
  matrice.begin();
  matrice.setIntensity(0);
  matrice.displayClear();
  matrice.addChar('$',dg);    //remplacement du caratère '$' par '°'
  affMsg("Bonjour"); 
  recupDateHeure();
  cpt=millis();
}

Je ne sais pas s'il y aurait une solution plus élégante?
Si vous avez un commentaire là-dessus.