Bonjour, est ce que c'est quelques lignes vous semblent correct? C'est pour un ESP32.
Je voudrais inclure la lecture de cette sonde à un autre programme existant mais j'ai lu que la fonction Delay était pas une bonne idée.
Sinon comme ça ne fait rien de la valeur lue, il y a de forte chance que le compilateur vire le code….
Le delay dans l’absolu n’est pas génial mais si vous voulez faire du polling toutes les 10 secondes et rien d’autre entre temps, pourquoi pas, c’est pas plus mal sur esp32 car ça réduit la consommation pendant l’attente
Quel autre programme? (mettre au moins les #include)
Vous feriez bien d'afficher, ne serait ce pour vous rassurer, les valeurs lues
void setup() {
ds.begin(); // sonde activée
Serial.begin(115200); // liaison série activée pour test
}
void loop() {
ds.requestTemperatures();
int t = ds.getTempCByIndex(0) ;
Serial.println(t); // affichage minimaliste
delay(10000); // on verra -cf loopwithoutdelay exemple à le supprimer plus tard
}
Là, la console serie vous balancera des chiffres toutes les 10 secondes (en mettant la sonde près (pas dedans!) d'une tasse de thé chaude ou d'un verre d'eau glacée, vous saurez si elle est bien branchée).
Comme l'indique @J-M-L ce n'est pas que c'est une mauvaise idée.
le problème est plutôt que lorsque l'on a ensuite besoin comme toi, d'intégrer son code de test, dans un autre programme, tu va bousiller les timings que tu aurais pu faire dans l'autre programme, voir te retrouver avec un comportement chaotique.
Si tu sais ce que tu fais avec le delais, par contre ce n'est pas un soucis.
L’inconvénient de ce code sur esp32 c’est que l’on boucle à fond en lisant millis et ne faisant rien. Donc ça consomme du courant. Sur esp32 quand on appelle delay ça fait un dormir le processeur pendant le temps voulu (je simplifie) et donc on consomme moins. C’est pour cela que delay dans ce cas est mieux que l’usage de millis pour limiter le réchauffement planétaire et le gaspillage d’énergie… sur AVR ça ne change rien.
Normalement, les éventuels massages d'horreur du compilateur permettent d'avoir grâce à vous un joli code, peut être pas du premier coût, mais très vite...
(j'aurais mis aussi Read_Temps en long -ça ne mange pas de pain sur un ESP- pour gèrer de ... longs délais -minute-)
Merci à tous pour l'aide et désolé pour le peu de détail.
Alors la fonction serial je l'est retiré volontairement car c'est sur une page web que devra s'afficher la valeur, là c'était juste pour avoir votre avis.
@coloneldeguerlasse voici les #include de l'autre programme. C'est un routeur d'énergie pour surplus photovoltaïque auquel j'aimerais rajouté cette sonde de température.
Si vous voulez tout le code pas de problème, il est open source.
Oui et non, du coup la réponse est qu'il ne faudra pas faire une attente active.
suivant ton code, il y a plusieurs solution possible.
Tu ne pense pas qu'il serait plus efficace de diminuer le delay à quelques millisecondes dans la loop et gérer l'acquisition comme le propose @pandaroux007
Non, pas si le code ne fait que cela. Au final vous voulez attendre 10 secondes, autant faire dormir votre ESP pendant 10s plutôt que de tester quelques dizaines de milliers de fois si les 10 secondes sont passées…
Justement @sanders29 ne veut pas faire que cela.
Du coup, il n'est pas question de faire 10000 fois le IF avec un délais de 1ms.
Mais plutôt moins de 1000 fois, avec un délais d'au moins 10ms, ce qui veut dire qu'en gros l'ESP dors 90% du temps, mais à une réaction de l'ordre de 10ms.