Go Down

Topic: Amusant (mais quel intérêt ?) (Read 197 times) previous topic - next topic

lesept

Je viens de tester ça : ça marche comme attendu, mais est-ce que ça a un intérêt ?

Code: [Select]
int i = 0;

void setup() {
  Serial.begin(115200);
  loop();
  ++i;
}

void loop() {
  if (i == 0) {
    Serial.println("Appel du setup !");
    return;
  } else
    Serial.println("Loop normale...");
  while (1);
}

Output:
Quote
14:44:41.012 -> Appel du setup !
14:44:41.012 -> Loop normale...
Je me suis dit que lorsqu'on met un ESP en deep sleep, on n'utilise pas la loop. Mais en faisant ça, on peut l'utiliser, ce qui est plus confortable pour les programmeurs qui ont l'habitude des codes standard (setup + loop).
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

J-M-L

#1
Mar 17, 2020, 02:44 pm Last Edit: Mar 17, 2020, 02:44 pm by J-M-L
loop() et setup() sont des fonctions comme les autres donc normal que ça fonctionne. 

Au lieu d'un int, prenez un booléen et on peut embarquer cela dans la loop()
Code: [Select]
void setup()
{
  Serial.begin(115200);
  loop(); // pas obligé, auto-détection
}

void loop()
{
  static bool premiereFois = true;
  if (premiereFois) {
    Serial.println("Premier appel (du setup) !");
    premiereFois = false;
  }

  Serial.println("Loop normale...");
  delay(1000);
}



je ne comprends pas bien votre point sur le deep sleep. au réveil c'est comme un boot, donc on passera pas le setup() puis la loop() tournera, donc s'il y a des choses à ne faire qu'une seule fois, que vous soyez en réveil de sleep() ou pas, il faut le coder. avec l'approche ci dessus, pas la peine d'appeler la loop() depuis le setup, elle auto-détecte si c'est la première fois qu'elle est appelée ou non


Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

lesept

Le static ne survivra pas au deep sleep à mon avis. Je parle de l'esp32, c'est vrai que je ne l'ai pas précisé.

Dans les tutos que j'ai vus qui utilisent le deep sleep sur ESP32, le setup est exécuté et se termine par la mise en sommeil. La loop est laissée vide, ce qui est perturbant la première fois.

J'ai eu cette idée mais elle est plutôt farfelue, j'en conviens avec du recul...
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

J-M-L

Le static ne survivra pas au deep sleep à mon avis. Je parle de l'esp32, c'est vrai que je ne l'ai pas précisé.
oui comme votre entier :)

Quote
Dans les tutos que j'ai vus qui utilisent le deep sleep sur ESP32, le setup est exécuté et se termine par la mise en sommeil.
oui parce que c'est des exemples :)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

lesept

C'est vrai, il faut ajouter un attribut lors de la définition qui le placera dans la RTC RAM
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up