Bonjour,
je débute, j’ai commencer le tuto d’Eskimon et me pose des questions concernant l’emplois de la fonction millis(), delay() et les lourdeurs de calcul que cela pourraient engendrer.
En faites je prévois de faire un appareil qui resterait allumé toute la journée et ne déclencherait un évenement qu’à intervalle assez long (du genre 30min ou 3h), tout en ayant des boutons et interrupteur pour piloter d’autres trucs.
Du coup j’imaginais que dans la fonction loop des "if" viendrais vérifier l’état des boutons et interrupteurs tandis qu’un autre "if" vérifirait si le temps du déclenchement est atteins ou pas. Pour mesurer ce temps sans tout interrompre comme le fait delay() il pourrait y avoir une variable récupérant le temps en utilisant millis() pour effectuer un calcul avec (ça je vois comment faire ma question n’est pas là).
SAUF que j’ai lus au début du tuto de Eskimon que les calculs fait en 32bits sont "gros", un peu lourd. Hors pour un appareil qui fonctionne toute la journée j’aurrais besoin d’une variable de temps du type long, donc 32 bits.
Et là je me dit que faire et refaire en boucle un calcul en 32bits alors que l’appareil ne fait rien d’autres qu’attendre c’est peut’être idiot ?!
D’autand que je ne suis pas à la minute prés pour le déclenchement de l’événement.
Du coup je me demander s’il ne serait pas plus pertinent de rajouter un compteur (je pensais à une variable de type byte, donc juste 8bits) dans la fonction loop pour ne vérifier si le temps de déclenchement est atteints qu’une fois par minute (à peu prés) ?
ça pourrait ressembler à un truc comme ça dans la fonction loop :
- vérification des boutons et interrupteurs
- incrémentation du compteur(byte)
- vérification du compteur(byte), s’il vaut 250 (ou plus) on vérifie le temps (le gros calcul en 32bits avec millis et tout) et on remet le compteur(byte) à zero.
- et un delay(240) pour finir, car 250x240 = 60000ms donc 1 minute le "gros calcul" du temps ne serait fait qu’une fois par minute. Ce délais provoquerait un leger retard possible dans la réaction des boutons mais bon d’un quart de seconde au maximum, ça m’irait c’est pas une console de jeu !
Mon raisonnement est il bon ou pas ? Ou est ce que je m’embête pour rien ce "gros calcul" n’étant pas si lourd que ça ? Autre question que je me suis posé ..est ce que dans le détail la fonction delay n’utilise elle aussi des calculs avec des variables long en 32 bits ? De sorte que je n’esquiverait finalement rien du tout !?
Désolée si je n’ai pas était clair j’ai essayé de faire au mieux, ou si je n’ai pas poster au bon endroit .